1.H264编码分层NAL层:(NetworkAbstractionLayer,视频数据网络抽象层):它的作用是H264只要在网络上传输,在传输的过程每个包以太网是1500字节,而H264的帧往往会大于1500字节,所以要进行拆包,将一个帧拆成多个包进行传输,所有的拆包或者组包都是通过NAL层去处理的。VCL层:(VideoCodingLayer,视频数据编码层):对视频原始数据进行压缩 我们可以看到视频帧序列每一帧图像是由slice构成的,每一个slice是由多个宏块构成的,在实际传输的过程中,一般一帧图像就是一个slice,没有分那么细。NAL单元的结构组成 SODB:(StringofD
1.H264编码分层NAL层:(NetworkAbstractionLayer,视频数据网络抽象层):它的作用是H264只要在网络上传输,在传输的过程每个包以太网是1500字节,而H264的帧往往会大于1500字节,所以要进行拆包,将一个帧拆成多个包进行传输,所有的拆包或者组包都是通过NAL层去处理的。VCL层:(VideoCodingLayer,视频数据编码层):对视频原始数据进行压缩 我们可以看到视频帧序列每一帧图像是由slice构成的,每一个slice是由多个宏块构成的,在实际传输的过程中,一般一帧图像就是一个slice,没有分那么细。NAL单元的结构组成 SODB:(StringofD
[ERROR:0@0.013]global/io/opencv/modules/videoio/src/cap_ffmpeg_impl.hpp(2927)open**Couldnotfindencoderforcodec_id=27,error:Encodernotfound**[ERROR:0@0.014]global/io/opencv/modules/videoio/src/cap_ffmpeg_impl.hpp(3002)openVIDEOIO/FFMPEG:FailedtoinitializeVideoWriter[ERROR:0@0.014]global/io/opencv/mod
文章目录一、基本知识1.1FFmpeg相关1.2H.264相关1.3YUV相关二、H264编码原理2.1帧类型分析2.2帧内/帧间预测2.3变换+量化2.4滤波2.5熵编码三、H264解码为YUV3.1代码逻辑及使用API3.2具体代码实现3.3YUV文件播放四、YUV编码为H2644.1代码逻辑及使用API4.2具体代码实现4.3H264文件播放一、基本知识1.1FFmpeg相关FFmpeg是领先的多媒体框架,能够解码、编码、转码、混合、解密、流媒体、过滤和播放人类和机器创造的几乎所有东西。它支持最晦涩的古老格式,直到最尖端的格式。无论它们是由某个标准委员会、社区还是公司设计的。它还具有高度
多核并行主要有两个方面一,程序,变量储存地址设置二,运行核选择一、内存分配概念及过程描述尽量将不同的功能划分为各个模块,然后交给不同的cpu运行。或者说不同的cpu负责运行不同的功能,cpu之间以少量的参数进行配合交互,这样可以尽最大化利用多核cpu的资源效率。具体做法尽量将.h以及相关函数都存放在#pramasectionall"cpux_dsram"和#pragmasectionallrestore之间即可二、中断配置1.概念及过程描述(可跳过直接去看2.具体操作)我在一开始使用TC377时一直有个疑问就是,把变量和函数放到那个cpux_main,然后在哪里申请中断就是那个cpu提供中断服
多核并行主要有两个方面一,程序,变量储存地址设置二,运行核选择一、内存分配概念及过程描述尽量将不同的功能划分为各个模块,然后交给不同的cpu运行。或者说不同的cpu负责运行不同的功能,cpu之间以少量的参数进行配合交互,这样可以尽最大化利用多核cpu的资源效率。具体做法尽量将.h以及相关函数都存放在#pramasectionall"cpux_dsram"和#pragmasectionallrestore之间即可二、中断配置1.概念及过程描述(可跳过直接去看2.具体操作)我在一开始使用TC377时一直有个疑问就是,把变量和函数放到那个cpux_main,然后在哪里申请中断就是那个cpu提供中断服
一、编码基础概念1、为什么要进行视频编码?视频是由一帧帧图像组成,就如常见的gif图片,如果打开一张gif图片,可以发现里面是由很多张图片组成。一般视频为了不让观众感觉到卡顿,一秒钟至少需要16帧画面(一般是30帧),假如该视频是一个1280x720分辨率的视频,那么不经过编码一秒钟的大小:结果:1280x720x60≈843.75M所以不经过编码的视频根本没法保存,更不用说传输了。2、视频压缩编码标准视频中存在很多冗余信息,比如图像相邻像素之间有较强的相关性,视频序列的相邻图像之间内容相似,人的视觉系统对某些细节不敏感等,对这部分冗余信息进行处理的过程就是视频编码。H.26X系列(由ITU[
一、编码基础概念1、为什么要进行视频编码?视频是由一帧帧图像组成,就如常见的gif图片,如果打开一张gif图片,可以发现里面是由很多张图片组成。一般视频为了不让观众感觉到卡顿,一秒钟至少需要16帧画面(一般是30帧),假如该视频是一个1280x720分辨率的视频,那么不经过编码一秒钟的大小:结果:1280x720x60≈843.75M所以不经过编码的视频根本没法保存,更不用说传输了。2、视频压缩编码标准视频中存在很多冗余信息,比如图像相邻像素之间有较强的相关性,视频序列的相邻图像之间内容相似,人的视觉系统对某些细节不敏感等,对这部分冗余信息进行处理的过程就是视频编码。H.26X系列(由ITU[
之前视频基础,有讲到视频的原始数据YUV,相比RBG,数据确实减少了,但还是一个非常大数据量,会占用很大空间以及在给网络传输带来很大压力。所以必须要对视频进行压缩,减少占用空间。这里主要分享H264编码技术,压缩和编码是一回事。 H264压缩比是百分之一,能将100M的YUV数据压缩到接近1M数据大小。什么是GOP?一组强相关的图像帧。将一个视频拉长,帧比较多的时候,对帧进行分组,分组的要求是每一组帧的相关性较强。举例把做相同动作的帧放在一组。(这一组图像只是发生了细微的差别,变化较单调)。I帧P帧B帧I帧(intraframeframe),关键帧。采用帧内压缩技术。I帧是所有数据帧最关键的帧
之前视频基础,有讲到视频的原始数据YUV,相比RBG,数据确实减少了,但还是一个非常大数据量,会占用很大空间以及在给网络传输带来很大压力。所以必须要对视频进行压缩,减少占用空间。这里主要分享H264编码技术,压缩和编码是一回事。 H264压缩比是百分之一,能将100M的YUV数据压缩到接近1M数据大小。什么是GOP?一组强相关的图像帧。将一个视频拉长,帧比较多的时候,对帧进行分组,分组的要求是每一组帧的相关性较强。举例把做相同动作的帧放在一组。(这一组图像只是发生了细微的差别,变化较单调)。I帧P帧B帧I帧(intraframeframe),关键帧。采用帧内压缩技术。I帧是所有数据帧最关键的帧