QQ物联对接

以下是QQ物联音视频相关参数:

我方APP音视频参数

视频:H264

音频:PCM (8K采样,16bit,单通道)


中间件对外提供接口:

QQ物联连接:http://iot.open.qq.com/wiki/index.html#!CASE/IP_Camera.md

接口封装参照QQ物联如下:

//初始化

inteq_initDevice();

 

//加载AV模块

inteq_start_av_service(eq_av_callback_t *cb);

 

//对接视频数据

inteq_set_video_data(unsigned char *pcEncData,int nEncDatalen,int nFrameType,intnTimeStamps,int nGopIndex,int nFrameIndex,int nTotalIndex,int nAvgQP);


//对接音频数据

int eq_set_audio_data(eq_audio_encode_param *param, unsigned char *pcEncData, int nEncDataLen, int nTimeStamps);


//缺绑定、报警上传,仍在doing。。。。。。。。。。





现象:APP播放出声音有一顿一顿的现象,不连贯。

排查过程:

1)没有丢包解码出来的PCM数据也是正常的,一开始以为Faad2解码性能太慢

2)单独测试Faad2解码接口发现一秒钟解码30多包数据,这个速度完全够了排除这个可能性

3)怀疑手机性能低,换手机,关掉视频流都不行,排除这个可能性

4)抓日志发现APP获取网络音频队列总是溢出,说明APP消耗音频数据慢与供给

5)发现APP固定一秒钟消耗5包音频数据,网络每秒供给7-8包数据,原因找到。

原因:QQ物联给的是8KHZ,单声道的AAC数据,我方APP需播放8KHZ,单声道PCM数据,咋一看没有问题,把AAC解码成PCM扔给APP的android播放就可以了。但是QQ物联每次采样为128ms,APP端每200ms消耗一次,意味着QQ物联一秒钟给了8包数据,而APP每秒只能消耗5包。


解决方案1:

通过sem_init,sem_timewait,TIME_ADD,手动调试APP消耗间隔时间


解决方案2:

8KHZ,16bit,单声道,即每秒消耗:8000*2*1=16000个字节。200ms消耗3200个字节,即每秒消耗5包,每次消耗3200个字节。这样一算可以不用手动调试APP的消耗间隔时间,只要每次消耗时给足3200个字节即可。

我们再算一下QQ物联的,8KHZ,16bit,单声道,即每秒采集:8000*2*1=16000个字节。但是它一次采样128ms,则每次采样数据为:16000*(128/1000)=2048字节。故可以做个buf攒足了3200个字节在给APP的android接口播放。





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值