NMM视频技术(旧)

 找回密码
 成为会员
搜索
查看: 8701|回复: 12

[AVC(H.264)] 封装x264+aac时,播放的视频画面和音频明显不同步

[复制链接]
发表于 2009-11-3 10:53 | 显示全部楼层 |阅读模式
在封装x264+aac时,产生的文件,用windows media player 播放视频总是会比音频短上个2秒左右,用一些别的播放器播放时还会出现前面1到2秒花屏。不知道什么原因。用MPEG4+acc封装产生的文件正常。不知道这样的问题是x264什么参数造成的?
发表于 2009-11-3 11:08 | 显示全部楼层
您的说明还不够详细。
“x264+aac”封装为什么容器?是MP4还是MKV。您用x264输出的什么格式?是RAW还是MP4。您的AAC输出的是什么格式?是RAW还是MP4?有没有正确处理音频延迟?
您说的“MPEG4+AAC”,MPEG4是标准名不是编码器名,x264和XviD、DivX都是MPG4标准下的编码器,请问您具体用的什么编码器、输出什么格式呢?

一般来说x264本身是不会造成不同步的。但如果您输出的RAW格式的话,因为其中不包含fps的信息,封装的时候需要指定fps才行,有些容器如果不手动指定fps的话就会默认用25fps来封装,这样一来如果片源不是25fps,就会造成不同步。
 楼主| 发表于 2009-11-3 14:06 | 显示全部楼层
回复 2# dgwxx
是我没有说明清楚,我是用ffmpeg解码在用h264和aac编码的输出格式mp4,自己设定的h264参数。
 楼主| 发表于 2009-11-3 14:10 | 显示全部楼层
回复 2# dgwxx

是我没有说明清楚,我是用ffmpeg解码在用h264和aac编码的输出格式mp4,自己设定的h264参数。

您的说明还不够详细。
“x264+aac”封装为MP4,
有没有正确处理音频延迟?
音视频同步处理过的
MPEG4是在ffmpeg下是这么指定的编码器名,
因为其中不包含fps的信息,封装的时候需要指定fps才行
fps我是指定了的29.97,我觉得就是h264的参数设置的问题吧,我把参数设置贴出来,麻烦你给看看
video_enc->max_b_frames = 4;
                        video_enc->me_method=ME_HEX;
                        video_enc->me_subpel_quality=7;
                        video_enc->gop_size=300;//
                        video_enc->keyint_min=25;
                        video_enc->scenechange_threshold=40;
                        video_enc->i_quant_factor=0.71;
                        video_enc->qcompress=0.6;
                        video_enc->qmin=10;
                        video_enc->qmax=51;
                        video_enc->max_qdiff=4;
                        video_enc->directpred=3;
                        video_enc->refs = 10;
                        video_enc->flags2|=CODEC_FLAG2_BPYRAMID;
                        video_enc->flags2|=CODEC_FLAG2_8X8DCT;
                        video_enc->flags2|=CODEC_FLAG2_WPRED;
                        video_enc->trellis =1;
发表于 2009-11-3 19:22 | 显示全部楼层
应该和x264的参数没有关系,请检查你的前期处理
发表于 2009-11-4 00:59 | 显示全部楼层
>用一些别的播放器播放时还会出现前面1到2秒花屏
关掉pyramid b这类容易出错的东西...
>视频总是会比音频短上个2秒左右
得到elementary的264,和音频封装到指定容器时,注意正确设置视频轨的帧速。
记住决定视频在何时显示哪一帧的是有帧速,或者timecode决定的;而音频轨没有帧这个概念,直接与时间相连。所以出现不同步问题时,第一件要检查的项目,就是帧速或timecode是否正确了。
 楼主| 发表于 2009-11-4 10:59 | 显示全部楼层
我设置的帧率是29.97,但是我播放的时候是32了,这是造成播放不同步的原因
 楼主| 发表于 2009-11-4 11:00 | 显示全部楼层
回复 5# VempX


    我正在检查参数以前和之后的处理逻辑,谢谢回复
 楼主| 发表于 2009-11-4 11:06 | 显示全部楼层
回复 6# akiduki


    我看了20秒,帧率29.97的文件我得到了600帧,按照这种设置应该是20秒多一点的视频,但是我播放的时候看到 (图片是windows7中看到的帧率),按照这种帧率播放的话是18.87秒。
未命名.jpg
发表于 2009-11-4 12:10 | 显示全部楼层
您在mux的时候可以使用mp4box来指定fps的(假设您用mp4box做mux,编码器输出RAW格式数据)。
mp4box -add video.264:fps=29.970 -add audio.aac -new muxed.mp4
 楼主| 发表于 2009-11-4 15:13 | 显示全部楼层
回复 10# dgwxx


    我把cqp设置了就基本上不出现上面的不同步情况了。不过因此也改变了文件的大小
 楼主| 发表于 2009-11-4 16:26 | 显示全部楼层
编码还有花屏的现象,这是我用h264编码win7中实例视频动物世界的画面。请问这是什么原因?
未命名.jpg
发表于 2009-11-9 05:24 | 显示全部楼层
ref开太高了
win7的DSHOW默认开硬解的
您需要登录后才可以回帖 登录 | 成为会员

本版积分规则

小黑屋|手机版|NMM视频技术

GMT+8, 2025-5-5 23:54 , Processed in 0.269666 second(s), 17 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表