Had*_*ian 3 audio video ffmpeg
我是一个新手 ffmpeg 用户,试图将 h.264 视频与辅助 .wav 评论音轨混合,而无需在视频端重新编码任何内容。视频的音频格式为 .aac。
我使用 Bandicam 来录制镜头;有一个设置可以同时录制一个单独的 .wav 文件(评论)。
当我最初试图弄清楚这一点时,我打开了一个线程(底部的链接)并且对响应的用户的帮助感到非常兴奋。答案似乎完全满足了我的问题。但是,现在我有一个新问题,因此我想公开询问它。
当我尝试将评论多路复用回视频时,某些录音会返回我在标题中提到的错误。“在找到 END 元素之前输入缓冲区已耗尽”是错误。文件完成混合,但如果错误发生的次数足够多,视频中就会出现明显的视频/音频不同步。我将我的 FFMPEG 可执行文件更新为最新版本,之前有用的灵魂指出我可能有“格式错误的音频流”。
但同样,(1) 不是全部,只有一些,并且 (2) 当我将 .mp4 加载到 Movie Studio 时,两个音频流(原始录音音频和评论)听起来都完美无缺。所以我很想说 ffmpeg/avanti 是罪魁祸首。
无论如何,我不知道解决方案是什么。如果您有任何想法,请帮助。
AAC 音频由帧组成。每个框架都包含各种类型的元素。每帧中的最后一个元素是 END 元素。您收到的错误消息表明 FFmpeg 已调查该框架但尚未找到 END 元素。因此,它会在 remux 期间跳过该帧,如果发生太多这样的帧,最终会中断同步。所以这里有一些尝试来解决这个问题。
#1保留原始时间戳
ffmpeg -copyts -i video.mp4 -i audio.wav -map 0 -map 1:a -c:v copy -c:a:0 copy -c:a:1 aac video-new.mp4
Run Code Online (Sandbox Code Playgroud)
#2忽略流错误并保留原始时间戳
ffmpeg -copyts -err_detect ignore_err -i video.mp4 -i audio.wav -map 0 -map 1:a -c:v copy -c:a:0 copy -c:a:1 aac video-new.mp4
Run Code Online (Sandbox Code Playgroud)
#3编码视频的音频但保留由于损坏的帧而造成的间隙
ffmpeg -i video.mp4 -i audio.wav -filter_complex "[0:a]aresample=async=1:min_comp=0.02[a]" -map 0:v -map "[a]" -map 1:a -c:v copy -c:a:0 aac -c:a:1 aac video-new.mp4
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
4961 次 |
最近记录: |