问题标签 [alsa]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
4217 浏览

python - Python/FFMPEG 命令行问题

我在 Python 脚本中运行 FFMPEG 命令时遇到问题。当我从终端运行以下命令时,我可以从连接的网络摄像头 (Logitech C310) 流式传输视频和音频,并输出到文件“out.avi”而不会出现任何错误。

当我在下面的 Python 脚本中运行相同的命令时,

它给了我错误:

任何人都可以阐明这里可能发生的事情吗?我试过使用 os.system() 和 subprocess.call() ,它给了我同样的错误。我不确定从哪里开始解决这里可能出现的问题。我尝试搜索“video4linux2 找不到 codec_id 0,pix_fmt -1 的正确格式”错误,但找不到任何一致的内容。

我还尝试将“ffmpeg -f ...”命令放在shell脚本“test.sh”中,并赋予它可执行权限。然后我打开终端,运行“./test.sh”,它就可以工作了。当我尝试从我的 Python 脚本中调用命令“./test.sh”时,我会像以前一样留下原始错误。这是我使用 test.sh 脚本尝试的 Python 命令:

0 投票
1 回答
12531 浏览

c - 在 Linux 中用 C 语言获取主音量

我正在尝试检索(可能稍后设置)Linux 中的主音量。我正在使用 PulseAudio,但理想情况下它也适用于 ALSA。

我发现这篇关于如何设置音量的帖子非常有用,并且从中我能够推断出 snd_mixer_selem_get_playback_volume() 的存在以检索当前设置。然而,在我的系统上,这似乎给了我错误的读数 - 混音器程序显示 100%,最高约为 66%。

如果我打开 pavucontrol,我可以看到这个输出设备的音量与我从这里得到的读数相匹配,所以我假设它给了我硬件音量设置,而不是我想要的全局主音量。

0 投票
1 回答
1518 浏览

linux - 如何在 Linux 中创建人工麦克风输入?

我正在做一个音频识别项目。

为了测试,我希望能够有一个程序:

  • 从文件加载音频数据
  • 将它提供给 Linux 内核,就好像它来自麦克风一样
  • 让任何对麦克风进行采样的用户空间程序从我的文件中获取数据。

这在 Linux 中是否可能而无需编写新的内核模块?

0 投票
2 回答
2571 浏览

c - 是否可以使用 ALSA 同时捕获麦克风和线路输入?

对 ALSA 不是很熟悉,但我支持使用它的应用程序。

是否可以同时录制来自麦克风和线路输入的音频?不一定要混合音频,尽管这是已请求的可能性。两者都可以设置为记录并使用 ALSA 单独读取吗?

关于 ALSA 的文档并不是很有帮助,这基本上是我第一次在 Linux 上使用 ALSA 进行混音。

任何和所有的帮助将不胜感激;希望过去有人做过类似的事情,或者有一个样本可以分享,或者有一个链接可以为我指明正确的方向。

0 投票
2 回答
501 浏览

c++ - 播放创建的 Audio-Data 有噪音和周期性的咔哒声

我编写了一个应用程序,它播放来自硬件的声音(就像一个充满一定频率的正弦波的环形缓冲区)。一切正常,我可以正确播放创建的声音,除了周期性的点击(可能在缓冲区的末尾?)和噪音。

我初始化并运行缓冲区:

更改音频缓冲区大小或片段也会更改单击周期。谁能帮我解决这个问题?我还检查了第一个和最后一个值。你总是与众不同。

操作系统:Ubuntu 11

更多详情。

接收数据的数量是动态的,变化取决于不同的参数。但我总是玩某个部分,例如 128 个值或 256 或 512....

// 我从硬件获取音频数据(在 Timerloop 中)


I changed the audiobuffersize also. If I set it to a bigger size, I have some Echo additional to clicks.

any Idea ? //----------------------- the Problem is

every call of this function produce a click in sound !

0 投票
2 回答
223 浏览

midi - 如何将控制器连接到软件合成器?

我已经建立了一个软件。我想通过 MIDI 控制器(例如键盘)来控制它。如何使用例如 ALSA 将 MIDI 数据从 MIDI 端口获取到我的软件?我正在使用 Linux。

0 投票
5 回答
12408 浏览

c++ - ALSA:以共享模式打开 PCM 设备

我想使用 ALSA 将一些音频数据播放到 PCM 设备。作为示例,我已下载此示例示例并在我的 PC 中运行它。当当前没有其他进程正在使用声卡时,它可以正常工作。但是当其他进程使用音频设备(即媒体播放器播放歌曲)并显示以下错误时,它不会播放任何内容 -

查看此示例的源代码,我可以说第 882 行的snd_pcm_open函数引发了此错误。它发现设备很忙,因为另一个进程正在使用它。

我也尝试了相反的方式 - 首先开始示例然后尝试开始一首歌。在这种情况下,媒体播放器保持空闲状态,在进度条旁边显示“空闲”(我使用的是 Banshee)。我假设snd_pcm_open获得设备资源的专有权,因此没有其他进程可以使用它。

但我不想那样。我想在不需要任何专有权的情况下向音频设备播放声音,以便 PC 中的其他进程可以共享同一设备以输出音频数据。

我怎样才能做到这一点?如何打开 PCM 设备,以便其他进程也可以共享同一设备?

0 投票
2 回答
2284 浏览

c - ALSA 配置以启用多个进程之间的设备共享

.asoundrc我的主目录中的文件中有以下代码-

当我运行此示例示例时,它工作正常(我将设备名称更改为plug:lol)。我可以听到耳机中播放的声音。当两个或多个进程尝试同时输出音频数据时,就会出现此问题。在这种情况下,后面的进程无法正确输出其音频数据。

例如,我运行了一个正在播放歌曲的媒体播放器,然后我尝试运行该示例。我听不到任何声音,我只能听到媒体播放器中播放的音乐。当我先运行此示例然后运行媒体播放器时,也会发生类似的事情,在这种情况下,我只收听示例的音频输出。

我怎么解决这个问题?我的 pcm 设备配置有什么错误吗?还是我必须在示例代码中提供任何额外的 PCM 配置参数?

另外,如果我能以编程方式创建这个逻辑设备配置,而不是使用这样的配置文件,那就太好了。

0 投票
2 回答
1819 浏览

c++ - 如何使用 C++ 在 Ubuntu 中连接到 ALSA 服务器(在本例中为 Timidity)?

我正在尝试在带有 C++ 的 Linux Ubuntu 下使用 MIDI。经过一天使用几个工具(例如,JACK)都没有成功(JACK 在我的机器上像疯了一样滞后),我现在尝试使用 Timidity 作为 MIDI 服务器。但是,我无法在网上找到任何关于如何使用 C++ 以编程方式连接到 Timidity 的参考资料。有没有办法做到这一点?

感谢您的任何建议!

笔记:

我试过用以下方法搜索谷歌:

alsa 服务器连接

胆怯连接程序

但没有答案。

0 投票
1 回答
183 浏览

c - 音频包类型

我开始研究一个通过以太网传输 G.711 音频的项目,用 C(不是 C++)编写并在 Fedora 15 上运行。我没有做聪明的事情并使用 RTP,而是使用 UDP 传输音频数据。为了在一定程度上克服数据包重新排序的问题,我决定在每个数据包的主体中使用一个看起来有点像这样的结构:

变量“cc”是一个从 0-15 运行的连续性计数器,当数据包到达接收方时,它会根据 cc 的值放入这些结构的数组中。然后音频输出例程循环遍历这个数组并播放数据。

我的问题是,这是打包音频的最佳方式吗?输出数组最终将是二维的,并且肯定会很慢地读取每个成员并将其写入输出?有没有办法定义一个 160 字节宽的类型,我可以将其写入另一端的音频接口?

非常感谢任何建议,以及指向 ALSA 上有用资源的链接(这似乎非常罕见!)

乔什