SDK也将继续改进,我们的huangpu application在播放该节目时,没有问题,估计SDK的处理有不一致的地方,将参考。
节目声音间隔性停顿问题分析
原创jiangjqian ©著作权
©著作权归作者所有:来自51CTO博客作者jiangjqian的原创作品,请联系作者获取转载授权,否则将追究法律责任
客户码流wuhan\levira42-2min.mpg,其中有一个节目test1,Video为H.264格式,Audio为MPEG-2。
通常播放第一个循环后,声音或者没有,或者出现间隔性停顿。
把文件stb225\src\comps\phStbAv\src\phStbAv_callbacks.c中的
phStbAv_VideoEventCallback()和
phStbAv_AudioEventCallback()得到的各种事件打开,发现播放过程中频繁出现:
AudioEventCallback: tmdlAudio_EventIODataExhausted
即音频输入数据消耗殆尽。
但是,相同的情况在XXX程序上并没有发生。
检查发现,XXX程序在码流结束时会停止音视频,码流开始后重新启动音视频解码。
打开XXX的Trace开关,发现XXX监测到码流结束时发现Pat version从15变到30之后到0。因此采取了重启服务的过程(包括reset video & audio 解码)。
这样看来XXX的良好表现只是一个巧合,如果把pat的监测关闭,其结果和客户应用,甚至exStbDemo程序一致,属于SDK 音视频同步问题。
检查音视频同步机制,为Pts lock模式,改成其它模式没有改善。
(见:stb225\src\comps\phStbAv\src\phStbAv.c
videoSyncMode初始设置和在phStbAv_SetSyncMode()
应用程序可以通过DirectFb api进行设置,如下:
vidAttr.video.features |= PH_STBAV_FEATURES_VIDEO_PTSLOCK;
gfx_videoProvider[which].instance->SetAttributes(gfx_videoProvider[which].instance, vidAttr);
)
另外一个发现就是:如果音视频流从demux直接导入decoders(即不enable dvr),没有这种问题。
建议该问题的处理方法可以参考XXX,支持pat的变化监测达到重启服务的效果。
上一篇:正则表达式
下一篇:YUV输出幅度过高问题
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
Redis(设计与实现):23---RDB持久化之自动间隔性保存(save选项、struct saveparam、dirty属性、lastsave属性)
一、自动间隔性保存介绍(save选项)前面一篇文章介绍了SAVE、BGSAVE命令,其中BGSAVE命令可以在不阻塞服务器进程的情况下执行,所以Redis允许用户通过设置服务器配置的save选项,让服务器每隔一段时间自动执行一次BGSAVE命令save选项的格式用户可以通过save选项设置多个保存条件,但只要其中任意一个条件被满足,服务器就会执行BGSAVE命令 如果用户没有主动设置...
自动间隔性保存 save选项 struct saveparam dirty属性 lastsave属性