音视频项目—基于FFmpeg和SDL的音视频播放器解析(十九)

介绍

在本系列,我打算花大篇幅讲解我的 gitee 项目音视频播放器,在这个项目,您可以学到音视频解封装,解码,SDL渲染相关的知识。您对源代码感兴趣的话,请查看基于FFmpeg和SDL的音视频播放器

如果您不理解本文,可参考我的前一篇文章音视频项目---基于FFmpeg和SDL的音视频播放器解析(十八)

解析

接着上文,我们继续解析 videooutput 的函数

首先,我们看构造函数

cpp 复制代码
VideoOutput::VideoOutput(AVSync* avsync, AVRational time_base, AVFrameQueue* frame_queue, int video_width, int video_height){
    this->avsync = avsync;
    this->time_base = time_base;
    this->frame_queue = frame_queue;
    this->video_width = video_width;
    this->video_height = video_height;
}

这比较好理解,就是一些私有成员变量的赋值

Init 函数
cpp 复制代码
int VideoOutput::Init(){
    if(SDL_Init(SDL_INIT_VIDEO)){
        return -1;
    }
    win = SDL_CreateWindow("player", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, video_width, video_height, SDL_WINDOW_OPENGL | SDL_WINDOW_RESIZABLE);
    if(!win){
        return -1;
    }

    renderer = SDL_CreateRenderer(win, -1, 0);
    if(!renderer){
        return -1;
    }

    texture = SDL_CreateTexture(renderer, SDL_PIXELFORMAT_IYUV, SDL_TEXTUREACCESS_STREAMING, video_width, video_height);
    if(!texture){
        return -1;
    }

    yuv_buf_size = video_width * video_height * 1.5;
    yuv_buf = new uint8_t[yuv_buf_size];
}

SDL_Init 初始化视频设备

SDL_CreateWindow 创建窗口,后面是参数,这里不做深究。

SDL_CreateRenderer 创建渲染器,后面的参数也不做深究

SDL_CreateTexture 创建纹理

然后,赋值 yuv 数组长度为 1.5 倍,这设计到 YUV420 原理,这篇文章不做深究

最后,创建 yuv 数组

好了,今天就解析到这里。下文解析后面的函数。

欲知后事如何,请听下回分解。

相关推荐
国服第二切图仔8 小时前
鸿蒙 Next 如何使用 AVRecorder 从0到1实现视频录制功能(ArkTS)
华为·音视频·harmonyos
小正太浩二8 小时前
视频去动态水印软件HitPaw安装和使用教程
音视频·视频无水印软件
骄傲的心别枯萎8 小时前
RV1126 NO.47:RV1126+OPENCV对视频流进行视频腐蚀操作
人工智能·opencv·计算机视觉·音视频·rv1126
骄傲的心别枯萎8 小时前
RV1126 NO.48:RV1126+OPENCV在视频中添加时间戳
人工智能·opencv·计算机视觉·音视频·视频编解码·rv1126
沉迷单车的追风少年8 小时前
Diffusion Models与视频超分(3): 解读当前最快和最强的开源模型FlashVSR
人工智能·深度学习·计算机视觉·aigc·音视频·视频生成·视频超分
CV实验室8 小时前
CV论文速递:覆盖视频理解与生成、跨模态与定位、医学与生物视觉、图像数据集等方向(11.03-11.07)
人工智能·计算机视觉·音视频
EasyGBS17 小时前
智能安防新篇章:EasyGBS助力重塑物业视频管理服务
音视频
骄傲的心别枯萎19 小时前
RV1126 NO.45:RV1126+OPENCV在视频中添加LOGO图像
人工智能·opencv·计算机视觉·音视频·rv1126
骄傲的心别枯萎21 小时前
RV1126 NO.46:RV1126+OPENCV对视频流进行视频膨胀操作
人工智能·opencv·计算机视觉·音视频·rv1126
王道长服务器 | 亚马逊云1 天前
AWS + 发财CMS:高效采集站的新形态
服务器·网络·云计算·音视频·aws