FFMPEG压缩 - 管道与文件

时间:2014-04-27 07:28:18

标签: opencv video ffmpeg video-capture

美好的一天,

我编写了一个使用V4L2驱动程序从C920捕获H264 Raw帧的应用程序。字节输出到stdout,可以通过管道传输到文件或任何程序

我想做的是:

  

./ capture | ffmpeg -f h264 -i - -b 500000 -vcodec copy out.mp4

想法是捕获原始视频并将其转换为动态的mp4文件。它完美地工作,但是,从不应用比特率压缩。它最终得到一个与原始文件大小相同的文件(因为相机输出的是压缩的h264文件,但已经是原始帧)

但是,如果我是这样做的话

  

./ cature> input.raw

ffmpeg -i out.mp4 -b 500000 output.mp4

现在,它将文件压缩到合理的大小。是否有一个原因?我现在唯一的解决方案是使用像gstreamer这样的替代品(它有h264的问题)或者找出ffmpeg API,看看我是否可以添加一些代码来使它在动态帧上进行压缩。

1 个答案:

答案 0 :(得分:3)

我想问题是您使用-vcodec copy表示不要触摸视频编解码器。我只想省略完全重新编码的论点。

来自ffmpeg documentation

  

流复制是通过将复制参数提供给'-codec'选项而选择的模式。它使ffmpeg省略了指定流的解码和编码步骤,因此它只进行解复用和多路复用。它对于更改容器格式或修改容器级元数据非常有用。

请注意,-vcodec-codec:v的别名,这是-codec为您解答问题的原因。