【问题标题】:FFMPEG compression - Piping vs File [closed]FFMPEG压缩-管道与文件[关闭]
【发布时间】:2014-04-27 07:28:18
【问题描述】:

美好的一天,

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

我想要做的是:

./捕获 | ffmpeg -f h264 -i - -b 500000 -vcodec 复制出.mp4

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

但是,如果我要这样做

./cature > input.raw

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

现在,它会将文件压缩到合理的大小。是否有一个原因?我目前唯一的解决方案是使用 gstreamer 之类的替代方案(它与 h264 存在问题)或找出 ffmpeg API 并查看我是否可以添加一些代码以使其在运行中对帧进行压缩。

【问题讨论】:

    标签: opencv video ffmpeg video-capture


    【解决方案1】:

    我想问题是你使用了-vcodec copy,上面写着不要触摸视频编解码器。对于完整的重新编码,我会省略这个论点。

    来自ffmpeg documentation

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

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

    【讨论】:

    • 您能进一步解释一下吗?比如文案是什么意思
    • 复制意味着不改变压缩。所以如果输入的文件没有被压缩,在输出中也不会被压缩。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-04-27
    • 2017-04-30
    • 2018-02-21
    • 2019-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多