为啥 FFMPEG 错误地将 .M4A 猜测为 WAV pcm_s16le 文件?

Posted

技术标签:

【中文标题】为啥 FFMPEG 错误地将 .M4A 猜测为 WAV pcm_s16le 文件?【英文标题】:Why does FFMPEG incorrectly guess .M4A to be a WAV pcm_s16le file?为什么 FFMPEG 错误地将 .M4A 猜测为 WAV pcm_s16le 文件? 【发布时间】:2021-10-03 01:27:57 【问题描述】:

我正在尝试使用此命令提取一段音频;

  ffmpeg -ss 00:00:01 -i input.m4a -t 00:00:03 -c:a copy output.m4a 

但 FFMPEG 错误地将 .M4A 猜测为 WAV pcm_s16le 文件,因此我必须使用此命令并将 .M4A 输出转换为 AAC;

  ffmpeg -vn -ss 00:00:01 -i input.m4a -t 00:00:03 -c:a aac output.m4 

但我担心这可能会导致它被处理两次。那么如何让 FFMPEG 识别输出文件应该保持与输入文件相同的格式,并且只是被复制而不是转换呢?

【问题讨论】:

【参考方案1】:

-ss 从第二个 01 -t 需要 3 秒 -vn 不复制视频

ffmpeg -ss 00:00:01 -i input.m4a -t 3 -c:a aac -vn -strict -2 output.m4a  

只复制音频

ffmpeg -ss 00:00:01 -i input.m4a -t 3 -c:a copy -vn -strict -2 output.m4a 

【讨论】:

第一个给了我一个较小的压缩文件。第二个给了我一个错误; [ipod @ 00000273cdf0f680] 在流 #0 中找不到编解码器 pcm_s16le 的标记,容器中当前不支持编解码器 无法为输出文件 #0 写入标头(编解码器参数不正确?):无效参数 初始化输出流时出错 0:0 -- 所以我无法简单地复制音频而不压缩它。 -strict -2 \ -strict experimental 自 2015 年以来不再需要 AAC 编码。

以上是关于为啥 FFMPEG 错误地将 .M4A 猜测为 WAV pcm_s16le 文件?的主要内容,如果未能解决你的问题,请参考以下文章

FFmpeg,如何将封面艺术(图像)嵌入到 .m4a

使用ffmpeg库在android中合并.m4a文件[重复]

python调用ffmpeg批量转换音频flac、mp3、m4a

使用 FFMPEG 高效连接和交叉淡化 .ts 文件

将 m4a 转换为 aac 并在 Windows 7 上保留元数据

为啥 FFMPEG 报告错误的持续时间?