嵌入式 Mplayer的移植、使用

嵌入式 Mplayer的移植、使用

一、简述

       记--移植开源的Mplayer,并在arm开发板简单的使用Mplayer播放音频。

       打包:链接:https://pan.baidu.com/s/1NtuLr6-5yWzjpnQhRZB9iQ 密码:etbp

二、Mplayer的移植      

       2.1 下载源码:http://www.mplayerhq.hu/MPlayer/releases/    

             ( 根据编译环境(系统、工具链版本)及需求(运行环境等)选择合适版本 )

             

              例子中选择的是:

             

              工具链版本:4.4.1   ( 查询命令:arm-linux-gcc -v      (或 arm-none-linux-gnueabi-gcc -v)     )

              

              编译环境:ubuntu12.01-32bit

              运行环境:GEC6818 cortex-A8 (800W*480H)

       2.2 生成编译Mplayer所需的头文件和库文件

             2.2.1 解压libmad-0.15.1b.tar.gz

                      解压命令:tar -xzvf libmad-0.15.1b.tar.gz -C .       (解压到当前目录下)

                      

             2.2.2 检查、配置、生成对应的Makefile

                      创建目录:/home/liang/mplayer-arm    用来存放生成的头文件和库文件

                        

                      检查、配置命令:

./configure --enable-fpm=arm --host=arm-linux-gcc --disable-shared --disable-debugging --prefix=/home/liang/mplayer-arm CC=arm-linux-gcc

                      其中:

                                --prefix=/home/liang/mplayer-arm    (/home/liang/mplayer-arm:指定编译生成的头文件和库文件存放的路径)

                                --cc=arm-linux-gcc       (arm-linux-gcc:指定的编译器,运行环境是在arm开发板,故指定的是arm工具链)

              

             2.2.3 编译

 make

            修改Makefile 去掉129行 -fforce-mem 标志,因为arm-eabi编译器都不支持这个选项 。

                     

           然后再进行: make 

 

            2.2.4 生成相应的头文件、库文件

make install

     查看生成的头文件和库文件

 

     2.3 编译生成Mplayer

             2.3.1 解压MPlayer-1.0rc2.tar.bz2

                      解压命令:tar -xjvf MPlayer-1.0rc2.tar.bz2 -C .

         

             2.3.2检查、 配置、生成对应的Makefile

./configure --prefix=/home/liang/mplayer-arm  --cc=arm-none-linux-gnueabi-gcc --disable-gui  --target=arm-linux  --host-cc=gcc  --disable-freetype  --enable-fbdev  --disable-mencoder   --disable-sdl --disable-live  --disable-dvdread  --disable-libdvdcss-internal --disable-x11 --enable-cross-compile  --disable-dvdnav --disable-dvdread-internal --disable-jpeg --disable-tga --disable-pnm --disable-tv --disable-ivtv --disable-fontconfig --disable-xanim --disable-win32dll --disable-armv5te --disable-armv6 --enable-static

   

             2.3.3 编译

make -j4

              其中:  -j4  参数表示使用4条线程编译 

 

             2.3.4 生成可执行文件Mplayer

          

     2.4 拷贝到开发板的/bin目录,设置可执行权限

            设置可执行权限:chmod 777 /bin/mplayer

           直接在命令行运行:mplayer xxx.avi     (支持多种格式)

            

            

三、Mplayer的简单使用

       3.1 查看Mplayer 命令列表:mplayer -input cmdlist

                

       3.2  常用到的 Mplayer指令:

loadfile   string   //参数string 为 歌曲名字。 
 
volume 100 1  //设置音量 中间的为音量的大小。
 
mute  1/0 //静音开关 mute 1开启静音,mute 0关闭静音
 
pause  //暂停/取消暂停
 
get_time_length  //返回值是播放文件的长度,以秒为单位。
 
seek value   //向前查找到文件的位置播放 参数value为秒数。seek 5 快进5秒,seek -5 快退5秒
 
get_percent_pos //返回文件的百分比(0--100)
 
get_time_pos //打印出在文件的当前位置用秒表示,采用浮点数
 
volume  [abs] //增大/减小音量,或将其设置为,如果[abs]不为零。volume 5音量+5, volume -5音量-5

quit [value]  //退出MPlayer。可选的整数[value]的值作为返回代码为mplayer的进程(默认值:0)。
 
get_file_name //打印出当前文件名
 
get_meta_album //打印出当前文件的'专辑'的元数据
 
get_meta_artist //打印出当前文件的'艺术家'的元数据
 
get_meta_comment //打印出当前文件的'评论'的元数据
 
get_meta_genre //打印出当前文件的'流派'的元数据
 
get_meta_title //打印出当前文件的'标题'的元数据
 
get_meta_year //打印出当前文件的'年份'的元数据

  3.3 通过命令直接控制 mplayer

       控制台:

                  q:按q(quit)退出。

                  p:按p(pause)暂停。

                  s:按s(SCREENSHOT)截图。

       代码:

                 播放:system( "mplayer test.avi &\n" );   (&:表示在后台运行)

                 暂停:system( "killall -STOP mplayer &\n" );

                 继续:system("killall -CONT mplayer &\n");

                 退出:system( "killall mplayer\n" );

        

  3.4 通过管道控制 mplayer

mplayer -slave -quiet -input file=/mypipe -zoom -x 400 -y 400 test.avi

  其中:

              -slave    默认mplayer是从键盘上获得控制信息,在slave模式下,MPlayer在后台运行,不再截获键盘事件。

              -quiet     不输出冗余的信息。

              -input file=/mypipe       指定mplayer从mypipe管道获取控制命令并执行。(通过mypipe管道控制mplayer)

              //-geometry 0:0       从显示屏的(0,0)作为音频显示区域的左上角。(保留)

              -zoom -x 400 -y 400    限制视频的播放区域,x方向(宽)为400, y方向(高)为400。

              test.avi       要播放的音频路径名。

 注: 管道可以使有名管道,也可以是无名管道。

            

   3.5  接收mplayer的返回信息

           例如想获取音频文件的长度(秒数):system("echo get_time_length>/mypipe");

                   ( 对于有名管道,还可以这样:write(myfifo_fd,"get_time_length\n",strlen("get_time_length\n"));  )

          默认mplayer返回的信息直接输出到标准输出,想要获取这些信息可以这样:

                  将mplayer返回的信息输出到"自己的文件"(比如创建一个管道),即重定向标准输出:dup2()函数。

                   例如:

int out_fd = open("/myfifo", O_RDWR); //打开或创建有名管道myfifo
dup2( out_fd, 1 );//将标准输出重定向为out_fd代表的文件,标准输出的文件描述符为 1。 

注:mplayer的返回信息可能有其他描述信息,例如发送get_time_length命令,返回可能不仅仅是音频的长度,此时需要附加判断。         

  获取音频的总时间长度     get_time_length   ==》 ANS_LENGTH=秒数   (浮点数)

  获取当前播放时刻        get_time_pos      ==》 ANS_TIME_POSITION=秒数   (浮点数)

  获取当前播放进度百分比   get_percent_pos   ==》 ANS_PERCENT_POS=整数   (0--100)

                                                                             

 

===========================以下回复  RwinR 这位兄弟 ==========

测试播放mp4文件 (接上耳机可以听到声音)

测试播放mp3文件 (接上耳机可以听到声音)

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页