# 使用ffmpeg在不重新编码的前提下转换格式 首先,对于多媒体尤其是视频文件,编码就是编码,“格式”则有歧义,例如`mp4`文件,里面可以放黑科技`HEVC`编码,也可是是上古`mpeg-4`编码,所以有些`mp4`文件在老播放器上就是打不开或者播放不正常。`mp4`或者`mkv`这种概念严格来说叫“容器”,即规定了一些音频流或者视频流在物理文件中如何存放的标准,这个话题就不展开说了。 总之,某些时候想把一个很大的`.ts`转换成`.mp4`,用来适应某些特殊需要,又不想重新编码(太慢,而且理论上一定会有画质损失),可以这样写命令: ``` ffmpeg -i 原始视频.ts -codec copy 输出格式.mp4 ``` 上面的命令意思是直接拷贝音频视频流。注意这样做不保证不丢失干货,比如某些情况下来源有n条音频流,但目标容器只支持一条音轨。这个特性的意外用法是,有时候网上下载的文件内嵌了不满意的(甚至是广告)的缩略图文件,用这个办法转换一遍(进出扩展名可以相同),由于仅复制了媒体流而没有复制缩略图,这个缩略图就在输出文件里面就没有了。 注意,网上肯定有些沙雕说直接改扩展名就行了,这个说法未免太侮辱智商。那不过是利用了有些播放器按实际文件内容(而非扩展名)进行文件解析所带来的强大兼容性而已。