MPG123笔记

经验总结:

1.mpg123到底是什么东西?

    mpg123是一个音频解码工具,负责解码,然后调用驱动播放音乐或者视频。(默认调用的驱动是dps/alsa)。

2.如何使用mpg123?

    在官方网站可以下载到mpg123的源码。当然源码也有win和Linux的,我所下载的版本分别为: 

    mpg123-0.59r-gpl

    里面没有configure文件,但是有Makefile文件,修改gcc(CC 交叉编译器位置)以及头文件位置(CFLAGS 开发板内核include位置,在前面要加上-I)。在终端运行make将会生成一个名为mpg123的可执行文件,下载到开发板上面,./mpg123 *.mp3 就可以播放音乐。也可以在运行的时候添加后缀 ./mpg123 -C *.mp3(实现键盘控制的功能,s为暂停,f为下一曲,坑爹的是没有上一曲与音量的加减)。

使用方法;
  -v 打印播放时间                                                         -q  不打印标题,默认是打印的
  -t  测试程序,没有输出                                             -s  解码后的pcm输出到屏幕(默认是送到声卡驱动播放)
  -w  将播放的pcm打包成wav输出,而不是播放      
  -k n skip多少帧播放,用于seek用                          -n n  只解码多少帧
  -c 测试过,没看出来什么效果                                  -y 显示同步错误
  -b 改变输出buf的大小(不常用)                              -f  10000 改变声音系数,可以用来调节声音大小
  -os,-ol,-oh  output to built-in speaker,line-out connector,headphones
  -d k  每隔k帧播放一次,用于跳帧,实际当中可以用来快进快退   
  -C  产生热键校园: s 应用pause ,pp用于换房播放 q用于退出

注:尝试了通过进程间通讯的方式向程序发送‘s’,并没有让音乐暂停,而且程序在C程序里面启动的后停下来的时候终端会出现问题。按键就出现#。但是通过控制进程的方法实现了暂停与播放,方法为暂停进程和恢复进程

("kill -TSTP `pidof mpg123`"  "kill -CONT `pidof mpg123`")。

程序中启动可执行程序的语句为

(system:重新运行一个程序,execlp:将当前进程替换)。

( system("./mpg123 trxd.mp3 &") ,  execlp( "./mpg123", "./mpg123","-C" ,"trxd.mp3",NULL ) )。


------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

mpg123-1.25.2

这个版本里面东西比较多,有configure文件,在编译之前需要先运行configure文件(./configure),运行后就会生成Makefile文件,然后先make,接着make install,最终编译完成后会在src文件夹下面生成一个mpg123的可执行文件,而且在终端也能直接mpg123  *.mp3(个人认为是一个软件包安装完成了,在Linux下面有mpg123的软件了,所以可以直接使用)。

但是在系统中会报错:

原:main: [src/mpg123.c:309] error: out123 error 3: failure loading driver module

翻译后:主:[src / mpg123.c:309]错误:out123错误3:加载驱动程序模块失败。

(本人怀疑是没有驱动,在Linux下面的 /dev 目录下确实没有dsp/alsa驱动,所以文件才会报错)。

但是在编译成功后会在Linux下面的 /usr/local/lib 文件夹下面生成动态库与静态库文件。

动态库为.so文件,用的时候加载不用不加载,如果移植的话需要将动态库一起移植到开发板上面。   静态库为 .a 文件,在编译的时候就与程序编译到一起了,程序会有点大,但是不需要将静态库移植到开发板上面,只需要将编译好的文件放在开发板上面就可以运行。

也曾尝试过修改gcc以及添加头文件的路径,但是程序会报错,没有交叉编译成功,出错愿意有可能是里面有win32文件的原因,尝试过在Makefile中删除有关win32的东西,但是4000+的Makefile实在是无从下手。

在这个版本的说明中,热键里面有,上一曲下一曲,音量的控制等。

您可以指定选项-C以启用终端控制界面,通过按某个键可以影响当前标题/播放列表的播放:
  - =终端控制键= - 
[s]或[]中断/重新开始播放(即'暂停')
[f]下一首歌曲
[d]之前的曲目
[b]回到赛道的开始
[p]暂停当前声音块的循环
[。]向前
[,]倒带
[:]快进
[;]快退
[>]罚款前进
[<]倒带
[+]音量增加
[-] 音量减小
[R] RVA开关
[v]详细切换
[l]列出当前播放列表,指示当前的曲目
[t]显示标签信息(再次)
[m]打印MPEG标题信息(再次)
[h]这个帮助
[Q]退出

您可以通过修改term.h来更改这些绑定以符合您的喜好。

注意:此接口不需要在_every_ platform / build上可用。


想过将这个版本里面的功能添加到可用的版本中,但是在实现的时候发现在功能中有好多函数在可用的版本中没有,尝试将热键的 .c 与 .h文件直接拷贝过去,结果实现不了。


注:无论是使用静态库还是动态库都要连接,要不然会报错,而且如果要移植到开发板上面库可能也要交叉编译。不然可能会出现找不到文件。


---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- 总结 -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


目标为带有播放列表,点击播放列表里面的可以选择播放,带有上一曲下一曲,暂停播放,调节声音的音乐播放器。


目前实现功能:暂停与播放(还不是很满意)。


个人觉的后期还是要修改源码,要不然可能实现不了,也可以移植库文件,然后将程序重写,但是技术有限,修改源码都不知从何下手呢。


原因:虽然可以使用进程间通讯,但是mpg123是通过键盘按键的消息控制快进,暂停什么的。

         虽然可以通过暂停进程的方式实现暂停与播放,但是不可以实现音量的加减。


可能没有我想的那么难,但是现在的我还没有理解到位,先做个笔记,免得忘了。



加油,你是最棒的!!!

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值