Ffmpeg
ffmpeg:監控螢幕上從 /dev/video* 編碼的影片
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
請務必指定匹配的像素格式、解析度和幀速率。