
音视频开发
文章平均质量分 96
H264 H265码流深度分析深挖视频底层原理
Everbrilliant89
怕啥真理无穷进一寸有一寸的欢喜(VX:18566660283),Github地址:https://github.com/wangyongyao1989
展开
-
音视频之H.265/HEVC编解码并处理
新一代视频压缩标准 H.265/HEVC 在很大程度上是为了满足人们对于高分辨率视频的需求,而对于高清乃至超高清视频,分辨率达到了4kx2k或8kx4k,无论是从编码还是从解码的角度,其计算复杂度都是极高的。而为了提高H.265/HEVC的网络适应能力,其压缩性能与H.264/AVC 相比显著提高,相同条件下的码率可以降低50%,获得性能提升的代价就是编解码复杂度的大大提高。 与H.264/AVC相比,H.265/HEVC的复杂度主要体现在以下几点:H.265/HEVC 的帧内预测模式增多,原创 2025-05-06 16:52:40 · 1013 阅读 · 0 评论 -
音视频之H.265/HEVC网络适配层
H.265/HEVC也采用了视频编码层(Video Coding Layer,VCL)和网络适配层(Network Abstract Layer,NAL)的双层架构,以适应不同的网络环境和视频应用。网络适配层的主要任务是对视频压缩后的数据进行划分和封装,并进行必要的标识,使其可以很好地适应复杂多变的网络环境。当前的网络类型多种多样,不同的网络环境具有不同的特性,压缩视频在其中进行传输时必然会受到影响。例如,不同类型的网络支持的最大传输单元(Maximum Transmission Unit,MTU)可能有所原创 2025-04-29 16:19:10 · 982 阅读 · 0 评论 -
音视频之H.265/HEVC熵编码
熵编码是指按信息熵原理进行的无损编码方式,无损编码也是有损视频编码中的一个关键模块,它处于视频压缩系统的末端。编码把一系列用来表示视频序列的元素符号转变为一个用来传输或存储的压缩码流,输入的符号可能包括量化的变换系数、运动矢量信息、预测模式信息等。熵编码可以有效去除这些视频元素符号的统计几余,是保证视频编码压缩效率的重要工具之一。原创 2025-04-27 18:12:18 · 1262 阅读 · 0 评论 -
音视频之H.265/HEVC环路后处理
类似于以往的视频编码标准,H.265/HEVC 仍采用基于块的混合编码框架,方块效应、振铃效应、颜色偏差以及图像模糊等失真效应仍存在于采用 H.265/HEVC 标准的压缩视频中。为了降低这类失真对视频质量的影响,H.265/HEVC中采用了环路滤波技术叫(In-loop Filtering),包括去方块滤波(Deblocking Filter)和像素自适应补偿(Sample Adaptive Offset)两个模块。去方块滤波用于降低方块效应,像素自适应补偿用于改善振铃效应,这两个模块在编码框架中的位置如原创 2025-04-24 19:12:37 · 1352 阅读 · 0 评论 -
音视频之H.265/HEVC量化
量化 (Quantization) 是指将信号的连续取值(或大量可能的离散取值)映射为有限多个离散幅值的过程,实现信号取值多对一的映射。在视频编码中,残差信号经过离散余弦变换 (DCT) 后,变换系数往往具有较大的动态范围。因此对变换系数进行量化可以有效地减小信号取值空间,进而获得更好的压缩效果。同时,由于多对一的映射机制,量化过程不可避免地会引入失真,它也是视频编码中产生失真的根本原因。原创 2025-04-24 15:02:06 · 1151 阅读 · 0 评论 -
音视频之H.265/HEVC变换编码
变换编码图像变换编码是指将以空间域中像素形式描述的图像转换至变换域,以变换系数的形式加以表示。绝大多数图像都含有较多平坦区域和内容变化缓慢的区域,适当的变换可使图像能量在空间域的分散分布转为在变换域的相对集中分布,以达到去除空间几余的目的,结合量化、“z”扫描和熵编码等其他编码技术,可以获得对图像信息的有效压缩。H.265/HEVC标准规定,在帧内4x4式亮度分量残差编码中使用4x4 整数 DST,而在帧内其他模式、帧间所有模式,以及所有色差分量的残差编码中一律使用整数DCT。这主要是由于帧内预测利用周围已原创 2025-04-18 18:02:20 · 1287 阅读 · 0 评论 -
音视频之H.265/HEVC预测编码
预测编码是视频编码中的核心技术之一。对于视频信号来说,一幅图像内邻近像素之间有着较强的空间相关性,相邻图像之间也有很强的时间相关性。因此,先进的视频编码往往采用帧内预测和帧间预测的方式,使用图像内已编码像素预测邻近像素,或利用己编码图像预测待编码图像,从而有效去除视频空域和时域的相关性。视频编码器对预测后的残差而不是原始像素值进行变换、量化、熵编码,由此大幅提高编码效率。自差分编码被应用于视频压缩以来,预测编码一直是视频编码标准的重要内容。原创 2025-04-16 18:04:11 · 1080 阅读 · 0 评论 -
音视频之H.265/HEVC编码框架及编码视频格式
H.265/HEVC采用混合编码框架,包括变换、量化、熵编码、帧内预测、帧预测以及环路滤波等模块。但是,H.265/HEVC几乎在每个模块都引入了新的编码技术。原创 2025-04-12 18:48:01 · 1125 阅读 · 0 评论 -
音视频之H.265码流分析及解析
H.265又称为HEVC(全称High Efficiency Video Coding,高效率视频编码,本文统称为H.265),是 ITU-T H.264/MPEG-4 AVC标准的继任者。2004年由ISO/IEC Moving Picture Experts Group(MPEG)和 ITU-T Video Coding Experts Group(VCEG)作为ISO/IEC 23008-2 MPEG-H Part 2或称作ITU-T H.265开 始制定。第一版的HEVC/H.265视频压缩标准在原创 2025-03-19 10:30:35 · 1299 阅读 · 0 评论 -
GL C++显示相机YUV视频数据使用帧缓冲FBO后期处理,实现滤镜功能。
帧缓冲对象(Framebuffer Object, FBO)是 OpenGL 中用于管理渲染目标的核心工具。它允许你将渲染结果输出到纹理、渲染缓冲对象(Renderbuffer)或其他自定义的缓冲区,而不是默认的屏幕缓冲区。帧缓冲在图形渲染中具有重要作用。 以下是帧缓冲的主要作用和应用场景:原创 2025-01-23 20:41:18 · 1692 阅读 · 0 评论 -
OpenGL C++视频中添加图片及文字水印播放并录制
根据前置储备,该功能的实现流程:创建一个GLThread的OpenGL运行环境;YUV数据绘制到OpenGL纹理中;图片纹理创建绘制到glViewport;文字渲染绘制到glViewport;录制视频的surface并根据此切换GLContext上下文交换(swapBuffer)渲染与显示的视频数据 ;MediaCodec获取出encodeData写入MediaMuxer成为MP4文件格式的视频原创 2024-11-14 21:33:46 · 1375 阅读 · 0 评论 -
OpenGL Texture C++ Camera Filter滤镜视频录制
OpenGL Texture C++ Camera Filter滤镜视频录制; 基于文章1/2/3的代码,结合Google开源项目grafika中的WindowSurface.java/Coregl.java/TextureMovieEncoder2.java/VideoEncoderCore.java创建出录制视频的surface并根据此切换GLContext上下文交换(swapBuffer)渲染与显示的视频数据,最终在VideoEncoderCore中通过MediaCodec获取出encodeDat原创 2024-10-19 15:29:34 · 1085 阅读 · 0 评论 -
OpenGL 自定义SurfaceView Texture C++预览Camera视频
由上GLSurfaceView源码分析可知,内部维护着一个GLThread子线程,用来保持GL的上下文GLConext一致性的操作。接下来仿造GLSurfaceView创建一个同样继承于SurfaceView的自定义类WyyGLSurfaceView。WyyGLSurfaceView是在OpenGL Texture C++ 预览Camera视频-优快云博客中GLTextureCPlusVideoPlayView进行改造的,有兴趣的可翻看我的这一篇的博客。原创 2024-10-12 16:07:01 · 1277 阅读 · 0 评论 -
OpenGL Texture C++ Camera Filter滤镜
基于OpenGL Texture纹理的强大功能,在片段着色器(Shader)中编写GLSL代码,对YUV的数据进行数据转换从而实现视频编辑软件中的相机滤镜功能。接上一篇OpenGL Texture C++ 预览Camera视频的功能实现,本篇来实现Camera滤镜效果并各种滤镜的切换。原创 2024-09-15 15:50:47 · 1273 阅读 · 0 评论 -
OpenGL Texture C++ 预览Camera视频
OpenGL是一个图形API,并不是一个独立的平台。包含了一系列可以操作图形、图像的函数。基于Texture纹理强大的功能,本篇文章实现Android OpenGL Texture C++ 预览Camera视频流的功能。原创 2024-09-06 18:37:20 · 1510 阅读 · 0 评论 -
通过libx246 libfaac转换推送RTMP音视频直播流
RTMP协议是Real Time Message Protocol(实时信息传输协议)的缩写,它是由Adobe公司提出的一种应用层的协议,用来解决多媒体数据传输流的多路复用(Multiplexing)和分包(packetizing)的问题。RTMP是应用层协议,采用(通常)TCP来保证可靠传输;在TCP完成握手链接建立后,还会进行RTMP的一些自己的握手动作,在建立RTMP Connection链接;原创 2024-07-19 15:04:05 · 1406 阅读 · 0 评论 -
音视频及H264/H256编码相关原理
我们播放的视频文件一般都是用一种封装格式封装起来的,封装格式的作用是什么呢?一般视频文件里不光有视频,还有音频,封装格式的作用就是把视频和音频打包起来。所以我们先要解封装格式,看有哪些视频流和哪些音频流,此时的音频流和视频流都还是压缩数据,不能直接用于显示的,这就需要解码。如FFmpeg 视频文件就是一个容器 (视频流(H264) 音频流(aac))。原创 2024-05-24 18:52:08 · 3376 阅读 · 0 评论 -
FFmpeg常用结构体、关键函数、ffplay.c分析
AVFormatContext是一个贯穿全局的数据结构,很多函数都要用它作为参数。FFmpeg代码中对这个数据结构的注释是format I/O context,此结构包含了一个视频流的格式内容。其中存有AVIputFormat(或AVOutputFormat,但是同一时间AVFormatContext内只能存在其中一个)、AVStream、AVPacket这几个重要的数据结构以及一些其他的相关信息,比如title、author、copyright等。原创 2024-04-26 19:05:09 · 1339 阅读 · 2 评论 -
FFmpeg项目初探学习笔记
FFmpeg是广泛使用于的多媒体解决方案,是一个自由软件项目的名称,采用LGPL或GPL许可证。它提供了录制/转换以及流化音视频的完整解决方案。包含非常先进的音频/视频编解码库libavcodec。为了保证高可移植性和编解码质量,libavcodec里很多代码都是新开发的。“FFmpeg”这个词中的“FF”指的是“Fast Forward”,而“mpeg”指的是一种压缩率比较大的活动图像和声音的压缩标准。一.FFmpeg简介:命令行工具概述(Command Line Tool Documentati原创 2020-08-22 11:22:36 · 357 阅读 · 0 评论 -
音视频基础知识学习笔记
1 视频编码:视频编码就是指通过特定的压缩技术将某个视频格式文件转换成另一种视频格式的文件方式,视频传输中最重要的是编解码标准有国际电联的H.261/H.263/H.264/H.265,运动静止图像专家组的M-JPEG和国际标准化组织的运动图像专家组MPEG系列标准,此外还有网上广泛应用的Real-Networks的RealVideo/微软公司的WMV以及Apple的QuickTime等。...原创 2020-05-05 19:00:27 · 679 阅读 · 0 评论