デスクトップ/画面をLinuxの/dev/video1に(偽)「ウェブカメラ」にストリーミングするにはどうすればよいですか?

デスクトップ/画面をLinuxの/dev/video1に(偽)「ウェブカメラ」にストリーミングするにはどうすればよいですか?

1つは画面をAVIビデオファイルとして録画できるコマンド、もう1つはビデオファイルを(偽)「Webカメラ」にストリーミングできるコマンドです。これは、共有する画面の選択をサポートしていないアプリに役立ちます(Slackを見てみましょう)。

コマンド#1(https://askubuntu.com/a/892683/721238):

ffmpeg -y -f alsa -i hw:0 -f x11grab -framerate 30 -video_size 1920x1080 -i :0.0+1920,0 -c:v libx264 -pix_fmt yuv420p -qp 0 -preset ultrafast screenStream.avi

コマンド#2(https://unix.stackexchange.com/a/466683/253391):

ffmpeg -re -i screenStream.avi -map 0:v -f v4l2 /dev/video1

なぜこれら2つを並列に実行できないのですか?まあ、「ウェブカメラ」を使用するたびに、2番目のコマンドはファイルの先頭からストリーミングを開始します。だから私はスケジュールを非常に近づけなければなりません。それ以外の場合は遅延が発生します。

私は多くのソリューション(ffmpegの代わりにgstreamerを使用するソリューションを含む)を試しましたが、何も機能しません。これが私の最後の希望です。

デスクトップ/画面をUbuntuの/dev/video1に(偽)「ウェブカメラ」にストリーミングするにはどうすればよいですか?

答え1

解決しました。

解決手順:

  1. 古いv4l2loopbackを削除します。sudo modprobe -r v4l2loopback
  2. git clone https://github.com/umlaeute/v4l2loopback/
  3. make && sudo make install(セキュアブートを使用している場合は、まず署名する必要があります。https://ubuntu.com/blog/how-to-sign-things-for-secure-boot)
  4. sudo depmod -a
  5. videodevドライバのロードsudo modprobe videodev
  6. sudo insmod ./v4l2loopback.ko devices=1 video_nr=2 exclusive_caps=1変化ビデオ番号すでに持っているカメラの数によって異なります。ゼロインデックス
  7. ls -al /dev/video*ffmpegで/dev/video[video_nr]を使用する
  8. sudo ffmpeg -f x11grab -r 60 -s 1920x1080 -i :0.0+1920,0 -vcodec rawvideo -pix_fmt yuv420p -threads 0 -f v4l2 -vf 'hflip,scale=640:360' /dev/video2
  9. 行くhttps://webcamtests.com偽のカメラをテストしてみてください 仮想カム
  10. 利益! 布材

ブート間でこれが続くようにするには、https://askubuntu.com/a/1024786/721238それは行わなければなりません。

関連情報