Ffmpeg

ffmpeg:監控螢幕上從 /dev/video* 編碼的影片

  • June 6, 2020

ffplay可以很好地打開例如 /dev/video0 並監視傳入的影片幀(例如,您可以在電視卡上觀看電視)。給 /dev/videoffmpeg也可以很容易地對影片進行編碼。

是否可以同時做到這兩點:將影片幀放到螢幕上,同時對它們進行編碼?

有很多方法。我通常在 tee 的幫助下將原始影片流複製到 ffplay 實例:

ffmpeg -hide_banner -loglevel error -f v4l2 -pixel_format yuyv422 -video_size 1280x960 -i /dev/video0 -c:v copy -f rawvideo - |\
tee >(ffplay -f rawvideo -pixel_format yuyv422 -video_size 1280x960 -) |\
ffmpeg -f rawvideo -pixel_format yuyv422 -video_size 1280x960 -i - -c:v libx264 -crf 21 -y /tmp/encoded.mp4

如果您想查看原始輸入和輸出,該範例會更加複雜:

ffmpeg -hide_banner -loglevel error -f v4l2 -pixel_format yuyv422 -video_size 640x480 -r 25 -i /dev/video0 -c:v copy -f rawvideo - | \
tee >(ffplay -hide_banner -loglevel error -window_title "Input" -f rawvideo -pixel_format yuyv422 -video_size 640x480 -) | \
ffmpeg -hide_banner -loglevel error -f rawvideo -pixel_format yuyv422 -video_size 640x480 -i - -c:v libx264 -crf 21 -f h264 - | \
tee >(ffplay -hide_banner -loglevel error -window_title "Encoded" -f h264 -) | \
ffmpeg -f h264 -r 25 -i - -y /tmp/encoded.mp4

請務必指定匹配的像素格式、解析度和幀速率。

引用自:https://unix.stackexchange.com/questions/591289