使用FFmpeg重新编码音频文件,修复异常长数据包时长问题
解决FFmpeg拆分音频长数据包问题
你的原始MP4音频流存在时间戳异常:同一个1024采样点的音频帧,一个被标记为180秒时长,另一个却是正常的0.023秒。常规重新编码命令会继承原始错误的时间戳元数据,导致长数据包无法被拆分。
用以下命令强制重建音频流并生成正确的数据包:
ffmpeg -i input.mp4 -c:a aac -b:a 192k -ar 48000 -ac 2 -fflags +genpts -af "aresample=frame_size=1024" output.mp4
命令参数说明
-fflags +genpts:强制FFmpeg丢弃原始异常的时间戳,重新生成符合标准的演示时间戳(PTS)-af "aresample=frame_size=1024":指定每个音频帧固定为1024采样点,结合48kHz采样率,每个数据包时长会稳定在≈0.0213秒,和正常帧保持一致-c:a aac:指定用AAC编码器重新编码音频,彻底重建整个音频流结构,避免继承原始文件的错误
验证结果
执行完命令后,用以下命令检查输出文件的帧信息:
ffmpeg -i output.mp4 -show_frames -select_streams a
确认所有帧的pkt_duration_time都在0.02秒左右,无超长数据包即可。
内容的提问来源于stack exchange,提问作者Ebraheem
相关产品推荐
相关产品推荐

