有没有办法告诉 ffmpeg“使用文件 B 的格式设置对文件 A 进行编码?”

有没有办法告诉 ffmpeg“使用文件 B 的格式设置对文件 A 进行编码?”

我知道我可以使用 ffprobe,然后解析文本文件以获取文件 B 的编解码器信息,但有没有更简单的方法?
目标:我想在不重新编码的情况下将几秒钟的静音添加到数百个音频文件(具有不同的比特率和编码)中,因为我想在播放播放列表时在曲目之间有几秒钟的静音。由于 Android 上没有提供此功能的音频播放器(据我所知),我正在考虑将静音合并到文件本身中。

答案1

回答你的字面问题,不,ffmpeg 无法确定输入的编解码器和比特率,并将相同的设置应用于输出文件。

有几个原因导致它不容易实现:

  • 您必须根据输入编解码器确定输出编码器。您无法始终知道原始文件使用了哪种编码器,因此不可能在所有情况下都选择完全相同的编码器。
  • 选择相同的输入比特率可能会导致生成损失,因此用户应该自己为输出选择合适的比特率或质量级别。
  • 通常支持保持采样率和音频通道数(或像素格式、视频的帧速率),但也存在特殊情况,例如,输入可能具有 5.1 音频流,但 ffmpeg 可以选择的唯一音频编码器仅支持立体声音频编码。
  • 输入/输出编解码器与文件格式的组合有很多种,您无法保证给定的输入组合可以写入输出文件。

也就是说,对于像您这样的有限用例,一个解析文件信息(例如,使用mediainfoffprobe)并将其转换为 ffmpeg 设置的简单脚本就可以了。

相关内容