FFmpeg:TS(AAC)到 M4A(AAC)的转换不使用和使用“-codec copy”参数:不同的结果 - 为什么以及哪个最好使用?

FFmpeg:TS(AAC)到 M4A(AAC)的转换不使用和使用“-codec copy”参数:不同的结果 - 为什么以及哪个最好使用?

我正在使用 ffmpeg 将 AAC 音频从 TS(传输流)容器格式转换为 M4A 容器格式。我的目的是(或曾经是)在不重新编码的情况下执行此操作。但是似乎有两种方法可以让 ffmpeg 执行此操作,从而产生不同的结果。

源文件扩展名为 [.ts],为 VBR,整体速度为 162 kb/s,大小为 8.5 MB

“直接”使用... ffmpeg -i infile.ts outputfile.m4a ..生成一个 [.m4a] AAC 文件,使用 VBR,162 kb/s,大小为 7.1 MB 我认为这种尺寸的减小是由于 TS 格式的传输错误容忍数据已被“过滤掉”造成的。

但是当我包含参数[-codec copy]时... ffmpeg -i infile.ts -codec copy outfile.m4a ...这会生成一个带有 CBR、93.3 kb/s、大小 5.1 MB 的 AAC [.m4a] 文件,我猜这意味着音频已经从 VBR 重新编码为 CBR,大概在重新(有损)压缩过程中丢失了一些音频数据(除非这种 BR 转换比这更聪明)。

我对上述内容的理解正确吗?“直接”(无 -codec 参数)ffmpeg 运行的结果是否可能更好地(或完全)保留了原始质量?或者第二次 ffmpeg 运行的 CBR 结果是否可能具有相同(或难以区分)的音频质量?

答案1

“直接”使用... ffmpeg -i infile.ts outputfile.m4a,即省略-codec copy,导致(编码)媒体首先被解码,然后被(重新)编码(假设ffmpeg对目标文件/编码类型的默认设置,例如m4a)。

为了确保重新包装发生(无解码/重新编码),-codec copy或等效地-c copy(或根据个人要求,为音频和视频提供单独的等效物)是必不可少的。

同样的问题在堆栈溢出

相关内容