基于FFmpeg的Qt视频播放器

ffmpeg作为开源库,具备跨平台性,被广泛使用于各大视频软件和网站,在视音频开发中占有极其重要的地位。

Qt同样支持跨平台,因此结合qt+ffmpeg制作跨平台视频播放器是比较合适的做法。

​一、环境介绍

操作系统: win10 64位
QT版本:  QT5.14.0
编译器:  MinGW 64
FFMPEG版本: 4.2.2 

二、FFMPEG解码步骤

 (1)首先定义需要用到的结构体,在本客户端中,主要用到了以下结构体。
        AVFormatContext 保存需要读入的文件的格式信息,比如流的个数以及流数据等
        AVCodecContext  保存了相应流的详细编码信息,比如视频的宽、高,编码类型等。
        AVCodec 真正的编解码器,其中有编解码需要调用的函数
        AVFrame用于保存数据帧的数据结构
        AVFrame 用于保存转换之后的帧
        SwsContext 转换器,用于将YUV420P类型的图片转换为RGB类型
        AVPacket 解析文件时会将音/视频帧读入到packet中
 (2)注册解码器,并且初始化自定义的AVIOContext,目的是在主机内存中申请内存空间,并将AVFormatContext的pb指针指向它。在使用avformat_open_input()打开媒体数据的时候,就可以不指定文件的URL了,即其第2个参数为NULL,读取的数据是由read_buffer()提供,read_buffer是回调函数,需要自定义read_buffer使其在视频解码时得到对应的数据。
        av_register_all();
        in_fmt_ctx = avformat_alloc_context();
        unsigned char *aviobuffer=(unsigned char *)av_malloc(1024*15);
        AVIOContext*avio=avio_alloc_context(aviobuffer,1024*15 ,0,NULL,read_buffer, NU L L,NULL);
        in_fmt_ctx->pb=avio;
        int read_buffer(void *opaque, uint8_t *buf, int buf_size){......}
(3)读取接收到的数据的基本信息,用于设置解码器类型。avformat_open_input函数只是读取接收到的数据头,并不会填充流信息,因此我们需要接下来调用avformat_find_stream_info获取流信息,并确定所有的流信息。根据读取到的信息设置解码器的解码类型和解码的宽高度,使用avcodec_open2初始化解码器。
      if(avformat_open_input(&in_fmt_ctx,NULL,NULL,NULL)!=0){......}
      if(avformat_find_stream_info(in_fmt_ctx,NULL)<0){......}
      videoindex=-1;
      for(i=0; i<in_fmt_ctx->nb_streams; i++)   {.....}//在这里查找视频流
      pCodecCtx=in_fmt_ctx->streams[videoindex]->codec;
      pCodec=avcodec_find_decoder(pCodecCtx->codec_id);
      if(avcodec_open2(pCodecCtx, pCodec,NULL)&l

  • 5
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: FFmpeg是一款多媒体处理工具,也可用于播放音视频文件。以下是下载FFmpeg播放器的步骤: 1. 打开FFmpeg官网(https://ffmpeg.org/)。 2. 在主页上方的“Download”选项中选择“Windows Build”或“MacOS Build”。 3. 按照所选操作系统版本选择合适的压缩包下载。 4. 下载完成后,解压缩该文件并将其中的二进制文件(ffmpeg.exe或ffplay.exe)放置到你希望运行它们的文件夹中。 5. 运行二进制文件,命令行中输入“ffplay + 文件名.扩展名”即可播放该视频文件。 FFmpeg播放器为免费开源软件,提供了强大的音视频处理和编辑功能。同时,由于其广泛应用于开发领域,也有一系列可供学习和参考的教程和文档。 ### 回答2: ffmpeg是一款强大的开源多媒体处理工具,也可以作为一个播放器使用。用户可以通过官网下载ffmpeg软件,根据不同的操作系统选择合适的版本。安装完成后,用户可以使用命令行工具在终端中播放音视频文件,也可以使用GUI界面进行播放,并对音视频文件进行剪切、裁剪等操作。对于初学者来说,使用GUI界面播放器会比较方便,只需通过导入文件、选择视频、音频轨道等简单操作,即可开始播放。同时,GUI界面也提供了一些基本的音视频处理功能,如水印、截图等。对于高级用户来说,使用命令行工具则更加灵活,可以通过命令行参数来实现自定义的播放和处理行为。总之,无论是初学者还是高级用户,都可以在ffmpeg播放器中找到适合自己的播放和处理方式。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值