dwing吧 关注:5,638贴子:88,441
  • 4回复贴,共1

NeroAAC带来的音频延迟问题

只看楼主收藏回复

音频有损压缩会带来延迟,似乎是开头多了一定时间
测试文件:The.Big.Bang.Theory.S01E01.720p.BluRay.x264-SiNNERS.mkv
根据MediaInfo信息,源文件的音频流和视频流都没有延迟值,播放同步,音频时间长度为:
22:58.378 eac3to extract to dts
分别用eac3to和ffmpeg管道传输给NeroAacEnc(1.5.4.0)进行压缩,q0.2,时间分别为
22:58.517 eac3to pipe to NeroAacEnc
22:58.517 ffmpeg pipe to NeroAacEnc
可以看到两个m4a生成文件都多了139ms的延迟
另外所带的chapter信息都为空,eac3to生成的m4a码率比ffmpeg的要高一点点,奇怪
好像NeroAacEnc是使用chapter信息来标注开头多了多少长的延迟信息?
将ffmpeg生成的m4a与视频流mux成新的mkv,不写delay值,生成的文件音频多了:
Delay relative to video : 31ms
查看视频,似乎影音同步,
在mux时的mkvmerge GUI窗口的音频delay处手动填入-139,生成的文件音频多了:
Delay relative to video : 20ms
查看视频,似乎音频比视频提早几百毫秒,声音快了一些
问题:
0.这个自动多出来的延迟值是根据 https://trac.bunkus.org/ticket/715 这个原因自动添加的吗?
1.假设源文件经ffmpeg系的解码器解码出的影音数据是同步的,要确保输出正确同步,正确的做法是直接将m4a直接丢入mkvmerge GUI,不填延迟值?mkvmerge会自动处理延迟?
2.接上一条,如果需要填延迟值,难道用文件时间长度做减法所算得的数值是错误的?
3.如果减法算得的数值是正确的延迟时间,ffmpeg/eac3to/mkvmerge有没有快捷的方法自动获取这个差值?这样批处理等命令行自动填入,免除凭感觉手动填入的不确定性
4.假设源文件播放没问题,但经ffmpeg系的解码器解码出的数据存在延迟问题,这个数据只能靠人类观看凭感觉来手动填写delay值?


IP属地:浙江1楼2014-05-23 22:15回复
    这个问题以前研究过,如果是nero出来的mp4,里面带了延迟信息,只是部分播放器或解码器会忽略这个延迟,结果头上就会多一段空白。
    如果转mkv,貌似mmg会处理,但是一样会有播放器的问题


    IP属地:美国2楼2014-05-23 22:26
    收起回复