嵌入式 Mplayer的移植、使用 | 您所在的位置:网站首页 › 6818开发板项目遇到的问题 › 嵌入式 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文件 (接上耳机可以听到声音) |
CopyRight 2018-2019 实验室设备网 版权所有 |