ffplay
예를 들어 /dev/video0을 열고 들어오는 비디오 프레임을 모니터링하는 것이 좋습니다(예: TV 카드에서 TV를 시청할 수 있음). /dev/video를 제공하면 ffmpeg
비디오를 쉽게 인코딩할 수도 있습니다.
동시에 두 가지를 모두 수행할 수 있습니까? 비디오 프레임을 화면에 표시하고 동시에 인코딩할 수 있습니까?
답변1
방법은 다양합니다. 나는 일반적으로 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
일치하는 픽셀 형식, 해상도 및 프레임 속도를 지정해야 합니다.