私はこれと似たようなことをしたいガイドしかし、この場合、両方の入力が同じfpsを持ち、2つの異なるフレームレート入力を同期させたいと思います。例は次のとおりです。
ffmpeg \
-f x11grab \
-video_size 1920x1080 \
-framerate 60 \
-i :0.0 \
-f v4l2 \
-video_size 320x240 \
-framerate 15 \
-i /dev/video0 \
-filter_complex '[0:v][1:v]overlay=10:(H-h)/2[o]' \
-map '[o]' \
-r 60 \
-vcodec libx264 \
-an \
-f mpegts \
udp://127.0.0.1:3333
それから見てください。vlc udp://@127.0.0.1:3333
私の場合、私は10fps程度をぎこちなく与え、かなり凍ったように見えましたが、60を予想しましたが、最も低かったので15日の可能性が高かったでしょう。誰が知っています...
しかし、ウェブカメラの入力を削除してフィルタリングすると、私が望む60fps全体が提供され、ウェブカメラをストリーミングすると15fpsが提供されます。
に基づいてこの他のガイド私も[1:v]fps=fps=60[wc];[0:v][wc]overlay=10:(H-h)/2[o]
成功せずにフィルタを試しました。
私は出力fpsが60であり、フレームが静止効果を避けるために何らかの方法でうまく分散したいと思います。 ffmpegを使用して2つのビデオ入力を異なるfpsに同期する方法は?
証拠:
- Webカメラを使用した画面録画
- Webカメラなしで画面を録画するこれは、コンピュータがリアルタイムで全画面を録画できることを意味します。
- 丸太- Webカメラの有無にかかわらずストリーミング
答え1
まだ正確な理由がわかりませんが、次はうまくいきます。
ffmpeg \
-f x11grab \
-video_size 1920x1080 \
-framerate 60 \
-i :0.0 \
-f v4l2 \
-video_size 320x240 \
-framerate 15 \
-i /dev/video0 \
-filter_complex '[0:v]setpts=RTCTIME-RTCSTART[dt];[1:v]setpts=PTS-STARTPTS[wc];[dt][wc]overlay=10:(H-h)/2[o]' \
-map '[o]' \
-r 60 \
-vcodec libx264 \
-an \
-f mpegts \
udp://127.0.0.1:3333
ドキュメントで話す内容は廃止さRTCTIME
れ、ほとんどの人が使用しているものにもかかわらず、PTS-STARTPTS
ストリームが一連の数字ではなく時間に基づいているように強制するようです。
編集する:
次のフィルタを使用することも効果があり、これがより適切であると思います。
[0:v]setpts=N/FRAME_RATE/TB[dt];[1:v]setpts=N/FRAME_RATE/TB,fps=fps=60[wc];[dt][wc]overlay=10:(H-h)/2[o]
一定のフレームレートを確保し、出力が予想されるフレームレートと同じになるようにWebカメラを調整します。