2つのコマンドがあります。1つは画面をAVIビデオファイルに記録するコマンドで、もう1つはビデオファイルを(偽の)「ウェブカメラ」としてストリーミングするコマンドです。これは、共有する1つの画面の選択をサポートしていないアプリで本当に便利です(私は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番目のコマンドは、「webcam」を使用するたびに、ファイルの先頭からストリーミングを開始します。だから私はそれを本当に閉じる時間を計らなければなりません、さもなければ待ち時間があります。
私は何度も試してみましたが(ffmpegの代わりにgstreamerを使用したソリューションを含む)、何も機能しません。これが私の最後の希望です。
Ubuntuで(偽の)「ウェブカメラ」としてデスクトップ/画面を/ dev/video1にストリーミングするにはどうすればよいですか?
解決しました。
解決する手順:
Sudo modprobe -r v4l2loopback
git clone https://github.com/umlaeute/v4l2loopback/
make && Sudo make install
(セキュアブートを使用している場合は、最初に署名する必要があります https://ubuntu.com/blog/how-to-sign-things-for-secure-boot )Sudo depmod -a
Sudo modprobe videodev
Sudo insmod ./v4l2loopback.ko devices=1 video_nr=2 exclusive_caps=1
すでに取得したカメラの数に基づいてvideo_nrを変更します。ゼロインデックスls -al /dev/video*
ffmpegで/ dev/video [video_nr]を使用します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
これをブート間で持続させたい場合は、 https://askubuntu.com/a/1024786/721238 を実行する必要があります。