Linux에서 ffmpeg를 사용하여 기존 웹캠에서 비디오를 녹화하는 방법은 무엇입니까?

Linux에서 ffmpeg를 사용하여 기존 웹캠에서 비디오를 녹화하는 방법은 무엇입니까?

몇 시간 후에 나는 마침내 그 주제에 대한 지식의 절대적 부족을 받아들일 준비가 되었고 여기에 이 ​​질문을 게시하기로 결정했습니다. 나는 오래된 외부 USB 웹캠(Media-Tech MT400 -> 0c45:6029)에서 비디오를 녹화하려고 시도했지만 ffmpeg큰 성공을 거두지 못했습니다.

내가 시도한 첫 번째 일은 내장 웹캠과 작동하는 것을 실행하는 것이었습니다.)

ffmpeg -f v4l2 -i /dev/video1 test.avi

그러나 이는 다음 오류를 반환합니다.

Cannot find a proper format for codec 'none' (id 0), pixel format 'none' (id -1)

이것이 내가 그것으로부터 얻는 것입니다v4l2-ctl -d /dev/video1/ --all --list-formats-ext

Driver Info (not using libv4l2):
        Driver name   : sonixb
        Card type     : USB camera
        Bus info      : usb-0000:04:00.0-1
        Driver version: 3.10.17
        Capabilities  : 0x85000001
                Video Capture
                Read/Write
                Streaming
                Device Capabilities
        Device Caps   : 0x05000001
                Video Capture
                Read/Write
                Streaming
Priority: 2
Video input : 0 (sonixb: ok)
Format Video Capture:
        Width/Height  : 352/288
        Pixel Format  : 'S910'
        Field         : None
        Bytes per Line: 352
        Size Image    : 126720
        Colorspace    : SRGB
Streaming Parameters Video Capture:
        Frames per second: invalid (0/0)
        Read buffers     : 2



ioctl: VIDIOC_ENUM_FMT
    Index       : 0
    Type        : Video Capture
    Pixel Format: 'S910'
    Name        : S910
            Size: Discrete 160x120
            Size: Discrete 176x144
            Size: Discrete 320x240
            Size: Discrete 352x288

    Index       : 1
    Type        : Video Capture
    Pixel Format: 'BA81'
    Name        : BA81
            Size: Discrete 160x120
            Size: Discrete 176x144

불행하게도 이것은 나에게 큰 도움이 되지 않았지만 웹캠 출력을 캡처 VLC하고 녹화해 보았습니다... 효과가 있었습니다!

다음 정보를 ffmpeg -i vlc-record[...].avi반환 하려고 합니다 .VLC recording

Input #0, avi, from 'vlc-record-2015-02-05-05h22m52s-v4l2____dev_video1-.avi':
  Duration: 00:00:01.58, start: 0.000000, bitrate: 26937 kb/s
    Stream #0:0: Video: rawvideo (I420 / 0x30323449), yuv420p, 352x288, 27671 kb/s, 22.10 tbr, 22.10 tbn, 22.10 tbc

다음 매개변수를 사용하여 실행하는 데 필요한 정보( rawvideo및 ) 가 충분하다고 생각합니다.yuv420pffmpegyuv4ffmpeg -formats

ffmpeg -f rawvideo -vcodec yuv4 -i /dev/video1 test.avi

결과는 첫 번째 시도 후 본 것보다 약간 더 나았습니다.

[IMGUTILS @ 0x7fff497d3920] Picture size 0x0 is invalid
[rawvideo @ 0x9c4720] Could not find codec parameters for stream 0 (Video: yuv4, yuv420p, -4 kb/s): unspecified size
Consider increasing the value for the 'analyzeduration' and 'probesize' options
/dev/video1: could not find codec parameters

검색하고 몇 번 시도한 후에 "-video_size cif" 옵션을 다시 추가했는데... 작동했습니다! ! ! ?

글쎄요, 실제로는 그렇지 않습니다...

Input #0, rawvideo, from '/dev/video1':
  Duration: N/A, start: 0.000000, bitrate: 30412 kb/s
    Stream #0:0: Video: yuv4, yuv420p, 352x288, 30412 kb/s, 25 tbr, 25 tbn, 25 tbc
Output #0, avi, to 'test.avi':
  Metadata:
    ISFT            : Lavf55.19.104
    Stream #0:0: Video: mpeg4 (FMP4 / 0x34504D46), yuv420p, 352x288, q=2-31, 200 kb/s, 25 tbn, 25 tbc
Stream mapping:
  Stream #0:0 -> #0:0 (yuv4 -> mpeg4)
Press [q] to stop, [?] for help
frame=   13 fps=6.3 q=24.8 Lsize=    1064kB time=00:00:00.52 bitrate=16759.3kbits/s    
video:1058kB audio:0kB subtitle:0 global headers:0kB muxing overhead 0.554114%

비디오 캡처 중에는 웹캠의 LED가 켜지지만 VLC녹음되는 것은 TV와 같은 소음뿐입니다.

그래서 저는 7시간이 지난 후에도 여전히 작동하는 해결책이 없습니다. 여러분의 도움을 구하고 있습니다.

미리 감사드립니다.

관련 정보