艾编程的鲁小班

艾编程的鲁小班

18个粉丝

25

问答

17

专栏

32

资料

艾编程的鲁小班  发布于  2018-12-21 01:06:21
采纳率 12%
25个问答
一个爱技术的人
2342

海思HI3520D解码RTP音频

 
本帖最后由 wfjdemmye 于 2018-12-21 01:09 编辑

一,解决问题的思路
        在遇到音频流的时候,不管是什么格式的音频数据(PCMA,PCMU,AAC,MP4,等,格式很多。)
        首先应该是了解音频格式的数据在RTSP或者文件中,或者在其它地方的格式。
        本文以在RTSP中为例子,解析出完整的过程。希望能偶然帮到一些同学。

二,海思支持的音频格式
        以HI3520D为例子:mpp提供了对G711,G726,ADPCM的音频格式支持。并且支持原始音频文件(LPCM)的播放和录制。
        那么针对RTSP出来的PCMA/PCMU/AAC/MP3都需要软解成原始音频格式(PCM)才能放到海思Mpp提供的接口中。
        程序的大概思路就是如此了。
三,RTP中获取音频数据
        以AAC为例子,通常aac有LATM和ADTS格式传输或者存储。RTP中是以LATM格式存在的,而一般的解码接口是以adts格式的数据解码的,所以需要一个包的重组。
        1,从RTP中获取SDP数据
        从RTSP的服务端出来SDP的信息解析
                (,wireshark设置好过滤规则,用VLC演示播放流程,获取交互的包)




        如上有用的字段:

通过VLC查看的编码信息与SDP获得的信息可能不一致,实际按SDP的信息来初始化AAC或者封装AAC成音频文件。


        如上关键数据是配置将LATM转化成ADTS的重要材料。


四,海思音频部分的接口解析与使用
        采样点数是解码之后输入到HI_S32 HI_MPI_ADEC_SendStream的数据的字节数据的1/2
        举例:PCM 8K 单通道配置
        typedef struct hiAIO_ATTR_S
{
AUDIO_SAMPLE_RATE_E enSamplerate;  /*sample rate*/     
AUDIO_BIT_WIDTH_E  enBitwidth; /*bitwidth*/
AIO_MODE_E enWorkmode; /*master or slave mode*/
AUDIO_SOUND_MODE_E enSoundmode;  /*momo or steror*/
HI_U32 u32EXFlag; /*expand 8bit to 16bit */
HI_U32 u32FrmNum; /*frame num in buffer*/
HI_U32 u32PtNumPerFrm; /*number of samples*/
HI_U32 u32ChnCnt;
HI_U32 u32ClkSel;
}AIO_ATTR_S
        u32PtNumPerFrm = 160;
        AUDIO_SOUND_MODE_E =momo ;

       
        PCM 16K 双通道 16bit
        u32PtNumPerFrm = 2048;
        AUDIO_SOUND_MODE_E =momo ;

        依次类推。。。


        当数据变大之后,音频解码器播放PCM可能出现间歇式阻塞的情况,
        这时间需要使用HI_MPI_ADEC_ClearChnBuf和HI_MPI_AO_ClearChnBuf及时去清空缓存。

易百纳技术社区文件: g711.zip
下载
易百纳技术社区文件: pcm-g711a-capture-play-release.zip
下载
易百纳技术社区文件: pcm-capture-play.zip
下载
我来回答
回答0个
时间排序
认可量排序
易百纳技术社区暂无数据
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
+ 添加网盘链接/附件

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
相关问答
无更多相似问答 去提问
举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

易百纳技术社区