首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 媒体动画 > 多媒体 >

请大家帮忙分析:mpeg文件在暂停后继续播放时,会出现音视频不同步.该如何处理

2012-03-24 
请大家帮忙分析:mpeg文件在暂停后继续播放时,会出现音视频不同步.情况介绍:1. 程序在普通播放的情况下,没

请大家帮忙分析:mpeg文件在暂停后继续播放时,会出现音视频不同步.
情况介绍:
1. 程序在普通播放的情况下,没有非同步的现象.能够理想的播放完成.
2. 我需要处理的是文件数据流,解码播放部分是硬件完成的.硬件要求我按照 给定的结构体 阻塞式的push 数据.
3. 硬件给定的结构体中要求我填写 PTS 信息.硬件会根据 PTS 实现同步播放.通过情况( 1 )我认为 PTS 的计算是正确的.
4. 暂停操作是直接 暂停解码芯片的,暂停操作会让数据的 push 进入阻塞.暂停是不会丢失数据的.
5. 我找到了2个mpeg 文件(a, b文件),a文件的 PTS 是有序递增的.b文件的 PTS 是随机的.

暂停现象:
1. 播放 a文件的时,无论我如何频繁的进行暂停操作,播放都是同步的.
2. 播放 b文件的时,我每次进行暂停操作都会使视频流的解码速度过快.当频繁暂停后,不同步现象会相当明显.

补充说明:
mpeg 文件中,并不是每个 PES 都会记录 PTS,有些 PES 的 PTS 是 0.这些 PTS 是通过推导出来的,但是我在分析时,并没有推导这些为 0 的 PTS.不知道是否因为这个原因导致了暂停后,播放不同步呢?

或者大家认为其他的情况造成了播放不同步,请大家帮忙分析.先谢谢了.

ps:随便请教 PTS 推导公式是否为:
  PTSn = (PTSn-1) + (9000*0.7); // PS流中的
  PTSn = (PTSn-1) + (9000*0.1); // TS流中的

[解决办法]
“并没有推导这些为 0 的 PTS”

为什么不推导测试下
[解决办法]
“都会使视频流的解码速度过快”
是播放速率过快还是视频流相对音频流播放到前面去了。
我也觉得可能就是你pts的计算问题
[解决办法]
以前用ts传输xvid视频流时也碰到过暂停后不能同步的问题,后来检测了视频流关键帧,并在FillBuffer()中标识出来,这个问题就解决了。
可能和你碰到的问题不一样,仅供参考。

热点排行