ffmpeg 修改音频长度/大小(拉伸或收缩)

mid*_*ido 3 audio ffmpeg

我正在开发一个网络应用程序,人们可以在其中录制视频。我已经能够成功地将音频和视频块发送到服务器,我正在尝试将它们组合起来并作为单个正确的文件返回。

我的问题是,如果录制是一小时,合并块后

视频长度:1:00:00,音频长度:00:59:30,

现在,这不是音频没有被记录的问题(我已经检查过),问题是,不知何故,当我合并音频块时,它会缩小,

我发现这是渐进式同步问题,随着时间的推移它变得越来越糟。

我在网上搜索了解决方案,大多数地方都说async,我尝试过使用它,但无济于事,下面的用法是否正确?

ffmpeg -i audio.wav -async 1 -i video.webm -y -strict -2 v.mp4

(v.mp4 是我提供给用户的最终文件。)

mid*_*ido 5

找到了解决方案(或临时修复,取决于您如何看待它),

它涉及的组合ffmpegffprobe...我已经做音频streching(比率<1)

ffprobe -i  a.mp3  -show_entries  format=duration  -v quiet  -print_format json
ffprobe -i  v.mp4  -show_entries  format=duration  -v quiet  -print_format json
ffmpeg  -i a.mp3 -filter:a atempo="0.9194791304347826" aSync.mp3   // audio is being stretched. 
ffmpeg  -i aSync.mp3 -i v.mp4 final.mp4 
Run Code Online (Sandbox Code Playgroud)