1.第一种是USB Gadget Audio Class 1.0 Legacy
这种方式需要有实体的声卡,就是加载驱动时指定那个放音设备/dev/snd/pcmC1D0p,不指定的话,放音设备是/dev/snd/pcmC0D0p 录音设备是/dev/snd/pcmC0D0c,驱动加载完,不需要其它操作,就可以直接使用了。
但是问题来了,但是这种方式会独占那个声卡,其它程序是无法再访问那个设备了,我需要程序和USB混音,修改asound.conf也没用
2.第一种是USB Gadget Audio Class 1.0
这种方式在驱动加载后,系统会多出一张声卡,包含一个放音,一个录音设备,前边那种是不会出现任何设备的
modprobe g_audio.ko c_srate=48000 c_ssize=2 c_chmask=3 #48k 16bit 2ch
[ 71.822514] g_audio gadget: Hardware params: access 3, format 2, channels 2, rate 48000
[ 71.830844] g_audio gadget: Linux USB Audio Gadget, version: Feb 2, 2012
[ 71.837646] g_audio gadget: g_audio ready
[ 72.123305] g_audio gadget: high-speed config #1: Linux USB Audio Gadget
名字也叫 AC INTERFACE ,如果需要改名字,是在uac1.c里边修改,电脑播放音乐
执行 arecord -D hw:2,0 -f dat -vv | aplay -D hw:1,0 -f dat 可以听到电脑播放的音乐,这种方式好像挻符合要求的
但是问题又来了,这种方式需要电脑或者手机一直播放着音乐才行,否则过一会I/O错误,录音进程直接退出,电脑端正常播放不受影响,但是板子肯定没音了,录音进程已经退出了,重新执行命令才可以。问题是我怎么知道用户什么播放呢?录音进程录不到东西就直接能出了,不能一直在后台运行
3.USB Gadget Audio Class 2.0
既然上边那种方式也不行,那再试试2.0,驱动加载完成后,同样会多出2个声卡,设备管理器里会出现一个叫 Source/Sink的设备,尴尬的是设备启动不了,但是在Linux或者手机上是正常的,系统是win10 build1909 已经自动2.0驱动了,其它操作跟上边是一样的,也是需要一直录音才能使用,不放音时 录音进程直接IO错误面退出
最后,请大神支点招,如何解决电脑在没播放音乐时,录音进程退出问题?不放音乐时 一直传输0不就行了吗,这样录音也可以一直进行下去了
离线