基于Qt的FFmpeg--视频播放

本文介绍了如何在Qt环境中利用FFmpeg实现视频播放。文章提供了环境配置的链接,并分享了一段基于雷神代码的简单修改版,适用于Qt初学者。代码通过SDL2在控制台上运行,但未包含视频源,读者需自行下载。附带了优快云的代码下载链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

该文章讲述如何在Qt上使用ffmpeg进行视频播放

环境配置这里就不再讲了,有需要的朋友可以直接看下面链接

基于Qt的FFmpeg–环节配置https://editor.youkuaiyun.com/md/?articleId=116718558

本章中的代码是基于雷神(直接粘贴,简单修改,主要是在Qt下运行),想要提供给一些想要使用Qt来调用ffmpeg新手的一些启示。

下面展示一下运行界面,使用的是控制台。播放用的SDL2。
在这里插入图片描述
直接粘贴代码使用就可以了,然后我简单给大家讲解一下里面的内容,都会在代码里面添加注释。如果有不对,请指出。共同学习,当前代码只有视频来源没有给出,这里各位可以自行下载,我也会贴出代码工程给各位下载。

#include <QCoreApplication>

extern "C"{
   
   
    #include "libavcodec/avcodec.h"
    #include "libavformat/avformat.h"
    #include "libswscale/swscale.h"
    #include "libavutil/imgutils.h"
    #include <libavutil/time.h>
    #include "libavutil/pixfmt.h"
    #include "libswresample/swresample.h"

    #include "SDL2/SDL.h"
}
#undef main
int main(int argc, char *argv[])
{
   
   
        QCoreApplication a(argc, argv);
        //解封装上下文,ffmpeg里关键
        AVFormatContext	*pFormatCtx;
        
        int				i, videoindex;
        //解码器上下文
        AVCodecContext	*pCodecCtx;
        //解码器
        AVCodec			*pCodec;
        //帧数
        AVFrame	*pFrame,*pFrameYUV;
        //可以作为数据存放的一个空间
        unsigned char *out_buffer;//packet是在解压为一个Frame前的包数据
        AVPacket *packet;
        int y_size;
        int ret, got_picture;
        struct SwsContext *img_convert_ctx;

        char filepath[]="bigbuckbunny_480x272.h265";
        //SDL---------------------------
        int screen_w=0,screen_h=0;
        //SDL屏幕
        SDL_Window *screen;
        //渲染器
        SDL_Renderer* sdlRenderer;
        //渲染文本
        SDL_Texture* sdlTexture;
        //方框
        SDL_Rect sdlRect;
        SDL_Rect sdlRect2;
        FILE *fp_yuv;

		//这个在使用FFmpeg,一般都需要注册
        av_register_all();
        //如果有用到网络相关
        avformat_network_init();
        //初始化
        pFormatCtx = avformat_alloc_context();
		//打开文件
        if(avformat_open_input(&pFormatCtx,filepath,NULL,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值