![有没有办法告诉 ffmpeg“使用文件 B 的格式设置对文件 A 进行编码?”](https://linux22.com/image/1577721/%E6%9C%89%E6%B2%A1%E6%9C%89%E5%8A%9E%E6%B3%95%E5%91%8A%E8%AF%89%20ffmpeg%E2%80%9C%E4%BD%BF%E7%94%A8%E6%96%87%E4%BB%B6%20B%20%E7%9A%84%E6%A0%BC%E5%BC%8F%E8%AE%BE%E7%BD%AE%E5%AF%B9%E6%96%87%E4%BB%B6%20A%20%E8%BF%9B%E8%A1%8C%E7%BC%96%E7%A0%81%EF%BC%9F%E2%80%9D.png)
我知道我可以使用 ffprobe,然后解析文本文件以获取文件 B 的编解码器信息,但有没有更简单的方法?
目标:我想在不重新编码的情况下将几秒钟的静音添加到数百个音频文件(具有不同的比特率和编码)中,因为我想在播放播放列表时在曲目之间有几秒钟的静音。由于 Android 上没有提供此功能的音频播放器(据我所知),我正在考虑将静音合并到文件本身中。
答案1
回答你的字面问题,不,ffmpeg 无法确定输入的编解码器和比特率,并将相同的设置应用于输出文件。
有几个原因导致它不容易实现:
- 您必须根据输入编解码器确定输出编码器。您无法始终知道原始文件使用了哪种编码器,因此不可能在所有情况下都选择完全相同的编码器。
- 选择相同的输入比特率可能会导致生成损失,因此用户应该自己为输出选择合适的比特率或质量级别。
- 通常支持保持采样率和音频通道数(或像素格式、视频的帧速率),但也存在特殊情况,例如,输入可能具有 5.1 音频流,但 ffmpeg 可以选择的唯一音频编码器仅支持立体声音频编码。
- 输入/输出编解码器与文件格式的组合有很多种,您无法保证给定的输入组合可以写入输出文件。
也就是说,对于像您这样的有限用例,一个解析文件信息(例如,使用mediainfo
或ffprobe
)并将其转换为 ffmpeg 设置的简单脚本就可以了。