粤嵌gec6818开发板-播放视频、音频文件(管道文件控制)

        前段时间做了一个项目,用到了linux环境下gec6818开发板播放视频、音频文件,在这里给大家分享一下。

        这里使用的方法是利用mplayer播放器进行播放,首先先给开发板装上mplayer播放器,这里就不详细说明了。

        我用的是管道文件来控制视频。

        如何使用 mplayer 播放音视频文件:

  • 确保开发板中有音视频文件(.mp3 .avi [ 某些压缩格式的MP4也行 ] )
    • 直接使用 命令进行播放
mplayer  3.avi // 文件名可以是视频文件,也可以是音频文件
mplayer  3.avi  -geometry 100:200 -zoom -x 400 -y 200

      

//判断管道文件是否存在
    if(access("/fifo",F_OK))
    {
        if(mkfifo("/fifo",0777)==-1)
        {
            printf("创建管道文件失败\n");
            return -1;
        }
        printf("创建管道文件成功\n");
    }

    //打开管道文件
    int fd = open("/fifo",O_RDWR);
    if(fd==-1)
    {
        printf("打开管道文件失败\n");
        return -1;
    }
    printf("打开管道文件成功\n");

//播放视频并且链接管道文件
            sprintf(video_name,"mplayer -slave -quiet  -input file=/fifo -geometry 0:0 -zoom -x 800 -y 400 /%d.avi &",video_num);
            system(video_name);
            qidong_flag=1;
            printf("开始播放\n"); 


        可以通过管道文件对视频、音频播放进行控制

write(fd,"pause\n",strlen("pause\n"));
printf("播放 暂停\n");

write(fd,"volume +10\n",strlen("volume +10\n"));
printf("音量+\n");

write(fd,"volume -10\n",strlen("volume -10\n"));
printf("音量-\n");

        下面是一个示例

#include <stdio.h>
#include <stdlib.h>

//管道文件描述符
int fd_fifo;

int Video_Init()
{
  //判断是否存在管道文件,不存在才创建
  if(access("/fifo",F_OK))//默认管道文件创建在根目录  F_OK:判断是否存在
  {
    //如果条件成立,不存在
    mkfifo("/fifo",777);//创建管道文件的函数
  }

  fd_fifo = open("/fifo",O_RDWR);
  if(fd_fifo == -1)
  {
    printf("创建管道文件失败!\n");
    return -1;
  }

  return 0;
}

int Send_Cmd(char *cmd)
{
  write(fd_fifo,cmd,strlen(cmd));

  return 0;
}

int main()
{
  printf("启动视频播放器! \n");
  //显示视频播放器界面
  Video_Init();
  //启动视频播放器,并且指定管道文件
  system("mplayer -slave -quiet  -input file=/fifo -geometry 0:0 -zoom -x 800 -y 400 Faded3.avi &");
  //-slave:从模式 让播放器从管道文件接送命令
  //-quiet:解除冗余模式
  //-input:指定管道文件的路径
  //geometry x:y视频画面的左上角坐标
  //zoom启动缩放模式
  sleep(1);
  //Display_Pic("/windows_pic/video.bmp",0,0,800,480);
  while(1)
  {
    //触摸屏函数
    Get_Touch_Data();
    if(touch.type == EV_KEY && touch.code == BTN_TOUCH && touch.value == 0)//判断手是否离开
    {

        if(P_I.x>350 && P_I.x<460 && P_I.y>400 && P_I.y<480)//继续、暂停
        {
            printf("暂停 继续 !\n");
            Send_Cmd("pause\n");
        }

        if(P_I.x>0 && P_I.x<40 && P_I.y>400 && P_I.y<480)//音量+
        {
            printf("音量+ !\n");
            Send_Cmd("volume +10\n");
        }

        if(P_I.x>50 && P_I.x<100 && P_I.y>400 && P_I.y<480)//音量-
        {
            printf("音量- !\n");
            Send_Cmd("volume -10\n");
        }

        if(P_I.x>550 && P_I.x<650 && P_I.y>400 && P_I.y<480)//快进
        {
          printf("快进 !\n");
          Send_Cmd("seek +10\n");
        }

        if(P_I.x>150 && P_I.x<250 && P_I.y>400 && P_I.y<480)//快退
        {
          printf("快退 !\n");
          Send_Cmd("seek -10\n");
        }

        if(P_I.x>700 && P_I.x<800 && P_I.y>400 && P_I.y<480)//退出
        {
            printf("退出 !\n");
            break;
        }
    }
  }
  return 0;
}

        我最近建了一个嵌入式的QQ交流群,感兴趣的可以进群了解一下,我会在群里分享一些常用的代码封装,以及一些项目的源码。QQ群讨论也是完全开放,只要不打广告大家可以就嵌入式尽情的沟通和交流,大家对文章中的内容有疑问也可以在群中提出,有空会尽我所能给大家一些帮助。QQ群号:643408467

  • 9
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值