在LinuxUbuntu中未检测到Java音频目标线SPDIF

问题描述

我正在开发一个使用Javax.sound库从SPDIF捕获音频的应用程序。该应用程序使用Creative Sound Blaster X-Fi HD声卡。下面的代码片段应该可以帮助您理解

import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.Line;
import javax.sound.sampled.mixer;
import javax.sound.sampled.TargetDataLine;

public class Audio {
    public static void main(String[] args) {
         for (mixer.Info inf : AudioSystem.getmixerInfo()) {
          System.out.println("found mixer: " + inf.toString());

          mixer mixer = AudioSystem.getmixer(inf);
          for (Line.Info lineinf : mixer.getTargetLineInfo()) {
            System.out.println("\tfound Line: " + lineinf.toString());
            if (TargetDataLine.class.isAssignableFrom(lineinf.getLineClass())) {
                System.out.println("\t Found Tapping line "+ lineinf.getClass().toString());
            }
          }
         }
        
    }

}

在Windows上输出类似这样的内容

found mixer: Primary Sound Driver,version UnkNown Version
found mixer: Speakers (USB Sound Blaster HD),version UnkNown Version
found mixer: Speakers / Headphones (Realtek Audio),version UnkNown Version
found mixer: Digital Audio Interface (USB Sound Blaster HD),version UnkNown Version
found mixer: Headphones (Sagar Bose QC35 II Stereo),version UnkNown Version
found mixer: Headset (Sagar Bose QC35 II Hands-Free),version UnkNown Version
found mixer: Primary Sound Capture Driver,version UnkNown Version
    found Line: interface TargetDataLine supporting 8 audio formats,and buffers of at least 32 bytes
     Found Tapping line class com.sun.media.sound.DirectAudioDevice$DirectDLI
found mixer: Microphone (USB Sound Blaster H,and buffers of at least 32 bytes
     Found Tapping line class com.sun.media.sound.DirectAudioDevice$DirectDLI
found mixer: Microphone Array (Realtek Audio,and buffers of at least 32 bytes
     Found Tapping line class com.sun.media.sound.DirectAudioDevice$DirectDLI
found mixer: SPDIF Interface (USB Sound Blas,and buffers of at least 32 bytes
     Found Tapping line class com.sun.media.sound.DirectAudioDevice$DirectDLI
found mixer: Line (USB Sound Blaster HD),and buffers of at least 32 bytes
     Found Tapping line class com.sun.media.sound.DirectAudioDevice$DirectDLI
found mixer: Headset (Sagar Bose QC35 II Han,and buffers of at least 32 bytes
     Found Tapping line class com.sun.media.sound.DirectAudioDevice$DirectDLI
found mixer: Port Speakers (USB Sound Blaster HD),version 1.0
    found Line: SPEAKER target port
found mixer: Port Speakers / Headphones (Realtek,version 10.0
    found Line: SPEAKER target port
found mixer: Port Digital Audio Interface (USB So,version 1.0
    found Line: Master Volume target port

表示已找到found mixer: SPDIF Interface (USB Sound Blas,version UnkNown Version 我可以通过上述声卡访问和捕获来自SPDIF的音频。

现在,如果我在Ubuntu 18.04版本上运行相同的代码。我没有任何可以点击的SPDIF接口。当我通过终端运行aplay -l时,得到的波纹管输出无法在代码中点击其中的任何一个。但是,如果我使用Ubuntu的图形用户界面,则会在Sound Panel中看到它。

card 0: PCH [HDA Intel PCH],device 0: ALC3234 Analog [ALC3234 Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH],device 3: HDMI 0 [HDMI 0]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH],device 7: HDMI 1 [HDMI 1]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH],device 8: HDMI 2 [HDMI 2]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH],device 9: HDMI 3 [HDMI 3]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: PCH [HDA Intel PCH],device 10: HDMI 4 [HDMI 4]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: HD [USB Sound Blaster HD],device 0: USB Audio [USB Audio]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: HD [USB Sound Blaster HD],device 1: USB Audio [USB Audio #1]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: HD [USB Sound Blaster HD],device 2: USB Audio [USB Audio #2]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

是否有解决方案,因为我必须使SPDIF捕获在使用Java的Linux上工作

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...