我在Linux上使用Java音频时遇到问题。这是Ubuntu 14.04上的OpenJDK 8。下面的示例失败.wav文件from this link:Java音频无法在Linux中播放wav文件

import java.net.URL;

import javax.sound.sampled.*;

public class PlaySound {

public void play() throws Exception

{

// List all mixers and default mixer

System.out.println("All mixers:");

for (Mixer.Info m : AudioSystem.getMixerInfo())

{

System.out.println(" " + m);

}

System.out.println("Default mixer: " + AudioSystem.getMixer(null).getMixerInfo());

URL url = getClass().getResource("drop.wav");

Clip clip;

AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(url);

clip = AudioSystem.getClip();

System.out.println("Clip format: " + clip.getFormat());

clip.open(audioInputStream);

clip.start();

do { Thread.sleep(100); } while (clip.isRunning());

}

public static void main(String [] args) throws Exception {

(new PlaySound()).play();

}

}

这是结果:

All mixers:

PulseAudio Mixer, version 0.02

default [default], version 4.4.0-31-generic

Intel [plughw:0,0], version 4.4.0-31-generic

Intel [plughw:0,2], version 4.4.0-31-generic

NVidia [plughw:1,3], version 4.4.0-31-generic

NVidia [plughw:1,7], version 4.4.0-31-generic

NVidia [plughw:1,8], version 4.4.0-31-generic

NVidia [plughw:1,9], version 4.4.0-31-generic

Port Intel [hw:0], version 4.4.0-31-generic

Port NVidia [hw:1], version 4.4.0-31-generic

Default mixer: default [default], version 4.4.0-31-generic

Clip format: PCM_SIGNED unknown sample rate, 16 bit, stereo, 4 bytes/frame, big-endian

Exception in thread "main" java.lang.IllegalArgumentException: Invalid format

at org.classpath.icedtea.pulseaudio.PulseAudioDataLine.createStream(PulseAudioDataLine.java:142)

at org.classpath.icedtea.pulseaudio.PulseAudioDataLine.open(PulseAudioDataLine.java:99)

at org.classpath.icedtea.pulseaudio.PulseAudioDataLine.open(PulseAudioDataLine.java:283)

at org.classpath.icedtea.pulseaudio.PulseAudioClip.open(PulseAudioClip.java:402)

at org.classpath.icedtea.pulseaudio.PulseAudioClip.open(PulseAudioClip.java:453)

at PlaySound.play(PlaySound.java:22)

at PlaySound.main(PlaySound.java:29)

显然的问题是,的PulseAudio混频器被选中,由于某种原因,不能玩.wav文件。

如果我将AudioSystem.getClip()呼叫替换为AudioSystem.getClip(null),该呼叫将选择默认调音台,那么它将起作用。

如何确保选择兼容的调音台?

更新:在从@戴夫遍历可用搅拌机的建议,直到我找到一个具有“兼容”的格式,我看到以下内容:

目标格式(从AudioInputStream.getFormat())是:

PCM_SIGNED 44100.0 Hz, 16 bit, stereo, 4 bytes/frame, little-endian

我通过所有混频器,源极线的每个混频器,以及每个源极线支持的格式环,并获得以下的匹配:

Mixer: PulseAudio Mixer, version 0.02

Source line: interface SourceDataLine supporting 42 audio formats, and buffers of 0 to 1000000 bytes

Format matches: PCM_SIGNED unknown sample rate, 16 bit, stereo, 4 bytes/frame, little-endian

我做获得匹配(使用format.matches()),但我仍然得到“无效的格式”异常。也许是因为匹配的格式是“未知采样率”,然后当我试图打开剪辑时,它发现它实际上并不支持44100 Hz?

+0

你所需要的'Clip'接口,或将'SourceDataLine'工作?我意识到你在这里的例子可能只是对问题的最小再现,所以你需要寻找还是循环? –

linux 播放wav文件,Java音频无法在Linux中播放wav文件相关推荐

  1. java读取同包文件_Java实现从jar包中读取指定文件的方法

    本文实例讲述了Java实现从jar包中读取指定文件的方法.分享给大家供大家参考,具体如下: 以下的Java代码实现了从一个jar包中读取指定文件的功能: /** * This class implem ...

  2. linux(ubuntu)下基于java的在线音乐仿qq播放器,

    linux下基于java的在线音乐仿qq播放器,界面挺漂亮,界面全都是本人自己用java来画的,主要是我自己喜欢用ubuntu,但是由于没有人去做它的播放器,就自己来了,可以在线,有专辑图片,播放列表 ...

  3. java 删除过期文件_定时脚本: 删除HDFS中的过期文件

    1. 基本原理: 通过hadoop fs -ls *命令获取相关文件或目录的修改时间,然后与设定的过期时间进行比较,之后执行删除操作即可 2. 相关代码: #!/bin/bash source ~/. ...

  4. idea 上传文件 java,IntelliJ IDEA如何上传和下载文件

    IntelliJ IDEA 上传文件和文件夹 IntelliJ IDEA 提供以下的两种主要方式将项目文件和文件夹上传到部署服务器:手动,您可以随时通过菜单命令手动上传文件和文件夹. 自动,每次更新文 ...

  5. java log4j 相对路径_log4j中配置日志文件相对路径[续集]

    这篇文章是基于流传在网上较为完整的关于"log4j中配置日志文件相对路径"问题的解决方法.该篇博文几经转载,流传至今.这是51cto博客里的一篇此文的转载[http://share ...

  6. android读取工程目录下的文件,Android编程实现读取工程中的txt文件功能

    本文实例讲述了Android编程实现读取工程中的txt文件功能.分享给大家供大家参考,具体如下: 1. 众所周知,Android的res文件夹是用来存储资源的,可以在res文件夹下建立一个raw文件夹 ...

  7. 手机html swf文件,【转载】在HTML中插入swf文件(转)

    在网页里面插入swf,再平常不过了,一般会想到如下代码: Html代码 width="200" height="100"> 其中 type="a ...

  8. ajax 文件数据流,Ajax如何读取数据流中的xml文件?

    Ajax如何读取数据流中的xml文件? 这是我的源代码,请大家帮忙看看,我读到的怎么都是空值.是不是方法错了? var xmlHttp; function createXMLHttpRequest() ...

  9. win10计算机里文件夹怎么删除文件,如何删除win10“此电脑”中6个文件夹?

    更新完win10系统,我们会发现打开"此电脑",相比win7相比,除了还有传统的硬盘分区外,还多了6个文件夹:视频.图片.文档.下载.音乐和桌面.讲真,这些文件夹似乎也用不上,对于 ...

  10. c++读取utf8文件_经常在日常工作中处理统一码文件(or其他编码)?这篇必读

    全文共2717字,预计学习时长5分钟 对于那些经常在日常工作中处理统一码文件(也适用于其他编码)的人来说,这篇文章是必读的.对于自然语言处理的从业者,处理统一码文件是一场噩梦,尤其是使用Windows ...

最新文章

  1. Java项目:小蜜蜂扩音器网上商城系统(java+JSP+Servlet+JDBC+Ajax+mysql)
  2. jvm 内存镜像_镜像镜像–使用反射在运行时查看JVM内部
  3. OpenJudge NOI 1.7 22:紧急措施
  4. Copy Constructor与赋值运算符
  5. 4.4 Triplet 损失
  6. nginx redis mysql_Nginx + Lua + Kafka + Redis + Mysql
  7. 马斯克地球事务麻烦不断:Model 3又有一起严重事故曝光
  8. 计算机 继续教育培训心得体会,继续教育培训总结.doc
  9. 基于与非门和多路开关结构的一位全加器实现方法
  10. 青浦区服务器维修,青浦区DNS服务器地址
  11. C++17之std::apply与std::make_from_tuple
  12. 你还不知道高情商表现怎么表现?
  13. Python应用练习题(第一期)——基本语句练习
  14. Vue01介绍+数据双向绑定+生命周期+什么是BootCDN+代码示例
  15. 全新 OceanBase 社区版开发者中心 ODC 核心功能解读
  16. 教你如何在vue-cli项目打包时避免踩雷(一)【早看早受益】
  17. R语言入门第一集 R语言、RTools、RStudio的简介、安装与使用
  18. 图形界面 II: 设置库的事件处理函数 (第三章)
  19. USACO Farmer_John收苹果 (dp)
  20. maven 系列 02 - packing 类型

热门文章

  1. html如何在表单里加虚线,大佬,表格下方的虚线怎么添加?
  2. android vplayer 源码,videoplayer-Vplayer
  3. latex参考文献bib基本格式_Latex如何添加参考文献——使用bib
  4. html网页中图片展示为碎片,基于HTML代码实现图片碎片化加载功能
  5. foobar2000使用cue文件播放时出现Unable to open item for playback (Object not found):的问题解决
  6. 计算机语言可读性排名,计算机语言可读性强,容易记忆
  7. 文本处理技能与文本数据清洗、提取、分词与统计
  8. 日志追踪-Java字节码-类文件结构
  9. 联系人管理系统 Python GUI版
  10. 财务系统服务器ebs系统,ebs系统(ebs财务系统是什么)