Linux驱动开发_mplayer播放器开发

持续创作,加速成长!这是我参与「日新计划 6 月更文挑战」的第13天,点击查看活动详情

介绍mplayer播放器如何交叉编译、安装相关的库,在开发板上完成测试。USB wifi (服务器怎么搭建360) : 如何从官网下载源码进行代码移植、安装相关无线工具、让嵌入式设备支持WIFI。

任务1: 安装mffmpeg是什么意思player播放器并学习使用方法

图片格式、音乐文件(.mp3)、视频文件(mp4)…….

学习文件编程: bmp图测试英文片格式、JPG(jpeglib)。

视频编码解码: ffmpeg库。

Mplayer播放器: 源码开源,可以下载、可以更改….。 (X11)

ffmpeg是什么意思装libmad库方法

  1. 在li音乐搜索器nux系统目录下创建libmad文件夹: mkdir /测试手机是否被监控work/l源码网站ibmad -p
  1. 将libmad源码解压到/work/libmad目录下:
[root@wbyq libmad-0.15.1b]# tar xvf /mnt/hgfs/linux-share-dir/libmad-0.15.1b.tar.gz
  1. 配置源码,生成Makefile文件
[root@wbyq libmad-0.15.1b]# ./configure CC=arm-linux-gcc --enable-fpm=arm --host=arm-linux --disable-debugging --prefix=$PWD/_install
  1. 将Makefile文件第129行的-fforce-me音乐表演专业m选项去掉

  2. 编译安装

[root@wbyq libmad-0.15.1b]# make && make install
  1. 将生成服务器操作系统的.so文件拷贝到开发板的lib目录下。

安装mplayer播放器

  1. 在/work目录下创建一个mplayer文件夹

  2. 将源码解压到mplayer目录下

  3. 配置mplayer源码生成Makefile文件

./configure --prefix=$PWD/_install --cc=arm-linux-gcc --host-cc=gcc --target=arm-linux --enable-cross-compile --enable-mad --disable-gui --disable-menu --disable-x11 --yasm="" --extra-cflags=-I/work/libmad/libmad-0.15.1b/_install/include/ --extra-ldflags=-L/work/libmad/libmad-0.15.1b/_install/lib/
  1. 编译源码: make

编译成功之后会在当前目录下生成mplayer可执行文件,将该服务器租用多少钱一年可执行文件拷贝到开发板根文件系统的/bin目录下即可。

  1. 播放测试
[root@tiny4412 ]#mplayer -zoom -x 800 -y 480 /work/video_file/Video_2018-12-11.wmv

Mplayer播放器使用方式:

【1】主模式,运行mplayer播放器源码精灵永久兑换码,播放器将占用当前的终端,在主模ffmpeg合并视频式下mplayer程序不能后台运行。

默认从键盘上(表示输入)获取输入信号对播放器进行控制。

【2】 从模式: 将mplayer播放器当做子进程启动,父进程可以通过管道与子进程之间进行通信。

进程间通信: 无名管道/命名管道(FIFO)、消息队列、内存映射(mmap)、内存共享、信号。

创建子进程的函数: fork函数。

声卡驱动使测试英文

Linux驱动开发_mplayer播放器开发

将该压缩包拷贝到开发板根文件系统目录下,ffmpeg官网解码,运行声卡启动脚本。

开发板上解压:[root@tiny4412 ]#tar xvf /mnt/Tiny4412_SoundCard_wm8960.t测试用例ar -C /work/

Linux驱动开发_mplayer播放器开发

Linux驱动开发_mplayer播放器开发

将耳机插源码1688在开发板的音频输出口上即可听到声音了。

#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <sys/ioctl.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
#include <pthread.h>
​
/*
获取标准输入的数据、写给FIFO文件
*/
void *pthread_func(void *argv)
{
    int fd=open("/mplayer_fifo",2);
    if(fd<0)
    {
        printf("FIFO文件打开失败!n");
        pthread_exit(NULL); //结束当前线程
    }
    char buff[100];
    int len;
    while(1)
    {
        printf("请输入命令:");
        fflush(stdin);        //刷新缓冲区
        fgets(buff,100,stdin); //从键盘上获取数据  get_percent_pos  get_file_name
        len=strlen(buff);     // get_file_name [0~12] [13]='n'
        write(fd,buff,len);  // get_file_name 'n'
        memset(buff,0,100);
    }
}
​
int main(int argc,char **argv)
{
    int pid;
    
    /*1. 创建无名管道*/
    int fds[2];
    pipe(fds);
    
    /*2. 创建子进程*/
    pid=fork();
    
    /*子进程代码: mplayer播放器*/
    if(pid==0)
    {
        /*将子进程的标准输出重定向到管道写端*/
        dup2(fds[1],1);
        
        /*启动子进程*/
        execlp("mplayer","mplayer","-zoom","-x","800","-y","480","-slave","-quiet","-input","file=/mplayer_fifo","/work/video_file/Video_2018-12-11.wmv",NULL);
    }
    else /*父进程*/
    {
        char buff[100];
        int cnt=0;
        
        /*创建新的线程: 从键盘上获取输入的数据,写给播放器的FIFO文件*/
        pthread_t threadID;
        pthread_create(&threadID,NULL,pthread_func,NULL);
        pthread_detach(threadID); //设置分离属性
        
        while(1)
        {
            /*从管道的读端读取数据: 读取就是mplayer播放器输出的数据*/
            cnt=read(fds[0],buff,100);
            buff[cnt]='';
            printf("播放器输出的值=%sn",buff);
        }
    }
    return 0;
}

任务2:制作视频广告机

广告机应用场景: 公交站台、地铁车厢、银行前台大厅、高速公路、公园….

  1. 有些广告机只有视频播放,没有声音。

  2. 广告机都支测试持网络视频文件更新—->文件更新使用现成的服务器: FTP服务器、NFS服务器。

(音乐播放器1) 如何判断服服务器地址务器上那些文件需要下载到本地? 通过shell脚本代码或者使用C语言。

(2) 更新的时间一般是固定的: 2源码交易平台0:00 23:00 …… 通过时间函数判断时间是否到达。

(3) 在视频问好更新的时候,视频文件需要停止播放,可以在屏幕上显示提示(正在更新…..)。

  1. 广告机需要支持自音乐之声动播放,播放一个自动切换下一个、循环播放。

调用读目录、循环遍历目录、得音乐表演专业到视频文件、mplayer播放器需要使用子进程方式启动音乐磁场

广告机: 音量调整、选择视频播放…….都不是广告机的功能—是视频播放器的功能。

发表评论

提供最优质的资源集合

立即查看 了解详情