"复制"在ffmpeg命令行中做了什么?

ccs*_*son 2 ffmpeg video-encoding libavcodec

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

我从其他问题中看到它可以在没有转码的情况下复制流,但是我可以操纵它的其他可能性是什么?

我已经完成ffmpeg --help但我没有看到任何关于它的文档.有网站我可以阅读更多关于它的内容吗?

Gya*_*yan 8

copy既不是开关也不是选择.它是可以为编解码器选项设置的值,并且意味着它建议的内容,即复制帧而不是通过decode-> filter-> encode进程.

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

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

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

  • 如果使用“copy”后仍丢失音频流,请尝试添加“-map 0:a -map 0:v” (2认同)