使用ffmpeg在不重新编码的前提下转换格式

首先,对于多媒体尤其是视频文件,编码就是编码,“格式”则有歧义,例如mp4文件,里面可以放黑科技HEVC编码,也可是是上古mpeg-4编码,所以有些mp4文件在老播放器上就是打不开或者播放不正常。mp4或者mkv这种概念严格来说叫“容器”,即规定了一些音频流或者视频流在物理文件中如何存放的标准,这个话题就不展开说了。

总之,某些时候想把一个很大的.ts转换成.mp4,用来适应某些特殊需要,又不想重新编码(太慢,而且理论上一定会有画质损失),可以这样写命令:

ffmpeg  -i  原始视频.ts  -codec copy 输出格式.mp4

上面的命令意思是直接拷贝音频视频流。注意这样做不保证不丢失干货,比如某些情况下来源有n条音频流,但目标容器只支持一条音轨。这个特性的意外用法是,有时候网上下载的文件内嵌了不满意的(甚至是广告)的缩略图文件,用这个办法转换一遍(进出扩展名可以相同),由于仅复制了媒体流而没有复制缩略图,这个缩略图就在输出文件里面就没有了。

注意,网上肯定有些沙雕说直接改扩展名就行了,这个说法未免太侮辱智商。那不过是利用了有些播放器按实际文件内容(而非扩展名)进行文件解析所带来的强大兼容性而已。

  • 最后更改: 2022/01/09 10:03