Chcę utworzyć transmisję na żywo z (mojego okna) pulpitu linuksowego za pomocą bezpłatnego serwisu streamingowego, wykorzystując przechwycone wideo jako fałszywą kamerę internetową. Istnieje wiele narzędzi do tego w systemie Windows. ffmpeg pozwala mi przechwytywać dane wejściowe w określonym oknie, ale nie mogę znaleźć sposobu na przesłanie wideo do fałszywego urządzenia w stylu kamery internetowej używanego przez flash.
Czy ktoś może polecić metodę (lub oprogramowanie) do wykonania tego?
linux
ffmpeg
screencasts
virtual-webcam
bkconrad
źródło
źródło
Odpowiedzi:
Możesz zainstalować v4l2loopback . Jest to moduł jądra, który symuluje kamerę internetową. Załaduj:
Następnie musisz wysłać strumień wideo do urządzenia / dev / video0 za pomocą programu takiego jak ffmpeg. Aby przechwycić pulpit i przesłać go do / dev / video0 za pomocą ffmpeg, możesz użyć następującego wiersza poleceń:
Zmień wartość -r z 15 na coś innego, jeśli chcesz mieć inną częstotliwość klatek. Rozdzielczość jest wybierana w parametrze -s. Jeśli chcesz określić odsunięcie od lewego górnego rogu ekranu, podaj go w parametrze -i w postaci „-i: 0,0 + x, y”, gdzie x i y oznaczają odpowiednio przesunięcie w poziomie i pionie.
źródło
[x11grab @ 0x24013c0] Stream #0: not enough frames to estimate rate; consider increasing probesize
,[v4l2 @ 0x2409520] ioctl(VIDIOC_G_FMT): Invalid argument
iCould not write header for output file #0 (incorrect codec parameters ?): Invalid argument
Używaj v4l2loopback z mplayerem .
make
isu -c 'make install'
),su -c 'modprobe v4l2loopback'
,następnie zmień jeden wiersz w pliku
examples/yuv4mpeg_to_v4l2.c
folderu źródłowego v4l2loopback zdo
i zrób
make
w tym folderze.Następnie uruchom go z
examples
katalogu w następujący sposób:gdzie zastępujesz
movie.mp4
nazwą pliku wideo. I zamień/dev/video0
na urządzenie z pętlą zwrotną.MPlayer może odtwarzać dowolne strumienie internetowe, wszelkiego rodzaju pliki wideo, nawet ze standardowego wejścia! Właśnie przetestowałem go z plikiem z http://www.tagesschau.de, który jest niemieckim portalem z wiadomościami.
Zamiast $ TS możesz umieścić
-
(co oznacza standard). A przed mplayerem polecenie ffmpeg przekierowuje wyjście na standardowe wyjście. Więc coś takiego:Nie przetestowałem ostatniego, ponieważ nie powiedziałeś, jak wygląda twoje polecenie ffmpeg.
źródło
./yuv4mpeg_to_v4l2 < /dev/video0 &
prowadzi do./yuv4mpeg_to_v4l2: : missing YUV4MPEG2 header
. Jak zastąpić/tmp/pipe
przez/dev/video0
?Jakiej dystrybucji używasz? Odniosłem sukces z WebCamStudio pod Archem w połączeniu z internetowym „studiem” opartym na Livestream. Minęło trochę czasu, odkąd go użyłem.
http://www.ws4gl.org/
Co dokładnie próbujesz zrobić? ffmpeg skompilowany z x11grab może nagrywać pulpit. Odniosłem ograniczony sukces, przekazując to Ustream, ale znowu minęło trochę czasu i myślę, że to, co robiłem, już nie zadziała.
Jeśli chcesz po prostu przesyłać strumieniowo plik zamiast pulpitu (myślę, że kiedy mówisz „okno”, masz na myśli „VLC”), mogę skierować cię w dobrym kierunku, aby uzyskać pracę z Livestream (może Ustream). Niezdarnie zastanawiam się, jak to zrobić poprzez eksperymenty. To nie jest fantastyczne, ale działa z Livestream.
Justin.tv ma również skrypty, które mogą przesyłać strumieniowo z VLC do ich usług.
http://apiwiki.justin.tv/mediawiki/index.php/Linux_Broadcasting_API
źródło
Po pierwsze, look.in prawdopodobnie robi to, co chcesz bez żadnych problemów (nie jestem powiązany): http://appear.in/
Po drugie, możesz przesyłać strumieniowo do Twitcha lub innych usług za pomocą OBS, który niedawno dodał obsługę linuksa (!): Https://obsproject.com/
OBS rozwiązuje również znacznie trudniejszy problem z dźwiękiem i wejściami audio systemu multipleksowania podczas przechwytywania ekranu na Ubuntu (nie rozwiązany przez nic w
universe
repozytorium, które do tej pory znalazłem).Nie mam żadnych niesamowitych rozwiązań unix-y. Ale te działały dla mnie w prawdziwym świecie.
źródło