Ubuntu12.04下pulseaudio的安装以及API使用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ubuntu12.04下pulseaudio的安装以及API使用相关的知识,希望对你有一定的参考价值。

参考技术A

一、Ubuntu12.04下安装音频库客户端软件libpulse-dev

使用如下命令:

sudo apt-get install libpulse-dev

安装时会提示依赖于下面这几个软件,一并安装即可:

libavahi-client-dev libavahi-common-dev libpulse-mainloop-glib0 libpulse0

这个也可以上packages.ubuntu.com官方网址查询libpulse-dev软件的依赖关系,相关链接如下:

http://packages.ubuntu.com/raring/libpulse-dev

如下图所示:

二、pulseaudio库的使用(同步simple API)

pulseaudio官网有关于pulseaudio的API doxygen使用手册,网址如下:

http://freedesktop.org/software/pulseaudio/doxygen/

1、播音sample

A simple playback tool using the simple API

2、录音sample

A simple recording tool using the simple API

3、编译、运行含有pulseaudio库的时候,需要添加pulseaudio的动态链接库 -libpulse等,

(可以在/usr/lib/i386-linux-gnu/目录下找到pulse的动态库

/usr/lib/i386-linux-gnu/libpulsecommon-1.1.so
/usr/lib/i386-linux-gnu/libpulsedsp.so
/usr/lib/i386-linux-gnu/libpulse-mainloop-glib.so
/usr/lib/i386-linux-gnu/libpulse-mainloop-glib.so.0
/usr/lib/i386-linux-gnu/libpulse-mainloop-glib.so.0.0.4
/usr/lib/i386-linux-gnu/libpulse-simple.so
/usr/lib/i386-linux-gnu/libpulse-simple.so.0
/usr/lib/i386-linux-gnu/libpulse-simple.so.0.0.3
/usr/lib/i386-linux-gnu/libpulse.so
/usr/lib/i386-linux-gnu/libpulse.so.0
/usr/lib/i386-linux-gnu/libpulse.so.0.13.5)

例如,以pacat-simple.c程序为例:

(1)编译命令如下:

gcc -o pacat-simple pacat-simple.c -lpulse -lpulsecommon-1.1 -lpulse-simple
(2)运行上一步生成的pacat-simple可执行程序

./pacat-simple 飞鸟.wav

(注意:有一个命令行参数,是音频文件名,上网搜索一个wav格式的音频文件,放在当前目录,然后执行。)

三、ALSA音频库

ALSA全称为:Advanced Linux Sound Architecture

一个网址为: http://www.alsa-project.org/main/index.php/Main_Page

在 Ubuntu 上通过 PulseAudio 从 Java 播放音频文件时出错

【中文标题】在 Ubuntu 上通过 PulseAudio 从 Java 播放音频文件时出错【英文标题】:Error playing audio file from Java via PulseAudio on Ubuntu 【发布时间】:2013-09-22 09:41:27 【问题描述】:

shell 上的信息是:

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 reprod.ReproducirFichero(reprod.java:16)
    at reprod.main(reprod.java:44)

我尝试下载新的音频驱动程序,我尝试重新安装 openJDK 7 和 openJRE 7,还尝试安装 java 7。

我已经在另一台计算机上证明了我的代码并且它可以工作,我使用的台式机主板是 intel d525mw,我尝试播放的音频格式是 .wav。我使用的 linux 版本是 Ubuntu 12.04 .3.我需要帮助。谢谢

这是我的代码的一部分,我尝试播放 .wav 音频格式

import javax.sound.sampled.*;

public class reprod 

public static void play()
    try 
        Clip cl = AudioSystem.getClip();

        File f = new File("/home/usr/Desktop/d.wav");
        AudioInputStream ais = AudioSystem.getAudioInputStream(f);

        cl.open(ais);

        cl.start();
        System.out.println("playing...");

        while (cl.isRunning())
            Thread.sleep(4000);


        cl.close();

我使用的linux版本是Ubuntu 12.04.3

【问题讨论】:

【参考方案1】:

我通过简单地将参数null 传递给AudioSystem.getClip() 解决了这个问题。

我不知道为什么会发生这个异常,我之前在 Windows 上运行过这个项目,它可以工作......在 Linux 和这里之后,它没有工作。

【讨论】:

【参考方案2】:

我遇到了同样的问题,发现这段代码可以工作:

File soundFile = new File("/home/usr/Desktop/d.wav");
AudioInputStream soundIn = AudioSystem.getAudioInputStream(soundFile);
AudioFormat format = soundIn.getFormat();
DataLine.Info info = new DataLine.Info(Clip.class, format);
Clip clip = (Clip)AudioSystem.getLine(info);
clip.open(soundIn);
clip.start();
while(clip.isRunning())

   Thread.yield();

密钥在soundIn.getFormat()。引用docs:

获取此音频输入流中声音数据的音频格式。

来源:http://ubuntuforums.org/showthread.php?t=1469572

【讨论】:

【参考方案3】:

错误消息说输入文件格式有误。

如果您向我们提供更多信息(文件格式、可能是从哪里获得的、用于打开文件的代码以及您如何配置音频驱动程序),我们或许可以提供帮助。

有关可以尝试的一些代码,请参阅此问题:How to play .wav files with java

【讨论】:

音频格式为.wav。我已经在其他计算机上证明了它的工作原理。我不知道如何配置音频驱动程序。

以上是关于Ubuntu12.04下pulseaudio的安装以及API使用的主要内容,如果未能解决你的问题,请参考以下文章

ubuntu 12.04 中怎么安装 jdk 7

ubuntu12.04下安装搜狗拼音

ubuntu 12.04下无法安装MySQL-python

Ubuntu 12.04下GAMIT10.40安装说明

Ubuntu12.04下安装VirtualBox

ubuntu12.04下安装Python3.5.2