ffmpeg YUYV를 사용하여 웹캠을 열었지만 MJPEG를 원합니다.


14

웹캠이 MJPEG "프로토콜"을 사용하여 ~ 24를, YUYV를 사용하여 ~ 10fps 만 제공 할 수 있기 때문에 MJPEG 모드에서 웹캠 (logitech c910)을 열려면 ffmpeg가 필요합니다. ffmpeg 명령 줄을 사용하여 둘 중에서 선택할 수 있습니까?

xx@(none) ~ $ v4l2-ctl --list-formats
ioctl: VIDIOC_ENUM_FMT
    Index       : 0
    Type        : Video Capture
    Pixel Format: 'YUYV'
    Name        : YUV 4:2:2 (YUYV)

    Index       : 1
    Type        : Video Capture
    Pixel Format: 'MJPG' (compressed)
    Name        : MJPEG

내 현재 명령 줄 :

ffmpeg -y -f alsa -i hw:3,0 -f video4linux2 -r 20 -s 1280x720 -i /dev/video0 -acodec libfaac -ab 128k -vcodec libx264 /tmp/web.avi

ffmpeg는 웹캠에서 녹화 할 때 손상된 h264 스트림을 생성하지만 x11grab에서 녹화 할 때는 일반 h264 스트림이 발생합니다. 또 다른 코덱 (mjpeg, mpeg4)은 웹캠과 잘 작동하지만 ... 이것은 또 다른 이야기입니다.

전체 ffmpeg의 콘솔 출력을 업데이트 하십시오 : http://pastebin.com/Hzem6CKF (YUV 모드에서 비디오 장치를 여는 것을 볼 수 있지만 장치는 MJPEG 출력도 제공 할 수 있습니다).

답변:


13

웹캠으로 출력 할 수있는 항목에 대한 추가 정보를 나열 할 수 있습니다 v4l2-ctl --list-formats-ext. -list_formats입력 옵션을 사용하여 ffmpeg와 함께 웹캠 정보를 표시 할 수도 있습니다.

$ ffmpeg -f video4linux2 -list_formats all -i /dev/video0
[...]
[video4linux2,v4l2 @ 0x1fb7660] Raw       :   yuyv422 :     YUV 4:2:2 (YUYV) : 640x480 160x120 176x144 320x176 320x240 352x288 432x240 544x288 640x360
[video4linux2,v4l2 @ 0x1fb7660] Compressed:     mjpeg :                MJPEG : 640x480 160x120 176x144 320x176 320x240 352x288 432x240 544x288 640x360

필자의 예제에서이 웹캠은 원시 ( yuyv422) 및 압축 ( mjpeg) 형식을 모두 지원할 수 ffmpeg있으며 -input_format입력 옵션으로 원하는 형식을 알려줄 수 있습니다 .

MJPEG 비디오 스트림을 스트림 복사합니다 (재 인코딩 없음).

ffmpeg -f v4l2 -input_format mjpeg -i /dev/video0 -c:v copy output.mkv

원시 웹캠 비디오를 H.264로 다시 인코딩하십시오.

ffmpeg -f v4l2 -input_format yuyv422 -i /dev/video0 -c:v libx264 -vf format=yuv420p output.mp4

위와 동일하지만 프레임 속도 및 비디오 크기를 수동으로 선택하십시오 ( v4l2-ctl --list-formats-ext사용 가능한 프레임 속도 및 비디오 크기의 경우).

ffmpeg -f v4l2 -input_format yuyv422 -framerate 30 -video_size 640x480 -i /dev/video0 -c:v libx264 -vf format=yuv420p output.mp4
  • 자세한 옵션 은 video4linux2 입력 장치 설명서를 참조하십시오 .

  • 출력되는 프레임 속도가 예상보다 낮 으면 조명을 더 추가하십시오. 웹캠이 어두운 환경에서 더 긴 노출을 얻기 위해 프레임 속도를 낮추는 것일 수 있습니다.


0
ffmpeg -t 60 -f video4linux2 -input_format mjpeg -i /dev/video0 -c:v libx264 -strict -2 /DataVolume/share/Public/v/outputs.mp4

4
슈퍼 유저에 오신 것을 환영합니다! 이것을 확장 할 수 있습니까? 특히 LordNekbeard가 가지고 있지 않은 정보는 무엇입니까? :)
bertieb

다음과 같은 경우를 -strict -2제외하고는 필요 없습니다. 1) ffmpeg끔찍하게 구식이며 2) AAC 오디오를 인코딩하고 있습니다.
llogan
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.