Linux 如何在docker中使用alsa声音和/或snd_pcm_open?
我正在Ubuntu 16.04主机上运行Ubuntu 12.04 Docker容器。我有一些测试代码练习“snd_pcm_open”/“snd_pcm_close”操作以及snd_pcm_STREAM_回放和snd_pcm_STREAM_捕获流类型 我不需要任何实际的声音/音频功能,但只要使用有效句柄获取“snd_pcm_open”返回0,然后在同一句柄上使用“snd_pcm_close”返回0就足够了。我不想修改代码,因为它已经有一些不太好的依赖于平台的开关,我不是维护人员 我正在使用简单的代码,并将其编译为“g++alsa_test.cpp-lasound”Linux 如何在docker中使用alsa声音和/或snd_pcm_open?,linux,ubuntu,audio,docker,alsa,Linux,Ubuntu,Audio,Docker,Alsa,我正在Ubuntu 16.04主机上运行Ubuntu 12.04 Docker容器。我有一些测试代码练习“snd_pcm_open”/“snd_pcm_close”操作以及snd_pcm_STREAM_回放和snd_pcm_STREAM_捕获流类型 我不需要任何实际的声音/音频功能,但只要使用有效句柄获取“snd_pcm_open”返回0,然后在同一句柄上使用“snd_pcm_close”返回0就足够了。我不想修改代码,因为它已经有一些不太好的依赖于平台的开关,我不是维护人员 我正在使用简单的代
#include <stdio.h>
#include <alsa/asoundlib.h>
int main() {
snd_pcm_t* handle;
snd_pcm_stream_t stream_type[]= {SND_PCM_STREAM_PLAYBACK, SND_PCM_STREAM_CAPTURE};
printf("\nstarting\n");
for (unsigned char i = 0; i < sizeof(stream_type) / sizeof(stream_type[0]); ++i) {
printf(">>>>>>>>\n\n");
int deviceResult = snd_pcm_open(&handle, "default" , stream_type[i], 0);
printf("\n%d open: %d\n", stream_type[i], deviceResult);
if (deviceResult >= 0) {
printf("attempting to close %d\n", stream_type[i]);
snd_pcm_drain(handle);
deviceResult = snd_pcm_close(handle);
printf("%d close: %d\n\n", stream_type[i], deviceResult);
}
printf("<<<<<<<<\n\n");
}
return 0;
}
顺便说一下,容器只有“root”用户,所以访问权限也不应该是问题
要让它工作起来,最简单、最不麻烦的方法是什么?我宁愿去掉特权模式和映射到容器的dev/modules,但是,这些容器不是从外部世界访问的,只是为一些短期任务创建/销毁的。因此,安全并不是一个大问题
提前谢谢 如果您实际上不需要设备正常工作,请使用
null
设备而不是default
要使null
插件成为默认插件,请将其放入容器的/etc/asound.conf
,或用户的~/.asoundrc
:
pcm。!默认值=null;
如果您实际上不需要设备正常工作,请使用null
设备而不是default
要使null
插件成为默认插件,请将其放入容器的/etc/asound.conf
,或用户的~/.asoundrc
:
pcm。!默认值=null;
你试过了吗:docker run
带有标志--device/dev/snd
是的,我也试过了,但运气不好-v/dev:/dev可能更复杂,但也不起作用。你能分享strace-fe open./a.out
的输出吗?docker run
有标志--device/dev/snd
是的,我也试过了,但运气不好-v/dev:/dev可能更复杂,但也不起作用。您能否分享strace-fe open./a.out
root@31142791f82d:/export# modinfo soundcore
filename: /lib/modules/4.4.0-59-generic/kernel/sound/soundcore.ko
alias: char-major-14-*
license: GPL
author: Alan Cox
description: Core sound module
srcversion: C941364F5CD0B525693B243
depends:
intree: Y
vermagic: 4.4.0-59-generic SMP mod_unload modversions
parm: preclaim_oss:int
root@31142791f82d:/export# ls -l /dev/snd/
total 0
drwxr-xr-x 2 root root 100 Feb 2 21:10 by-path
crw-rw----+ 1 root audio 116, 2 Feb 2 07:42 controlC0
crw-rw----+ 1 root audio 116, 7 Feb 2 07:42 controlC1
crw-rw----+ 1 root audio 116, 12 Feb 2 21:10 controlC2
crw-rw----+ 1 root audio 116, 6 Feb 2 07:42 hwC0D0
crw-rw----+ 1 root audio 116, 11 Feb 2 07:42 hwC1D0
crw-rw----+ 1 root audio 116, 3 Feb 2 07:42 pcmC0D3p
crw-rw----+ 1 root audio 116, 4 Feb 2 07:42 pcmC0D7p
crw-rw----+ 1 root audio 116, 5 Feb 2 07:42 pcmC0D8p
crw-rw----+ 1 root audio 116, 9 Feb 2 10:44 pcmC1D0c
crw-rw----+ 1 root audio 116, 8 Feb 2 07:42 pcmC1D0p
crw-rw----+ 1 root audio 116, 10 Feb 2 21:30 pcmC1D1p
crw-rw----+ 1 root audio 116, 14 Feb 2 21:10 pcmC2D0c
crw-rw----+ 1 root audio 116, 13 Feb 2 21:10 pcmC2D0p
crw-rw----+ 1 root audio 116, 1 Feb 2 07:42 seq
crw-rw----+ 1 root audio 116, 33 Feb 2 07:42 timer