“复制”在 ffmpeg 命令行中做了啥?

Posted

技术标签:

【中文标题】“复制”在 ffmpeg 命令行中做了啥?【英文标题】:What does "copy" do in a ffmpeg command line?“复制”在 ffmpeg 命令行中做了什么? 【发布时间】:2016-11-17 16:16:49 【问题描述】:

我知道它复制了一些东西,但除此之外它做了什么(它在多大程度上影响了输出文件)?是开关还是选项?为什么单词本身前面没有连字符?

我从其他问题中看到它可以copy streams without transcode 但我可以操纵它的其他可能性是什么?

我已经完成了ffmpeg --help,但我没有看到任何关于它的文档。有没有一个网站可以让我了解更多信息?

【问题讨论】:

【参考方案1】:

copy 既不是开关也不是选项。这是可以为编解码器选项设置的值,表示它的建议,即复制帧而不是通过解码->过滤->编码过程。

在您链接的问题中,字符串为-c copy,这意味着将所有编解码器操作设置为复制,即视频、音频、字幕、数据和附件(如果有)。 -c-codec 的缩写。

如果设置-c:v copy,则表示复制任何正在处理的视频流。 -c:a-c:s-c:d 也是如此。当然,FFmpeg 必须支持将目标流复用到输出容器中。如果没有,该命令将失败。

当要求复制流时,您不能使用音频/视频/多媒体过滤器,因为过滤器需要解码音频/视频帧并对其进行操作。所以他们的结果需要重新编码。但是,您可以将比特流过滤器与副本一起使用,因为它们不会改变主要有效负载,而只会改变存储在流中的相关元数据。

【讨论】:

如果您在使用copy 后仍丢失了音频流,请尝试添加-map 0:a -map 0:v

以上是关于“复制”在 ffmpeg 命令行中做了啥?的主要内容,如果未能解决你的问题,请参考以下文章

UIViewController 类在 viewDidLoad 中做了啥? [复制]

@dynamic 在 Objective-C 中做了啥? [复制]

retranslateUi 在 PyQT 中做了啥

“^=”运算符在这个查找非成对数算法中做了啥? [复制]

对象的 __init__() 方法在 python 中做了啥? [复制]

“var”在 JavaScript 中做了啥?为啥有时它是作业的一部分? [复制]