收藏
回答

录制的音频缓冲区大小不正确,怎么通过SDK更改录制的缓冲区大小?

环境:全志V3S,linux,微信 linux SDK

问题:全志V3S,linux环境下,通过alsa录音,缓冲区设置成640,会造成 数据满,取数据不及时的情况,缓冲区设置成1280大小是可以的。但是微信SDK期望一次传输640

尝试解决:

1、硬件设置alsa一次采集的数据大小就是640个字节,但是频繁出现取数据不及时的情况(线程已经延迟很低了)

2、硬件尝试alsa一次采集数据大小640*2个字节,然后通过微信的发送接口分两次发送但还是会出现取数据不及时的情况


3、尝试通过open_input_stream 接口函数修改缓冲区大小,但是没有效果


请问通过SDK的那个接口能改变微信SDK一次发送缓冲区的大小?

回答关注问题邀请回答
收藏

1 个回答

  • 高
    02-02

    你可以根据你的硬件来采集,自己做一个 buffer 存起来,条件够了再给 SDK 即可。

    02-02
    有用
    回复 2
    • 高
      02-02
      SDK 期望的 640 字节,其实是就是 20ms 的数据长度,至于这 20ms 的数据你底层是每 20ms采集一次,还是每 1ms 采集一次,可以根据你们实际情况来。
      02-02
      1
      回复
    • Jaymin
      Jaymin
      02-03回复
      根据你的思路,我做了一个缓冲区。一个线程70ms取一次录音数据640*4个字节(如果大于75ms取数据,linux提示取数据不及时)。另一个线程2ms调用SDK发送一次640个字节。但是还会出现漏掉的情况。然后我统计了一下SDK发送640个字节用时,大概是20ms,这就会导致部分音频数据漏掉,您帮忙看下。
      02-03
      回复
登录 后发表内容
问题标签