宇视GB28181平台对接SRS调试记录

一、问题:有现场需要宇视GB28181平台对接SRS,TCP取流,不能播放视频,报以下错误:

二、问题定位:

经查实际原因在这儿找不到H264的起始码,所以未能将视频数据插入列表:

三、问题解决:PS包对比,对比可播放的海康视频截图分析:见下图中绿色框部分为起始码即数据类型,绿框后跟音视频数据。

海康视频H264起始码符合上述代码,为4字节起始码00000001,而宇视视频推过来为3字节起始码000001,造成此处查找错误。可将红框部分做如下修改:并将接口replace_startcode_with_nalulen中的常量4改为3就可兼容两个厂家的设备了。

        if(video_data[index] ==0x00&&video_data[index+1] ==0x00&&

             video_data[index+2] ==0x01){

                 list_index.push_back(index);

             }

四、其它:

         1,宇视视频配置音频使能后视频不能播放了,经查下图:

选中部分为一个完整音频帧TAG,(灰色框内为此TAG总长度)。看粉色部分宇视为70,海康为AA:

下附TAG头说明:

Audio Tag 数据:

        1.首字节前4bit表示SoundFormat,即编码格式。

7= G.711 A-law logarithmic PCM此为宇视格式  10 (A)= AAC 此为海康格式 

       2.首字节第5、6 bit表示SoundRate(采样率) 0 = 5.5 kHz,1 = 11 kHz,2 = 22 kHz,3 = 44 kHz

       3.首字节第7bit表示SoundSize,即采样点的大小,仅适用于未压缩格式。压缩格式总是解码。0 = 8-bit samples 1 = 16-bit samples 

        4.首字节第8bit表示SoundType,即声音类型0 = Mono sound,   1 = Stereo sound

问题原因找到了:目前SRS只支持AAC音频格式,非AAC格式时不能播放。宇视技术称目前GB28181只支持G711,此时在SRS配置中将音频关掉,视频就可正常播放了。

我手上有海康的一款相机到如下配置可实现SRS的音频播放配置,这样音视频均可正常播放,不知道其它设备是否相似。

另:1,如果将此改为G711的格式,海康的设备SRS也播不出视频了。

 


版权声明:本文为DANFBAORE原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。