音视频项目—基于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 数组

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

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

相关推荐
穿越光年3 小时前
MCP实战:在扣子空间用扣子工作流MCP,一句话生成儿童故事rap视频
人工智能·音视频
深圳市青牛科技实业有限公司 小芋圆3 小时前
CS4334:一款高性能的立体声音频数模转换器
科技·嵌入式硬件·音视频·智能家居·新能源·工控主板
小陈从不熬夜4 小时前
HarmonyOS AVPlayer 音频播放器
华为·音视频·鸿蒙
编程、小哥哥6 小时前
Java面试场景:从音视频到AI应用的技术探讨
spring boot·spring cloud·微服务·音视频·java面试·ai应用
白熊1886 小时前
【图像生成大模型】Step-Video-T2V:下一代文本到视频生成技术
人工智能·opencv·yolo·计算机视觉·大模型·音视频
小咖自动剪辑7 小时前
美女热舞混剪视频批量剪辑生产技术实践:智能处理与原创性提升方案解析
实时互动·音视频·语音识别·实时音视频·视频编解码·美女
Lucifer三思而后行8 小时前
亲测有效!OGG 创建抽取进程报错 OGG-08241,如何解决?
ffmpeg
achene_ql8 小时前
基于QT和FFmpeg实现自己的视频播放器FFMediaPlayer(一)——项目总览
开发语言·qt·ffmpeg
Lucifer三思而后行12 小时前
OGG 更新表频繁导致进程中断,见鬼了?非也!
ffmpeg
Unlimitedz18 小时前
iOS音视频解封装分析
ios·音视频