mplayer的使用

准备

创建构建目录:
mkdir ~/build
zlib 交叉编译

1. 找到源码包,解压到构建目录:

tar xvf zlib-1.2.11.tar.xz -C /home/china/build

2. 进入解压目录

cd /home/china/build/zlib-1.2.11

3. 配置

export CC=arm-linux-gcc
./configure --prefix=/home/china/build/zlib-arm

4. 编译安装

make && make install
mplayer 交叉编译
Mplayer 源码下载网址:
http://www.mplayerhq.hu/MPlayer/releases/
选择版本 MPlayer-1.4
1. 解压、进入解压后的源码目录,修改源码
默认情况下, mplayer 会启用双缓存技术,在 ARM 开发板上播放视频时,会导致屏幕闪烁,需要禁用
打开源码目录下的 libvo/video_out.c
找到 int vo_doublebuffering=1;
修改为 int vo_doublebuffering=0;
保存退出
2. 配置选项 3. 编译
time make
4. 安装
make install
注:安装时会出现错误
install -m 755 -s mplayer /home/china/build/mplayer-arm/bin
strip: Unable to recognise the format of the input file `/home/china/build/mplayer
arm/bin/mplayer’
install: strip process terminated abnormally
原因是 install 时默认使用的 strip 指令不正确,修改 Makefile 手动指定即可
5. 移植
把最终生成的的 mplayer 移植到开发板的 /usr/bin 目录下即可。记得添加可执行权限。
./configure --prefix = /home/china/build/mplayer-arm --cc = arm-linux-gcc --
disable-gui --target = arm-linux --host-cc = gcc --disable-freetype --enable
fbdev --disable-mencoder --disable-sdl --disable-live --disable-dvdread --
disable-x11 --enable-cross-compile --disable-dvdnav --disable-jpeg --disable
tga --disable-pnm --disable-tv --disable-ivtv --disable-fontconfig --disable
xanim --disable-win32dll --disable-armv5te --disable-armv6 --enable-static --
extra-cflags = "-I/home/china/build/zlib-arm/include" --extra-libs = "-
L/home/china/build/zlib-arm/lib -lz"
vim Makefile
# 找到原始的安装指令( 860 行左右),如下:
$(INSTALL) -m 755 $(INSTALLSTRIP) $< $(BINDIR)
# 修改为如下:
$(INSTALL) -m 755 $(INSTALLSTRIP) --strip-program=arm-linux-strip $< $(BINDIR)
# 保存退出
# 重新 make install

1、在自己的工作目录下创建一个管道文件
    mkfifo /home/china/1.fifo 

2、播放音视频文件
    播放指令:
    mplayer -slave -quiet -input  file=/home/china/1.fifo  -geometry  0:0 -zoom -x 640 -y 480  test.mp4 
    指令说明:
    -slave 表示使用mplayer的控制模式
    -quiet 表示不输出解码信息
    -input file 用于指定与mplayer通信的文件
    -geometry 表示显示的起始坐标
    -zoom 表示设置分辨率
    test.mp4 就是要播放的文件

    如果使用程序代码,则调用system函数,把上述指令作为参数即可,如:
    system("mplayer -slave -quiet -input  file=/home/china/1.fifo  -geometry  0:0 -zoom -x 640 -y 480  test.mp4 ")


3、与mplayer通信
    一般的做法是:
    先打开播放时指定的管道文件
    再创建一个新线程播放多媒体文件
    然后主线程通过往指定的fifo文件中写控制指令,典型代码如下:
    fd = open("/home/china/1.fifo", O_RDWR);
    if (fd == -1)
    {
        perror("open fifo error");
        exit(1);
    }
    while (1)
    {
        // 获取点击的坐标值
        pos = get_position();
        printf("(%d, %d) \n", pos.x, pos.y);
        // 判断坐标值的范围,根据坐标范围确定要执行的功能
        if (pos.x >= 0 && pos.x < 400 && pos.y >= 380 && pos.y < 480)
        {
            // 创建一个新的执行分支,新的分支播放音频和视频文件
            pthread_t tid;
            pthread_create(&tid, NULL, play, (void*)filenames[index]);
        }
        // 暂停
        if (pos.x >= 400 && pos.x < 800 && pos.y >= 380 && pos.y < 480)
        {
            // 发送暂停指令
            const char* cmd = "pause\n";
            int ret = write(fd, cmd, strlen(cmd)); 
            printf("write cmd %d bytes \n", ret);
        }
    }

    暂停指令说明:
        如果mplayer正在播放,发送暂停指令,会暂停播放
        如果mplayer处于暂停状态,发送暂停指令,则继续播放

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值