Linux'ta masaüstünü sahte web kamerası olarak kullanmak


47

Yakalanan videoyu sahte bir web kamerası olarak kullanarak ücretsiz bir akış sitesi kullanarak linux masaüstümün (bir pencerede) canlı akışını yapmak istiyorum. Pencerelerde bunun için birçok araç var. ffmpeg, belirli bir pencerede girişi yakalamama izin veriyor, ancak videoyu flaş tarafından kullanılabilen sahte bir web kamerası tarzı cihaza çıkarmanın bir yolunu bulamıyorum.

Herhangi biri bunu yapmak için bir yöntem (veya yazılım) önerebilir mi?


"Flash tarafından kullanılabilen sahte web kamerası tarzı cihaz" deyinceye kadar her şey tamamen doluydu.
Ignacio Vazquez-Abrams,

Neyi kastettiğinden emin değilim? "Web kamerası tarzı" cihazla, sahte / dev / videoN cihaz dosyası veya benzeri bir şey demek istedim. Bu, çekilen videonun flaş tarafından nasıl kullanılacağını varsayar.
bkconrad

Kesinlikle. Bu zor.
Ignacio Vazquez-Abrams,

Yanıtlar:


51

V4l2loopback'i yükleyebilirsiniz . Bir web kamerasını simüle eden bir çekirdek modülüdür. Şununla yükleyin:

modprobe v4l2loopback

O zaman ffmpeg gibi bir program kullanarak video akışını cihaza / dev / video0 'a göndermelisiniz. Masaüstünü yakalamak ve / dev / video0'a ffmpeg ile iletmek için aşağıdaki komut satırını kullanabilirsiniz:

ffmpeg -f x11grab -r 15 -s 1280x720 -i :0.0+0,0 -vcodec rawvideo -pix_fmt yuv420p -threads 0 -f v4l2 /dev/video0

Farklı bir kare hızı istiyorsanız, -r değerini 15'den başka bir şeye değiştirin. Çözünürlük -s parametresinde seçilir. Ekranın sol üst köşesinden bir ofset belirlemek istiyorsanız, onu "-i: 0.0 + x, y" biçiminde -i parametresinde iletin, burada x ve y sırasıyla yatay ve dikey ofsettir.


5
Resminiz Acımasız olsun, aynalı edilebilir yatay çevirme senin ffmpeg bağlı yapı . -Vf hflip adlı video filtresini kullanın . Zaten bir vf kullanıyorsanız, bunları tırnak içine alın ve -vf 'hflip, scale = 640: 360' gibi virgülle ayırın.
Marcelo Teixeira Ruggeri,

3
Bununla birkaç hata alıyorum [x11grab @ 0x24013c0] Stream #0: not enough frames to estimate rate; consider increasing probesize, [v4l2 @ 0x2409520] ioctl(VIDIOC_G_FMT): Invalid argumentveCould not write header for output file #0 (incorrect codec parameters ?): Invalid argument
Lotus

1
Ffmpeg 3.1.4 ile aynı LOTUS ile aynı çıktıları alıyorum. V4l2loopback ve ffmpeg öğelerinin yanında gerekli olan özel kodlayıcı veya paketler var mı?
cguenther

1
@ Lot başka bir / dev / video cihazı kullandığımda problemi çözmeyi başardım. V4l2 video cihazını kullandığınızdan emin olmalısınız (ki bu benim durumumda / dev / video1). Ofset, / dev / video0 kullanarak zaten var olan gerçek bir web kamerası cihazından kaynaklanabilir.
cguenther

2
@Lotus Krom tarayıcınıza başlamadan önce modprobe komutunun (root olarak veya sudo ile) çalıştırıldığından emin olun. Modülün <code> lsmod | grep v4l2loopback </code>.
cguenther

6

Mplayer ile v4l2loopback kullanın .

  1. İndir,
  2. derlemek ( makeve su -c 'make install'),
  3. modülü yükleyin su -c 'modprobe v4l2loopback',
  4. sonra examples/yuv4mpeg_to_v4l2.cv4l2loopback kaynak klasörünün dosyasındaki bir satırı

    v.fmt.pix.pixelformat = V4L2_PIX_FMT_YUV420;
    

    için

    v.fmt.pix.pixelformat = V4L2_PIX_FMT_YVU420;
    
  5. ve makebu klasörde yapın.

  6. Ardından examplesşunun gibi dizinden çalıştırın :

    mkfifo /tmp/pipe  # only needed once, as long as you do not delete the file /tmp/pipe
    ./yuv4mpeg_to_v4l2 < /tmp/pipe &
    mplayer movie.mp4 -vf scale=480:360 -vo yuv4mpeg:file=/tmp/pipe
    

    movie.mp4video dosyanızın adını değiştireceğiniz yer . Ve /dev/video0geri döngü cihazınızla değiştirin .

MPlayer, stdin'den bile herhangi bir web akışını, her türlü video dosyasını çalabilir! Alman bir haber sitesi olan http://www.tagesschau.de adresinden bir dosya ile test ettim .

TS=$(wget "http://www.tagesschau.de/multimedia/video/" -q -O - | grep --regexp='http.*\.webm"' | sed -e 's%.*href="%%' -e 's%\.webm".*%\.webm%')
./yuv4mpeg_to_v4l2 < /tmp/pipe &
mplayer $TS -vf scale=480:360 -vo yuv4mpeg:file=/tmp/pipe

$ TS yerine (bir -stdin anlamına gelen) koyabilirsiniz . Ve mplayer'ın önünde, ffmpeg komutunuz çıktılarını stdout'a yönlendirir. Yani şöyle bir şey:

./yuv4mpeg_to_v4l2 < /tmp/pipe &
fmpeg -someOptions ... -o - | mplayer - -vf scale=480:360 -vo yuv4mpeg:file=/tmp/pipe

Sonuncuyu test etmediniz, çünkü ffmpeg komutunuzun nasıl göründüğünü söylemediniz.


Lütfen yardım: ./yuv4mpeg_to_v4l2 < /dev/video0 &yol açar ./yuv4mpeg_to_v4l2: : missing YUV4MPEG2 header. Nasıl yerine /tmp/pipegöre /dev/video0?
user123456

3

Hangi dağıtımı kullanıyorsun? Arch altında WebCamStudio'yu Livestream web tabanlı "stüdyo" ile birleştirdim. Yine de kullandığımdan beri uzun zaman geçti.

http://www.ws4gl.org/

Tam olarak ne yapmaya çalışıyorsun? x11grab ile derlenen ffmpeg masaüstünü kaydedebilir. Bunu Ustream'e zorlamakla sınırlı bir başarı elde ettim, ama yine de bir süre oldu ve yaptığım şeyin artık işe yaramayacağını düşünüyorum.

Eğer masaüstünüzden ziyade bir dosyayı yayınlamak istiyorsanız ("Bir pencere", "VLC" demek istediğinizi düşündüğümde düşünüyorum), Livestream ile çalışmasını sağlamak için sizi doğru yöne işaret edebilirim (belki de Ustream). Bunu deneyimle nasıl yapacağımı beceriksizce çözüyorum. Fantastik değil ama Livestream ile çalışıyor.

Justin.tv de VLC'den servislerine aktarabilen komut dosyalarına sahiptir.

http://apiwiki.justin.tv/mediawiki/index.php/Linux_Broadcasting_API


Vay bu çok ilginç. Bazı oyunların canlı oyunlarını yayınlamaya çalışıyorum. Ben zaten ffmpeg'den bir video dosyasına nasıl yakalanacağımı biliyorum, aynı dosyayı vlc'de açıp açamayacağımı ve bir şekilde yazıldığı gibi aktarabildiğimi merak ediyorum. Bilgi için teşekkürler.
bkconrad

ws4gl.org web sitesi çok modası geçmiş gibi görünüyor ve tüm bağlantılar Wayback Makinesi'ne işaret ediyor. Sanırım en son sürüm sourceforge.net/projects/webcamstudio
Denilson Sá Maia

"WEBCAMSTUDIO'NUN BAKIMI YOKTUR": /
Raphael

2

İlk olarak, visible.in muhtemelen herhangi bir zorluk olmadan istediğinizi yapar (bağlı değilim): http://appear.in/

İkinci olarak, yakın zamanda linux desteği (!) Ekleyen OBS'yi kullanarak Twitch'e veya diğer servislere aktarabilirsiniz: https://obsproject.com/

OBS ayrıca Ubuntu'da ekran yakalama yaparken ( universeşimdiye kadar bulduğum depodaki herhangi bir şey tarafından çözülmedi), sistem sesinin ve ses girişinin en zorlu sorununu da çözmektedir .

Hiçbir harika unix-y çözümüm yok. Ama bunlar gerçek dünyada benim için çalıştı.


OBS Studio Debian'da: tracker.debian.org/pkg/obs-studio
myrdd
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.