了解ffmpeg输入流信息

Dav*_*rks 3 usb video ffmpeg

运行时ffmpeg我得到以下输入/输出/流语句。我需要了解这里的细节。

$ ffmpeg -y -nostdin -f v4l2 -framerate 30 -video_size 1920x1080 -c:v mjpeg -i /dev/video1 -c:v copy /tmp/v1.mov

Input #0, video4linux2,v4l2, from '/dev/video1':
  Duration: N/A, start: 762195.237801, bitrate: N/A
    Stream #0:0: Video: mjpeg, yuvj422p(pc, bt470bg/unknown/unknown), 1920x1080, -5 kb/s, 30 fps, 30 tbr, 1000k tbn, 1000k tbc

Output #0, mov, to '/tmp/v1.mov':
  Metadata:
    encoder         : Lavf56.40.101
    Stream #0:0: Video: mjpeg (jpeg / 0x6765706A), yuvj422p, 1920x1080, q=2-31, -5 kb/s, 30 fps, 30 tbr, 1000k tbn, 1000k tbc

Stream mapping:
  Stream #0:0 -> #0:0 (copy)
frame= 1685 fps= 30 q=-1.0 Lsize=  212483kB time=00:00:56.08 bitrate=31036.6kbits/s    
Run Code Online (Sandbox Code Playgroud)

我想通过 USB 3.0 集线器连接 2 个 USB 摄像头。我的相机是 USB 2.0 相机。在低分辨率或帧速率下运行 2 个摄像头是可行的,但在高分辨率/帧速率下,我会耗尽 USB 带宽。

是否Video: mjpeg, yuvj422p(pc, bt470bg/unknown/unknown)意味着 ffmpeg 正在接收压缩的 mjpeg 流未压缩的 yuv 流?如果是这种情况,则可以解释带宽问题。我之所以这么问,是因为我可以看到流映射部分的压缩比特率仅为 31 Mbit。

我的问题就变成了,我可以强制相机 传输压缩的 mjpeg 流吗?

ps 我知道我可以将摄像机插入单独的 USB 端口,但我只有 3 个端口并且需要记录 6 个摄像机,因此每个 USB (3.0) 集线器至少需要 2 个摄像机。

Gya*_*yan 5

在 中Video: mjpeg, yuvj422p(pc, bt470bg/unknown/unknown)mjpeg是编解码器,yuvj422p是 ffmpeg 将解码输入的未压缩流的像素格式,pc表示整个位深度用于表示颜色,即 0 = 黑色和 255 = 白色。接下来的三个值表示颜色空间属性。我相信顺序是原色、空间和传输特性(或伽玛函数)。

因此,您不会同时摄取两个流。