【发布时间】:2014-10-11 01:29:53
【问题描述】:
我有两个模拟音频通道(左和右)连接到 ALSA 设备,我让声卡进行采样。
结果是一个交错音频的数字流。当我尝试播放它们时会出现我的问题。一旦这些频道被交换,一旦没有。这似乎取决于首先采样的通道或播放开始的时间。
澄清我的情况:
我有三张声卡:卡 A 和 B 正在采样模拟音频,然后我通过 LAN 从每个卡 C 发送一个数字化音频通道。因此,例如我只将左声道从卡 A 发送到卡 C,同时我将右声道从卡 B 发送到卡 C。
在卡 C 上,我将这些数据包重新组合为交错流。所以我先采样(来自卡 A),然后从卡 B 采样。这样我可以像交错音频一样播放这个缓冲区。然后卡 C 正在播放此缓冲区中的数据。鉴于声卡开始向左声道播放样本,那么我应该没有问题。但有时它会交换频道,我不知道为什么。
我用 ARM 处理器控制这一切。
有没有办法可以访问 ALSA 的内部帧缓冲区,或者如何说首先播放流中的内容?
这引出了另一个问题,例如在 wav 格式中,播放器如何知道左声道的数据部分和右声道的数据部分?
【问题讨论】:
-
录音和播放必须从第一个(左)声道开始。我的水晶球告诉我,您正在使用其中一种嵌入式设备,其硬件和驱动程序都很糟糕。
-
奇怪的是,声卡似乎有时开始读取右声道的缓冲区,而不是左声道。 @CL - 你的 Palantir 离现实并不远,我们正在使用 CS4202-JQZ。你认为这可能是糟糕的硬件吗?
-
什么是 AC'97 控制器?
-
@CL 我不确定你在问什么,但 AC97 是音频编解码器的标准。 CS4202 符合此标准。