使用 Java 访问 CD-ROM

Posted

技术标签:

【中文标题】使用 Java 访问 CD-ROM【英文标题】:Access to CD-ROM using Java 【发布时间】:2013-01-11 18:45:09 【问题描述】:

我想问一下是否有可能通过Java中的声音库访问cdrom设备。

我想做的是使 CD 模拟静音。我用google搜索了很久,但是没有关于这种操作的信息。我认为这是微不足道的或非常复杂的。

这个简单的代码列出了我的混音器:

try

    Mixer.Info [] mixerList = Audiosystem.getMixerInfo();
    for (Mixer.Info mixerInfo : mixerList)
    
        System.out.println();
        System.out.println("MIXER: "+ mixerInfo.getName());
        Mixer mixer = AudioSystem.getMixer(mixerInfo);
        Line.Info[] li = mixer.getSourceLineInfo();
        System.out.println("LINES:");
        for (Line.Info info2 : li)
        
            System.out.println(info2.toString());
        

    
 
catch (Exception e)

    e.printStackTrace();

输出是:

混音器:主声音驱动器 线路: 接口 SourceDataLine 支持 8 种音频格式,以及至少 32 字节的缓冲区 支持 8 种音频格式的接口 Clip,以及至少 32 字节的缓冲区 混音器:扬声器(Realtek 高保真音频) 线路: 接口 SourceDataLine 支持 8 种音频格式,以及至少 32 字节的缓冲区 支持 8 种音频格式的接口 Clip,以及至少 32 字节的缓冲区 MIXER:主要声音捕捉驱动程序 线路: MIXER:桌面麦克风(电影院 - Mi 线路: 混音器:麦克风(瑞昱高清 线路: MIXER:端口扬声器(Realtek High Definiti 线路: MIXER:端口桌面麦克风(Cinema - Mi 线路: MICROPHONE 源端口 MIXER:端口麦克风(Realtek High Defini 线路: MICROPHONE 源端口

但是没有像 cd analog 这样的设备。当我尝试使用 Port.Info.COMPACT_DISC 从混音器获取特定端口时,出现异常 no such device

谁能帮我解决这个问题?

【问题讨论】:

【参考方案1】:

看看java-avm库:

java-avm (Audio Video Media) 是一个 Java API,用于访问和 控制磁盘驱动器,特别是 CD-ROM 和 CD-R(W) 驱动器, 可移动驱动器和环回设备。

...

CD-ROM 特定:

通过音量调节控制 CD 音频播放。

【讨论】:

只有在别无他法的情况下,我才想使用第三方库。 @user2018059 我不知道其他方法(可能通过 javascript 媒体 api 除外)。图书馆也不错,它们实际上很有帮助,并且在大多数情况下比我们自己做得更好,因为它已经有时间在许多平台上进行改进......你可以看到 3rd 方图书馆是如何做到的,但大多数可能使用 JNI。 另请参阅Can Java Sound be used to control the system volume? 虽然这与使 CD 静音的任务略有不同,但 Java Sound 在这方面可能与更改系统音量一样有用。因此,我第二次建议@DavidKroukamp - 使用第 3 方 API。 看来大卫的建议是不可避免的。但是如何使用呢?我很迷惑。据我了解,我需要下载这个包并将其构建到 jar 文件中。然后导入我的项目。我对吗?大卫你之前用过吗?

以上是关于使用 Java 访问 CD-ROM的主要内容,如果未能解决你的问题,请参考以下文章

无法访问您试图使用的功能所在的CD-ROM或其他可移动式磁盘

通过 javascript 对 CD-Rom 上的静态 HTML 文件进行全文搜索

U盘安装 Linux 显示 “Faild to copy file from CD-ROM”

r安装组件默认安装器点不了

U盘安装Kali 出现cd-rom无法挂载 已解决

UWP 和 IMAPI 或寻址 CD-ROM 驱动器