了解FFmpeg输入流信息

3
在运行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    

我想连接两个USB 2.0相机到一个USB 3.0集线器上。如果运行两个低分辨率或帧率的相机是可以的,但在高分辨率/帧率下,我会用尽USB带宽。

视频流参数:mjpeg、yuvj422p(PC,bt470bg/未知/未知)是否意味着FFmpeg同时收到了压缩的mjpeg流和未压缩的yuv流?如果是这样,就可以解释带宽问题了。我询问这个问题是因为我发现在流映射部分压缩比特率只有31 Mbit。

我的问题变成了:我能强制相机仅发送压缩后的mjpeg流吗?

P.S. 我知道可以将相机插入不同的USB端口,但我只有3个端口,需要录制6个相机,所以我需要每个USB(3.0)集线器至少连接2个相机。

1个回答

5
在“视频:mjpeg,yuvj422p(pc,bt470bg / unknown / unknown)”中,“mjpeg”是编解码器,“yuvj422p”是ffmpeg将解码输入流的像素格式,“pc”表示整个位深度用于信号颜色,即0 =黑色和255 =白色。接下来的三个值指示了颜色空间属性。我认为顺序是原色、空间和传输特性(或伽玛函数)。因此,您不会同时摄取两个流。

我的实验表明,顺序似乎是:空间、主要因素和传输特性。 - shengbinmeng

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接