当前位置:编程学习 > C/C++ >>

h264 丢包花屏处理的一个想法

H264视频在分组网络中传输丢包不可避免,尤其在网络环境不好时传输h264码流,丢包会导致解码端花屏,马赛克严重,这方面的前沿技术是 FEC, NACK, 前者是 前向纠错技术,后者是重传,二者结合能很好的解决丢包引起的视觉效果,这东西一般小厂家都没有,如果想丢包时即使让画面停顿,也不要花屏,我想的最直接的办法是:一旦发现丢包,在下一个I帧到来之前,所有过来的包都丢掉,所以一旦发现丢包,做个标记,然后开始判断收到的rtp包是不是264 i帧, i帧的判断方法参考:
 
 
static bool isH264iFrame(byte[] paket)
    {
        int RTPHeaderBytes = 0;
 
        int fragment_type = paket[RTPHeaderBytes + 0] & 0x1F;
        int nal_type = paket[RTPHeaderBytes + 1] & 0x1F;
        int start_bit = paket[RTPHeaderBytes + 1] & 0x80;
 
        if (((fragment_type == 28 || fragment_type == 29) && nal_type == 5 && start_bit == 128) || 
fragment_type == 5 || fragment_type == 7 || fragment_type == 8)
        {
            return true;
        }
 
        return false;
   }
 
补充:软件开发 , C++ ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,