QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8053|回复: 11

mplayer调拥alsa驱动播放音频问题,请高人指点!

[复制链接]
发表于 2007-12-10 11:16:42 | 显示全部楼层 |阅读模式
mplayer版本1.0.rc2 ,在arm9板子上跑
我编译时选了enabe-alsa ,但是播放时出错
/ # mplayer -ao help  //查看支持的音频驱动
MPlayer 1.0rc2-3.4.1 (C) 2000-2007 MPlayer Team
CPU: ARM
Available audio output drivers:
        oss     OSS/ioctl audio output
        alsa    ALSA-0.9.x-1.x audio output
        mpegpes DVB audio output
        null    Null audio output
        pcm     RAW PCM/WAVE file writer audio output

播放错误log如下:
/ # mplayer -ao alsa 1.wav
MPlayer 1.0rc2-3.4.1 (C) 2000-2007 MPlayer Team
CPU: ARM
Playing 1.wav.
Audio file file format detected.
==========================================================================
Opening audio decoder: [pcm] Uncompressed PCM audio decoder
AUDIO: 44100 Hz, 2 ch, s16le, 1411.2 kbit/100.00% (ratio: 176400->176400)
Selected audio codec: [pcm] afm: pcm (Uncompressed PCM)
==========================================================================
[AO_ALSA] alsa-lib: pcm.c:2145snd_pcm_open_noupdate) Unknown PCM default
[AO_ALSA] Playback open error: No such file or directory
Could not open/initialize audio device -> no sound.
Audio: no sound
Video: no video

另外还有个问题顺带问下,虽然之前已经编译过alsa-lib,但编译mplayer时, configure死活不认alsa-lib.后来上网查有人讲说是要安装alsa-lib-devel库,不过我找了很长时间也没发现哪有alsa-lib-devel源码库下载.就没有安装,但是用了另外一种方法,编译alsa-lib时打开enbale-static选项编译出静态库,然后再编译mplayer时就能正确识别到alsa了.难道最新的alsa-lib将以前的alsa-lib-devel库集成进去了?因为编译alsa-lib安装后的文件同样包括之前alsa-lib-dev所拥有的头文件等
但这样编译出来的mplayer不能调用alsa驱动播放音频,出现如上错误.
是否还需要进行某些配置文件的设置?我是直接将mplayer可执行文件拷到开发板上运行的.或者还是alsa驱动设置有问题?还请高人指点迷津!
发表于 2007-12-10 22:48:09 | 显示全部楼层
yum install alsa-lib-devel
smart install alsa-lib-devel
apt-get install alsa-lib-devel
yast -i alsa-lib-devel
请使用linux的在线安装系统。
回复

使用道具 举报

 楼主| 发表于 2007-12-11 09:23:10 | 显示全部楼层
原帖由 hillwood 于 2007-12-10 22:48 发表
yum install alsa-lib-devel
smart install alsa-lib-devel
apt-get install alsa-lib-devel
yast -i alsa-lib-devel
请使用linux的在线安装系统。


多谢楼上的,我用的CentOS,貌似没有什么在线安装系统.而且我是移植到arm9板子上运行的,直接在线安装的应该是X86的版本.但是仍然很感谢.
如果还是因为alsa-lib-dev问题的话,那么有alsa-lib-dev的源码包下吗?我找了很长时间都没找到,在alsa的官网也没这个源码库下.
或者是不是还有其他什么问题?
我个人怀疑是不是配置方面出了问题,alsa或mplayer的都有可能! 或者就是alsa驱动有问题.
还请坛子里的兄弟们多指点指点!
回复

使用道具 举报

发表于 2007-12-11 11:57:32 | 显示全部楼层
到alsa官网仔细找找就找到了。叫做alsa-lib。
回复

使用道具 举报

发表于 2007-12-11 12:33:21 | 显示全部楼层
CentOS是redhat企业版的再编译版,在线更新系统就是yum,用yum install alsa-lib-devel进行安装。
回复

使用道具 举报

发表于 2007-12-11 13:14:55 | 显示全部楼层
所有的 devel 包,都是依附于原版包拆出来的……
看上去,是你的 arm9 板子不支持 alsa 。

好像 arm 的板子目前只能 oss 吧?
回复

使用道具 举报

 楼主| 发表于 2007-12-11 14:00:05 | 显示全部楼层
回4楼, 我就是编译的alsa-lib,加了"--enable-static"选项编译出静态库后mplayer configure时可以正确识别出alsa.
回5楼,我确认了一下,CentOS是有yum这个命令进行在线更新。但这样下载下来安装的是x86的版本,我需要源码包进行交叉编译,但是又找不到哪有alsa-lib-dev源码包下载。
回6楼,你的意思是devel 包是从alsa-lib包中拆出来的么?我也是这么认为的,我对比过之前的alsa-lib-dev的rpm包,它安装后就是include文件等,但这些东西alsa-lib编译后也都有。另外,我的板子好象是支持alsa的,alsa-utils里的aplay可以正常播放。kernel 用的2.6.18的,也默认支持alsa驱动.
最后,多谢各位的回复!努力解决ing!
回复

使用道具 举报

发表于 2007-12-14 00:37:38 | 显示全部楼层
如此折腾不如找个rpm装上。
回复

使用道具 举报

发表于 2007-12-14 08:42:06 | 显示全部楼层
你在 arm 系统中运行的,就需要 arm 系统里面支持 alsa 。
这个和你计算机上的 CentOS 没关系。
交叉编译 arm 程序,需要你给这个交叉编译器交叉编译一个 alsa 库放在交叉编译器可以识别的库目录里,这个我想你应该是注意了吧。

所有的 devel 包,都是拆分出来的,编译系统识别是否安装 dev 部分,有的程序是借助 pkgconfig 命令,这个命令需要一个 *.pc 的文件。一般都放在 devel 里面。如果你直接编译 src.rpm ,这个时候 rpm 系统可能需要你安装 devel 包而不管系统里面是否已经正确安装了 include 文件,这个是 rpm 只根据自己的数据库中没有就确定没有的。
这个拆分是基于 rpm 包管理程序的。如果你用源代码安装,肯定是会被安装进去的。
回复

使用道具 举报

 楼主| 发表于 2007-12-15 14:30:22 | 显示全部楼层
多谢楼上的,通过你的讲解,我想有一点我是确定了,就是alsa-lib源码包里已经包含了alsa-lib-dev的内容即头文件和配置信息等,所以我仅需交叉编译alsa-lib就可以了。
另外抱歉,可能我上面的回复没讲清楚。Arm系统是否支持 alsa确实和Host机上的CentOS 没关系。我的ARM开发板上跑的是kernel2.6.18 ,kernel从2.6版本开始就已经默认使用alsa音频驱动。而且在开发板上也可以正常使用alsa-utils里的aplay播放(aplay使用的alsa驱动),所以我想我的开发板应该是支持ALSA音频驱动的。
下面是我的开发板上的alsa相关信息:
# cat proc/asound/cards
0 [S3C24XX        ]: S3C24XX - S3C24XX
                      Samsung S3C24XX
# cat proc/asound/devices
  0: [ 0]   : control
  1:        : sequencer
16: [ 0- 0]: digital audio playback
24: [ 0- 0]: digital audio capture
33:        : timer

但现在有一个问题就是aplay能播放,但在开发板上执行#aplay -L时(显示PCM设备),显示没有有效PCM设备。如下:
# aplay -L
null
    Discard all samples (playback) or generate zero samples (capture)
mplay播放出错的信息“[AO_ALSA] alsa-lib: pcm.c:2145snd_pcm_open_noupdate) Unknown PCM default”似乎和它有点相关。发mail到alsa-user的maillist里问这个问题,暂时还没人回复。我想能把这个问题解决,mplayer播放出错的问题就应该快了。
最后,多谢楼上几位的热心帮忙!
回复

使用道具 举报

发表于 2007-12-16 09:57:33 | 显示全部楼层
感觉应该还是 alsa 的问题。是不是 mplayer 的 alsa 输出部分的代码太旧了?识别有问题?
但似乎不应该出这种问题。
回复

使用道具 举报

发表于 2008-2-22 15:15:00 | 显示全部楼层
是alsa-lib库编译的有问题:将alsa-lib编译成动态库,在编译mplayer的时候不要加--enable-static,就能正确识别到alsa了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-3-29 21:16 , Processed in 0.051323 second(s), 15 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表