我正在使用 ffmpeg 将 m4a 文件转换为 wav。问题是 m4a 文件有一个 edts 列表,使音频稍后开始。我需要将其包括在内,以便 wav 在那段时间保持沉默。音频必须正确同步。有任何想法吗?我尝试过这些:
ffmpeg -i short.m4a -acodec pcm_s16le -ac 1 -ar 16000 -use_editlist 1 out.wav
ffmpeg -i short.m4a -acodec pcm_s16le -ac 1 -ar 16000 -advanced_editlist 0 out.wav
两者都不走运。有任何想法吗?这是文件
https://drive.google.com/file/d/10x3QFjT_67ByfgXtiNFE1RlLAcwG68e5/view?usp=sharing
这是调试器,您可以在其中看到它在开始时增加了时间。只需上传 m4a 文件,您就可以看到有关音轨的信息。如果你这样做
ffprobe file.m4a
,你也可以看到它: Duration: 00:00:14.84, start: 0.167007, bitrate: 228 kb/s
mp4检查器: https://gpac.github.io/mp4box.js/test/filereader.html
这里的问题不是编辑列表应用程序。 WAV 格式没有时间戳,因此任何初始延迟都无法以编程方式存储在 WAVE 文件中。相反,您必须生成与初始延迟相对应的无声音频数据。您可以使用 aresample 过滤器。
ffmpeg -i short.m4a -af aresample=first_pts=0 -ac 1 -ar 16000 -acodec pcm_s16le out.wav