当前位置: 首页 > news >正文

太原模板网站建站深圳网络营销渠道

太原模板网站建站,深圳网络营销渠道,页面设计公司哪家好,如何做登陆界面的网站播放YUV视频的步骤 初始化SDL库: 目的:确保SDL库正确初始化,以便可以使用其窗口、渲染和事件处理功能。操作:调用 SDL_Init(SDL_INIT_VIDEO) 来初始化SDL的视频子系统。 创建窗口用于显示YUV视频: 目的:…

播放YUV视频的步骤

  1. 初始化SDL库:
  • 目的:确保SDL库正确初始化,以便可以使用其窗口、渲染和事件处理功能。
  • 操作:调用 SDL_Init(SDL_INIT_VIDEO) 来初始化SDL的视频子系统。
  1. 创建窗口用于显示YUV视频:
    目的:创建一个窗口作为显示YUV视频的目标。
    操作:使用 SDL_CreateWindow 创建一个SDL窗口,并指定窗口的位置、大小和标志(如是否全屏等)。你可以根据需要自定义窗口的属性。
  2. 创建渲染器:
  • 目的:创建一个渲染器,用于在窗口中绘制图像。
  • 操作:使用 SDL_CreateRenderer 创建一个渲染器。可以选择硬件加速和垂直同步选项以提高性能和视觉质量。
  1. 创建纹理并设置颜色格式:
  • 目的:创建一个纹理对象,用于在GPU中存储图像数据,并设置纹理的颜色格式(如YUV420P)。
  • 操作:使用 SDL_CreateTexture 创建一个纹理,指定像素格式(例如 SDL_PIXELFORMAT_YV12 或 SDL_PIXELFORMAT_IYUV),以及访问模式(如 SDL_TEXTUREACCESS_STREAMING)。
  1. 循环读取YUV文件并更新纹理:
  • 目的:从YUV文件中逐帧读取原始像素数据,并将每一帧的数据更新到纹理中,完成每一帧的渲染。
  • 操作:在一个循环中读取YUV文件中的每一帧数据,使用 SDL_UpdateYUVTexture 将Y、U、V平面的数据分别更新到纹理中,然后调用 SDL_RenderClearSDL_RenderCopySDL_RenderPresent 来刷新屏幕以显示当前帧。确保每帧之间有适当的延时以维持正确的播放速度。
  1. 清理资源:
    目的:释放所有分配的资源,确保没有内存泄漏。
    操作:在程序结束时调用相应的销毁函数(如 SDL_DestroyTexture、SDL_DestroyRenderer 和 SDL_DestroyWindow),最后调用 SDL_Quit 退出SDL库。

示例代码如下:

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <SDL2/SDL.h>
#include <QDebug>
#include <QFile>#define RET(judge,SDL_Init) \if(judge) \{\qDebug() << #SDL_Init << "error" << SDL_GetError();\return;\}
#define FILENAME "D:/ffmpeg/in.yuv"
#define PIXEL_FORMAT SDL_PIXELFORMAT_IYUV
#define IMG_W 352
#define IMG_H 288MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);_widget = new QWidget(this);//设置窗口位置和大小_widget->setGeometry(100,0,IMG_W,IMG_H);//初始化子系统RET(SDL_Init(SDL_INIT_VIDEO),SDL_Init);//创建一个窗口//标题-X-Y-width-height_window = SDL_CreateWindowFrom((void *)_widget->winId());RET(!_window,SDL_CreateWindow);//创建渲染上下文--用于渲染图形到窗口//这SDL_RENDERER_ACCELERATED -- 个标志告诉 SDL 尝试创建一个使用硬件加速的渲染器//SDL_RENDERER_PRESENTVSYNC -- 这个标志使渲染器的呈现操作同步到显示器的垂直同步(VSync)_renderer = SDL_CreateRenderer(_window, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC);//如果创建失败if(!_renderer){_renderer = SDL_CreateRenderer(_window,-1,0);RET(!_renderer,SDL_CreateRenderer);}//创建纹理t_texture = SDL_CreateTexture(_renderer,PIXEL_FORMAT,SDL_TEXTUREACCESS_STREAMING,IMG_W,IMG_H);RET(!_texture,SDL_CreateTextureFromSurface);//打开YUV文件_file.setFileName(FILENAME);if(!_file.open(QFile::ReadOnly)){qDebug() << "_file open error" << FILENAME;return;}
}MainWindow::~MainWindow()
{delete ui;_file.close();SDL_DestroyRenderer(_renderer);SDL_DestroyTexture(_texture);SDL_DestroyWindow(_window);SDL_Quit();//初始化子系统后必须做一个退出操作
}void MainWindow::on_pushButton_clicked()
{//开启定时器_timerId = startTimer(60);}//每隔一段事件就会调用
void MainWindow::timerEvent(QTimerEvent *enent)
{int imgSize = IMG_W * IMG_H * 1.5;char data[imgSize];if(_file.read(data,imgSize) > 0){//将YUV的像素数据填充到texture -- nullptr空表示整个texture都是RET(SDL_UpdateTexture(_texture,nullptr,data,IMG_W),SDL_UpdateTexture);//设置绘制颜色(画笔颜色)SDL_SetRenderDrawColor(_renderer,0,0,0,SDL_ALPHA_OPAQUE);//用绘制颜色(画笔颜色)清除渲染目标---也就是覆盖SDL_RenderClear(_renderer);//拷贝纹理数据到渲染目标(默认时window)RET(SDL_RenderCopy(_renderer,_texture,nullptr,nullptr),SDL_RenderCopy);//更新所有的渲染操作到屏幕上SDL_RenderPresent(_renderer);}else{//文件数据已经读取完毕killTimer(_timerId);}}

由于是一个视频,所以只截取了一个照片
在这里插入图片描述

http://www.hkea.cn/news/213101/

相关文章:

  • 手机网站设计要素推广竞价
  • 久久医药网seo推广培训费用
  • 网站做301顶级域名需要绑定网站排名掉了怎么恢复
  • wordpress app 源码合肥seo整站优化网站
  • 建立网站基本步骤安仁网络推广
  • 网页建设方案怎么写网站seo优化心得
  • 还没有做网站可以先备案域名吗seo怎么提升关键词的排名
  • 做网站原型图软件优化设计七年级下册语文答案
  • 2023年舆情分析报告seo优化宣传
  • 武汉网站建设 熊掌号最佳磁力引擎吧
  • 教育平台网站开发品牌运营
  • 91人才网赣州招聘网安卓优化大师app下载安装
  • 合肥网页模板建站营业推广策划
  • 网站做301根目录在哪教育培训机构平台
  • 企业做网站域名需要自己申请吗深圳百度推广客服电话多少
  • 备案网站容易被收录公司网站建设费用多少
  • 4s店网站建设方案百度app下载最新版
  • 创建电子商务网站的7个步骤做网站推广需要多少钱
  • DW怎么做电商网站梅花seo 快速排名软件
  • 哪个网站可以查企业信息今日热搜榜官网
  • 做网站有必要注册商标吗河北百度seo关键词
  • 网站更换服务器教程下载app到手机上并安装
  • 学校网站建设都是谁做的网络舆情分析
  • 怎么把现有网站开发php昆明seo排名外包
  • 网站桥页怎么找理发培训专业学校
  • 谷城网站开发百度导航官网
  • 做网站不优化平面设计网站
  • 聊城做网站的公司价格谷歌seo软件
  • 支部网站及活动室建设网页广告调词平台
  • 网站建设的企业抚州seo外包