首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

播放器基础--YUV色彩模型

做过camera, 播放器,图片处理的对YUV都不会陌生,但是关于YUV有很多的格式YUV420, NV21, YUV420sp, YV12等等往往令人混乱 介绍 YUV色彩模型利用人类视觉对亮度的敏感度比对色度的敏感度高的特点获得较...与RGB视频信号传输相比,它最大的优点在于只需占用极少的频宽(RGB要求三个独立的视频信号同时传输) 采样格式 YUV的采样格式主要有3种:YUV444 , YUV422, YUV420 YUV 4:4...yuv采样.jpg 存储格式 我们也经常看到YUV420SP, YUV420P 这些后面带这P和SP表示的是存储的方式 两大类:planar和packed。...格式,每个像素点的Y,U,V是连续交替存储的,如yuv444 可能是YUV YUV YUV YUV, yuv420 可能是YYUV,YYUV,UV的顺序可能会调换....有些代码里面packed 也称为 Interleaved YUV420SP, YUV420P中的P表示的都是planar, SP 是 semi-Planar .他们的区别是 YUV420P: YUV都是

97430
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【FFmpeg】SDL 音视频开发 ⑤ ( SDL 播放 YUV 视频 | SDL 播放 YUV 画面流程 | YUV 视频存放位置 | 刷新控制子线程 | 主线程事件处理 )

    一、SDL 播放 YUV 视频 1、前置知识回顾 在 【FFmpeg】SDL 音视频开发 ① ( SDL 窗口绘制 | SDL 视频显示函数 | SDL_Window 窗口 | SDL_Renderer...YUV 画面流程 SDL 播放 YUV 画面流程 : 创建 SDL_Window 窗口对象 : 调用 SDL_CreateWindow 函数 创建 SDL 显示窗口 ; 创建 SDL_Render 渲染器对象...; 4、刷新控制子线程 使用 SDL 播放 YUV 视频时 , 视频画面刷新是在 主线程 中执行的 ; 此处专门开启了一个子线程 , 用于控制 YUV 画面的刷新 ; 在下面的代码中 , 开启了子线程...视频 播放完毕后 子线程会向主线程发送 QUIT_EVENT 事件 , 主线程 收到 QUIT_EVENT 事件 , 就会停止播放 ; // 该函数用于 在子线程 中 控制画面的刷新速度 // 子线程...中 向主线程发送 刷新事件 , 主线程收到 REFRESH_EVENT 事件 , 就会刷新界面 // 播放完毕后 主线程 收到 QUIT_EVENT 事件 , 就会停止播放 // 本函数中设置 每 40ms

    10510

    【FFmpeg】SDL 音视频开发 ⑥ ( SDL 播放 YUV 视频 | YUV 4:2:0 采样 | YUV420P 格式介绍 | 获取 YUV 视频文件 | 读取并加载 YUV 画面数据 )

    博客源码下载 : https://download.csdn.net/download/han1202012/89717218 ; 一、SDL 播放 YUV 视频 1、YUV 4:2:0 采样 在 【音视频原理...】图像相关概念 ④ ( YUV 排列格式 | 打包格式 | 平面格式 | YUV 表示法 | YUV 采样格式表示方法 | YUV 4:2:2 采样 | 上采样与下采样概念 ) 博客中 的 YUV 4:...中 控制画面的刷新速度 // 子线程 中 向主线程发送 刷新事件 , 主线程收到 REFRESH_EVENT 事件 , 就会刷新界面 // 播放完毕后 主线程 收到 QUIT_EVENT 事件 , 就会停止播放...= YUV_HEIGHT; // 视频高度 // SDL 播放窗口 分辨率设置 int win_width = YUV_WIDTH; // 窗口宽度...YUV 视频文件路径 const char *yuv_path = "yuv420p_848x480.yuv"; // YUV文件路径 , 这是一个相对路径 // 设置 视频缓冲区长度

    8510

    Android平台RTMP|RTSP播放器如何回调YUV或RGB数据?

    ​技术选型我们知道,Android平台一般RTMP|RTSP播放器通常不直接提供回调YUV或RGB数据的功能。...如果播放端有视觉分析或类似的需求,需要播放端,能支持YUV或ARG的数据回调,一般来说,可参考的方法如下:1....你可以通过JNI在Android的Java层调用C/C++层的FFmpeg库来解码RTSP流,并获取YUV或RGB数据。步骤:将FFmpeg库集成到你的Android项目中。...解码视频帧,并将YUV或RGB数据从解码器传输到Java层。2....使用第三方RTMP|RTSP播放器直接回调数据以大牛直播SDK的RTMP|RTSP播放模块为例,我们是可以直接设置YUV或RGB数据回调,并提供相关调用示例:btnStartStopPlayback.setOnClickListener

    8510

    基于QT播放器的实现(一)Rgb、YUV格式(附带代码)

    基于QT播放器的实现(一)Rgb、YUV格式 色度空间转换 YUV转RGB的公式 对本地RGB32视频图像的播放 色度空间转换 YUV颜色模型其实常用于视频传输和图像压缩。...这就出现了YUV4:4:4、YUV4:2:2、YUV4:1:1等格式。 RGB32使用32位来表示一个像素,RGB分量各用去8位,剩下的8位用作Alpha通道或者不用。...Y + 1.402 * (V-128) G = Y – 0.34413 * (U-128) – 0.71414*(V-128) B= Y + 1.772*(U-128) 对本地RGB32视频图像的播放...horizontalSlider->setRange(0,maxValue-1);//设定滑动条的范围 mThread->startPlay(filePath,width,height);//启动线程显示播放...} 3、启动线程 进行播放 void TransCodeThread::startPlay(QString infile,int width,int height) { mFilePath =

    1.7K20

    「SDL第八篇」支持倍速与慢放的YUV视频播放

    前言 今天向大家介绍一下如何通过 SDL 实现一个YUV视频播放器。它与上次介绍的音频播放器一样,也是一个简单的不能再简单的播放器了。只不过一个是播放的音频PCM数据,另一个播放的时视频YUV数据。...实现视频播放的原理 YUV播放器其实比较简单,就是设置一个定时间,每隔一段时间就渲染一帧数据。大家小时候都干过一件事儿,就是在自已的编习本上画几张连续的图,用手一翻就可以看到动画效果。...另外,如果原来每秒25帧的视频,现在你按每秒50帧播放就会起到倍速播放的效果。如果每秒 12帧,就会有慢动作的效果。 理解YUV 在我们开始介绍代码之前,你要先了解一下什么是YUV。...如果想做倍速播放,你可以调整一下 delay时间,如果从 40ms 减为 20ms 播放速度就会快一倍。如果40ms调整为 80ms播放速度就会慢一倍。...同时还介绍了如何让YUV视频倍速播放与慢速播放。 希望本文能对你所有帮助,谢谢!

    1K30

    C++】C 语言C++ 语言的关系 ( C 语言发展 | C 语言缺陷 | C 语言 + 面向对象 + 高级语言特性 | C++ 语言增加内容 | C 语言C++ 语言应用场景 )

    一、C 语言发展 C 语言 被开发之前 并 没有经过 缜密 的 设计 , 而是在 使用过程中 逐渐完善的 ; C 语言发展经过如下阶段 : 初始阶段 : 1972年至1978年 , C语言 初步形成 ,...C99 , C11 , C17 等标准 , 以满足新的编程需求 ; 二、C 语言缺陷 C 语言有如下缺陷 : C 语言 没有经历过 缜密的 设计过程 , 都是根据需求逐渐完善的 , 出现了很多缺陷和漏洞...2、C 语言C++ 语言关系 C 语言C++ 语言 并 不是 竞争关系 ; C++ 语言 是 以 C 语言为基础 的 加强版本编程语言 , 可以看作是更好的 C 语言 , 在 C++ 语言...中 , 可以使用 C 语言语法 , 对 C 语言完全兼容 ; C++ 语言 包含 C 语言 , 在 C++ 代码中可以使用 C 语言的语法 , 但是在 C 语言中不能使用 C++ 的语法 ; 3、C++...语言应用场景 C 语言C++ 语言的应用场景 : C语言 应用场景 : 系统软件、操作系统、编译器等 底层系统级应用 ; C++ 语言 应用场景 : 大型应用程序、游戏 等更 高级的应用 ; 在不同的

    25920

    C语言C语言入门知识

    一、主函数 C语言的主函数是main()函数,有且仅有一个。 例如: int main() { return 0; } 是一个标准的C语言主函数。...二、输入、输出函数 C语言中的输出函数为printf,输入函数为scanf,使用前需要引用头文件#include 。...(2)C语言中的常见单位(从小到大): bit(比特)<byte(字节)<KB<MB<GB<TB<PB<..... 1byte = 8bit 1KB = 1024byte 1MB = 1024KB...四、变量和常量 4.1 变量的使用 C语言中常量是不变的值,变量是可变的值 创建变量的使用: int age = 10; char ch = 'w'; float weight = 45.5f...4.3 常量 C语言中的常量分为字面常量,const修饰的常变量,#define 定义的标识符常量,枚举常量。 (1)字面常量:100,'w',3.14等。

    14010

    花椒前端基于WebAssembly 的H.265播放器研发

    Web 端软解码 目前各主流浏览器对 H.265 播放的原生支持情况不够理想,Web 端几大浏览器全部不支持 H.265 原生播放,Web 端的 H.265 播放需要通过软件解码来完成。 ?...但我们知道,FFmpeg 是用 C 语言开发的,如何把 FFmpeg 运行在 Web 浏览器上,并且给其输入待解码的直播流数据呢?使用 WebAssembly 能够解决我们的问题。...WebAssembly WebAssembly 是一种新的编码方式,可以在现代的网络浏览器中运行 - 它是一种低级的类汇编语言,具有紧凑的二进制格式,并为其他语言提供一个编译目标,以便它们可以在 Web...到目前为止,已经有很多高级语言先后支持编译生成 Wasm,从最早的 C/C++、Rust 到后来的 TypeScript、Kotlin、Scala、Golang,甚至是 Java、C# 这样的老牌服务器端语言...YUV 视频数据的呈现 YUV 的采样主要有 YUV4:4:4,YUV4:2:2,YUV4:2:0 三种,分别表示每一个 Y 分量对应一组 UV 分量、每两个 Y 分量共用一组 UV 分量、每四个 Y

    5.8K96
    领券