海思hi3516C+imx122板子,VLC直播或录像mp4后回放,声音都是一顿一顿的。

从底层开始一点一点排查。

打开audiocap.h中的调试开关://#define AUDIO_DEBUG_PCM1

1、从hisi sdk底层存为.pcm来听,感觉还是连续的,sample rate无论设置为8000还是44100,听起来都还是连续的。

这里发现mic的analog gain和digital gain设置为:

AGain=30,DGain=20比较合适。

 

#define AUDIO_DEBUG_AAC 1

2、单独存为.aac文件,发现听起来就有问题,速度不对,也就是sample rate不对,加速了。为了排除video的干扰,单独写了一个只有audio的驱动。设计了下面这个调试开关:

#define AUDIO_ONLY_DEBUG 1

# cat /tmp/live.log

TS:00:06:45 :gAencIn[0].enable=1,gAencIn[0].codec=81

TS:00:06:45 :Audiocodec=0x81,samplerate=44100,bits=16,ch=1,BytesPerFrm=1024,FrmNum=25,kbps=16,interval=11 ms

TS:00:06:45:Audio_Init(bMic=1,samplerate=44100,PtNumPerFrm=1764,AGain=30,DGain=20),ret=0

TS:00:06:45 :liveInit(),ret=0

TS:00:06:57 :liveUninit(),ret=0

TS:00:21:03 :gAencIn[0].enable=1,gAencIn[0].codec=81

TS:00:21:03 :Audiocodec=0x81,samplerate=44100,bits=16,ch=1,BytesPerFrm=1024,FrmNum=25,kbps=16,interval=11 ms

TS:00:21:03:Audio_Init(bMic=1,samplerate=44100,PtNumPerFrm=1764,AGain=30,DGain=20),ret=0

TS:00:21:03 :liveInit(),ret=0

TS:00:21:03 :rtmp_url=rtmp://127.0.0.1:1935/live/0

TS:00:21:03 :liveCreate(0),ret=0,live session num=1

#

# cat /tmp/

/tmp/live.log   /tmp/rec.log    /tmp/tcpsvr.log  /tmp/vos.log

/tmp/mount.txt  /tmp/rtxp.log    /tmp/vod.log

# cat /tmp/rtxp.log

TS:00:06:45 :rtspsvrInit(554), ret=0

TS:00:06:57 :rtspsvrUninit()

TS:00:06:57 :openrtxpUninit()

TS:00:21:03 :rtspsvrInit(554), ret=0

TS:00:21:03 :srs-librtmp version: 3.0.3

TS:00:21:03 :rtmp simple handshake success!

TS:00:21:03 :rtmp connect vhost/app success

TS:00:21:03 :RTMP_Init(),ret=0

#

 

测试时发现,aac压缩出来的文件播放时,声音被加速了,速度不对!

经确认,用AOT_AAC_LC来设置fdkaac就会导致这个问题,换成AOT_SBR就不会了。

       int aot =AOT_SBR;  //AOT_AAC_LC;

       if(aacEncoder_SetParam(handle, AACENC_AOT, aot) != AACENC_OK) {

              fprintf(stderr,"Unable to set the AOT\n");

              ret=-3;gotoEnd;

       }

同时发现,即使换成AOT_SBR格式算法,如果用44100作为sample rate,也一样会出现加速的现象。只能改为16000采样率。NOTE: Srs目前default是只支持44100的。没想到,VLC也不支持32000以下的采样率。只好换成32000作为sample rate。因为,44100采样率在播放时会加速。看来,业界最好的fdkaac encoder也有许多问题嘛。

用samplerate=32000+AOT_AAC_LC后,声音不连贯的情况有很大改善,不过还是有卡顿的现象。但我单独录下来的.aac文件用VLC来播放是连续的。

这说明audio没有丢帧,只是直播时,某些延时不当或是A/V pts不同步导致的。

从VLC统计来看,audio并没有丢帧,但video却有28个丢帧。

TS:00:09:09 :VI_PipelineInit(),ret=0.

TS:00:09:10 :gAencIn[0].enable=1,gAencIn[0].codec=81

TS:00:09:10 :Audiocodec=0x81,samplerate=32000,bits=16,ch=1,BytesPerFrm=1024,FrmNum=25,kbps=32,interval=32 ms

TS:00:09:10:Audio_Init(bMic=1,samplerate=32000,PtNumPerFrm=1280,AGain=30,DGain=20),ret=0

TS:00:09:10 :liveInit(),ret=0

TS:00:09:10 :Init gAudioPtsNow=141,gVideoPtsNow=101

TS:00:09:10 :!!!audio sync wait...   //audio的pts超过video,这说明video有丢包!

TS:00:09:10 :!!!audio sync wait...

TS:00:09:10 :!!!audio sync wait...

TS:00:09:18 :VI_ForceKeyFrame(1),ret=0

TS:00:09:18 :liveCreate(1),ret=0,live session num=1

TS:00:12:08 :Video Path[0],Capture continued 178s,4500frames,180 i-frames.FPS=25

TS:00:14:27 :liveDestroy(1),ret=0,live session num=0

#

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
https://gitee.com/Qyerp/OpenHiMini OpenHiMini 说明: 对应开发版地址: ├───────────── https://item.taobao.com/item.htm?ft=t&id=619546119474 ├───────────── 购买开发板的可以提供整套解决方案支持 ├───────────── 目前支持 hi3516ev300+IMX335 已实现功能 ├────────────── http-flv ├────────────── rtmp推流 ├────────────── http抓拍 ├────────────── http服务器 视频测试地址 ├──────────────http://192.168.1.230:10100/flv.html HTTPAPI ├──────────────HTTP抓拍 ├──────────────水平、垂直镜像 工程目录 ├──────────────HISDK 海思SDK库文件 ├──────────────jsoncpp json解析库 ├──────────────lib 一些开源项目的库文件 ├──────────────libcurl http客户端工具 ├──────────────libjpeg jpg编码,解码库 ├──────────────librtmp rtmp推流,拉流库 ├──────────────libuv 网络库 ├──────────────MiniBase 基础库 ├──────────────mp4v2 mp4(h264,aac)封装 ├──────────────opus 音频编码 ├──────────────OpenHiMini 主工程
海思hi3516dv300硬件设计用户指南是一本针对海思公司推出的hi3516dv300芯片的硬件设计的指导手册。该手册的目的是帮助用户了解hi3516dv300芯片的硬件设计要求和规范,并提供相关的设计指导和建议。 hi3516dv300芯片是一款高性能、低功耗的视频处理芯片,主要应用于视频监控、智能交通和安防等领域。硬件设计是确保芯片正常工作和发挥最佳性能的基础,因此对于使用hi3516dv300芯片的设计人员来说,掌握硬件设计指南是非常重要的。 在这本指南中,首先介绍了hi3516dv300芯片的主要特性和功能,包括处理能力、视频编解码、音频处理等。然后详细讲解了芯片的外部接口和引脚分配,包括视频输入、输出接口、音频接口、以太网接口等。同时,还对时钟、电源、存储器和外设等方面的设计进行了说明和建议。 此外,指南中还提供了关于PCB设计的一些建议,包括地域分布、信号电源分离、阻抗匹配、电磁兼容性等方面,帮助设计人员提高设计质量和可靠性。 总之,海思hi3516dv300硬件设计用户指南是一本重要的参考资料,它提供了关于hi3516dv300芯片硬件设计方面的详尽说明和建议,对于希望使用该芯片进行设计的用户来说是不可或缺的。通过认真阅读和遵循指南中的规范和要求,设计人员可以更好地实现hi3516dv300芯片的应用,提高产品的性能和可靠性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

草根大哥

进军大神程序员路上,谢谢支持!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值