Linux下mono播放PCM音频
作者:网络转载 发布时间:[ 2015/3/9 14:43:40 ] 推荐标签:Linux 操作系统 mono
测试环境:
Ubuntu 14
MonoDevelop
CodeBlocks
1、建立一个共享库(shared library)
这里用到了linux下的音频播放库,alsa-lib。 alsa是linux下的一个开源项目,它的全名是Advanced Linux Sound Architecture。它的安装命令如下:
sudo apt-get install libasound2-dev
使用 Coceblocks 建立一个 shared library 项目,命名为libTest2,编程语言选择C。在main中加入下代码:
1#include<alsa/asoundlib.h>
2#include<stdio.h>
3
4
5snd_pcm_t*handle;
6snd_pcm_sframes_tframes;
7
8
9intPcmOpen()
10{
11
12if(snd_pcm_open(&handle,"hw:0,0",SND_PCM_STREAM_PLAYBACK,0)<0)
13{
14printf("pcmopenerror");
15return0;
16}
17
18if(snd_pcm_set_params(handle,SND_PCM_FORMAT_U8,SND_PCM_ACCESS_RW_INTERLEAVED,1,8000,1,500000)<0)//0.5sec500000
19{
20printf("pcmseterror");
21return0;
22}
23
24return1;
25}
26
27
28
29voidPlay(unsignedchar*buffer,intlength)
30{
31frames=snd_pcm_writei(handle,buffer,length);
32if(frames<0)
33{
34frames=snd_pcm_recover(handle,frames,0);
35}
36}
37
38
39
40
41intPcmClose()
42{
43snd_pcm_close(handle);
44return1;
45}
在编译的时候,记得链接alsa-lib库。具体方法是在codeblocks的编译对话框中,找到linker settings选项,在Other linker options中输入:-lasound。
如图所示:
当然,也可以手工编译。cd 进main.c所在的目录,执行以下命令:
gcc -o main.o -c main.c
gcc -o libTest1.so -shared main.o -lasound
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11