【问题标题】:Alsa: snd_pci_readi() recordingAlsa:snd_pci_readi() 记录
【发布时间】:2018-07-13 07:10:03
【问题描述】:

我有一个专用线程,可以通过snd_pcm_readi() 捕获来自 Alsa 的音频。录制可以正常进行大约 30 分钟(每个文件持续一分钟),之后文件大小逐渐减小并导致“从音频接口读取失败 err = -32

if ((err = snd_pcm_readi(capture_handle, buffer, buffer_frames)) != buffer_frames)

{

        fprintf (stderr, "read from audio interface failed (%s)\n",err, snd_strerror (err));
            audio_outbuf_size = (err * snd_pcm_format_width(AUDIO_FORMAT)/ 8 * 2);
}

感谢任何帮助。 谢谢。

【问题讨论】:

  • -32 是 -EPIPE,这表示溢出。在这种情况下应该怎么办?
  • 我正在连续录制视频(每一分钟的持续时间),出现此错误“从音频接口读取失败 err = -32”后,视频文件大小逐渐减小,然后文件大小为 1kb 或 2kb不可播放的文件。请建议我如何克服“溢出错误”。
  • 溢出意味着您的程序读取样本的速度不够快,因此丢失了一些样本。在这种情况下应该怎么办?
  • 我怎样才能以正确的方式实现这一目标..?
  • 部分样本丢失怎么办?中止?重新开始?用零替换?

标签: real-time alsa libalsa


【解决方案1】:

要减少溢出的可能性,请增加缓冲区大小。为获得最佳效果,请使其尽可能大。

只要周期大小保持不变,延迟就不会改变。

【讨论】:

    猜你喜欢
    • 2018-09-19
    • 2021-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-08
    • 2014-08-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多