将 m4a 转换为 wav,但尊重编辑列表 ffmpeg

问题描述 投票:0回答:1

我正在使用 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

ffmpeg
1个回答
0
投票

这里的问题不是编辑列表应用程序。 WAV 格式没有时间戳,因此任何初始延迟都无法以编程方式存储在 WAVE 文件中。相反,您必须生成与初始延迟相对应的无声音频数据。您可以使用 aresample 过滤器。

ffmpeg -i short.m4a -af aresample=first_pts=0 -ac 1 -ar 16000 -acodec pcm_s16le out.wav

© www.soinside.com 2019 - 2024. All rights reserved.