llsh

llsh

0个粉丝

20

问答

0

专栏

3

资料

llsh  发布于  2017-04-26 11:32:15
采纳率 0%
20个问答
2720

关于音频帧合成的疑惑

 
在3516上,要开启ANR只能把采样点设成80或160. 因为之前的音视频帧中的音频数据长度都是320,所以现在要把两帧160长度的音频帧合成一帧320长度的帧,再HI_MPI_AENC_SendFrame去编码。
我的思路是获取第二帧的时候,把数据追加到第一帧的后面。即memcpy(stFrame1.pVirAddr[0]+strlen(stFrame1.pVirAddr[0]),stFrame2.pVirAddr[0],stFrame2.u32Len);
或者memcpy(stFrame1.pVirAddr[0]+stFrame1.u32Len,stFrame2.pVirAddr[0],stFrame2.u32Len);
以上两种都在程序运行初期能够正确合成,编码后的长度也是320.但是在合成音视频帧的时候就出错了。出不了图像。之后就一直报错,我在怀疑是不是不能够这样直接把数据追加在后面,有没有做过的大神指点一下呢???
我来回答
回答14个
时间排序
认可量排序

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2017-04-26 11:49:49
认可0
内存越界是一定了

如果要拼帧, 那么要先申请一个够大的stFrame, 然后把两帧的数据分别copy进去,然后再send去AENC

llsh

0个粉丝

20

问答

0

专栏

3

资料

llsh 2017-04-26 14:22:05
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=48768&ptid=14976]zhuangweiye 发表于 2017-4-26 11:49[/url]
内存越界是一定了

如果要拼帧, 那么要先申请一个够大的stFrame, 然后把两帧的数据分别copy进去,然后再se ...[/quote]

我这样申请对吗?
mlen = sizeof(AUDIO_FRAME_S) + stFrame1.u32Len + stFrame2.u32Len;
pstFrame = malloc(mlen);

申请完后的pstFrame->pVirAddr[0]为NULL

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2017-04-26 14:47:57
认可0
本帖最后由 zhuangweiye 于 2017-4-26 14:53 编辑

[quote][url=forum.php?mod=redirect&goto=findpost&pid=48775&ptid=14976]llsh 发表于 2017-4-26 14:22[/url]
我这样申请对吗?
mlen = sizeof(AUDIO_FRAME_S) + stFrame1.u32Len + stFrame2.u32Len;
pstFrame = ma ...[/quote]

海思模块使用的音视频帧不是用malloc来分配的, 必须是MMZ的内存

一般的步骤是

HI_MPI_VB_CreatePool()
while(1)
{   
    HI_MPI_VB_GetBlock()
    HI_MPI_VB_Handle2PhysAddr()
    HI_MPI_SYS_Mmap()
    HI_MPI_VB_Handle2PoolId()
    填写stFrame结构
    memcpy() copy数据
    HI_MPI_XXX_SendFrame()
    HI_MPI_SYS_Munmap()
    HI_MPI_VB_ReleaseBlock()
}
HI_MPI_VB_DestroyPool()

具体参数可以参考文档

llsh

0个粉丝

20

问答

0

专栏

3

资料

llsh 2017-04-26 14:58:42
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=48779&ptid=14976]zhuangweiye 发表于 2017-4-26 14:47[/url]
海思模块使用的音视频帧不是用malloc来分配的, 必须是MMZ的内存

一般的步骤是
[/quote]

那就是对的呢。之前一直都是320的,我这是要开ANR,才把采样点改成160.
刚刚测试了下,提示的是get ai frame timeout。这个是我自己加的提示。
用select函数检查fd,fd由HI_MPI_AI_GetFd()得到,超时时间1秒,之前是每次触发select会获取ai帧,然后送去aenc,然后获取编码后的数据,写音视频avbuff。
我现在改成触发2次select后,把2帧音频合成一帧传给aenc会出现超时现象,后面改成触发2次后把第二帧数据传给aenc,不合成,也是超时。把超时时间改成5秒,也是超时。
select触发的时候,每次都有取出ai帧,为什么一段时间后ai的fd会没有响应呢

llsh

0个粉丝

20

问答

0

专栏

3

资料

llsh 2017-04-26 19:38:58
认可0
问题解决了,是因为获取了帧没有Release的原因。
随之而来的新问题是,两帧合成后,声音有很大杂音,大到听一句话变成断断续续的。这是为什么

llsh

0个粉丝

20

问答

0

专栏

3

资料

llsh 2017-04-27 11:30:16
认可0
上面的问题解决了,是因为地址偏移量有问题。现在合成之后的帧听起来是没问题了,但是开启ANR后噪声似乎比不合成的时候多了,有时候好像会听到电流声。

llsh

0个粉丝

20

问答

0

专栏

3

资料

llsh 2017-04-27 14:04:44
认可0
噪声的问题是因为两帧合成后会出现回音,且回音只会在开启ANR的时候出现。在说话的时候,前两三秒说的回音会出现两次,导致听起来像噪声。回音很小,仔细听才听出来。不知道是为什么只会在开启ANR的时候出现。

llsh

0个粉丝

20

问答

0

专栏

3

资料

llsh 2017-04-27 14:52:30
认可0
并没有接AO设备,是接耳机到pc听的。。。开了Aec跟预料一样的没效果。
主要是合成帧在不开启ANR是OK的,开启ANR后会有2次回音觉得很奇怪

zhanweizhao

0个粉丝

6

问答

0

专栏

3

资料

zhanweizhao 2017-04-27 15:31:52
认可0
楼主,你的3516a用的是内置的audiocodec还是外接的codec获取的音频数据,


我买了一块3516a的板子,使用内置audiocodec,使用sample_audio跑起来,先录制音频再播放,没有声音,
也不知道是录制有问题,还是播放有问题,能指点下吗

llsh

0个粉丝

20

问答

0

专栏

3

资料

llsh 2017-04-27 15:53:48
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=48841&ptid=14976]zhanweizhao 发表于 2017-4-27 15:31[/url]
楼主,你的3516a用的是内置的audiocodec还是外接的codec获取的音频数据,


[/quote]

我用的是3516不是3516a,应该是内置的吧。。。我拿到的时候已经是能听的了,只是改改bug

zhanweizhao

0个粉丝

6

问答

0

专栏

3

资料

zhanweizhao 2017-04-27 15:59:03
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=48845&ptid=14976]llsh 发表于 2017-4-27 15:53[/url]
我用的是3516不是3516a,应该是内置的吧。。。我拿到的时候已经是能听的了,只是改改bug[/quote]

是直接跑sample中的音频demo就能听到声音吗

llsh

0个粉丝

20

问答

0

专栏

3

资料

llsh 2017-04-27 16:00:42
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=48846&ptid=14976]zhanweizhao 发表于 2017-4-27 15:59[/url]
是直接跑sample中的音频demo就能听到声音吗[/quote]

我没有去跑sample,是已经做好的成品给我改bug呢。

zhanweizhao

0个粉丝

6

问答

0

专栏

3

资料

zhanweizhao 2017-04-27 17:20:44
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=48848&ptid=14976]llsh 发表于 2017-4-27 16:00[/url]
我没有去跑sample,是已经做好的成品给我改bug呢。[/quote]

对了,你们音频用的什么编码格式,传输用的是live555吗

llsh

0个粉丝

20

问答

0

专栏

3

资料

llsh 2017-04-28 09:11:01
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=48863&ptid=14976]zhanweizhao 发表于 2017-4-27 17:20[/url]
对了,你们音频用的什么编码格式,传输用的是live555吗[/quote]

编码格式??用G711格式编码。 不是用live555
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

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

Markdown 语法

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

举报类型

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

详细说明

易百纳技术社区