网站建设简单流程,wordpress 更改端口,郑州网站seo外包,平面创意设计前言 从本章开始我们将要学习嵌入式音视频的学习了 #xff0c;使用的瑞芯微的开发板 #x1f3ac; 个人主页#xff1a;ChenPi #x1f43b;推荐专栏1: 《C_ChenPi的博客-CSDN博客》✨✨✨ #x1f525; 推荐专栏2: 《Linux C应用编程#xff08;概念类#xff09;_C…前言 从本章开始我们将要学习嵌入式音视频的学习了 使用的瑞芯微的开发板 个人主页ChenPi 推荐专栏1: 《C_ChenPi的博客-CSDN博客》✨✨✨ 推荐专栏2: 《Linux C应用编程概念类_ChenPi的博客-CSDN博客》✨✨✨ 推荐专栏3《嵌入式音视频_ChenPi的博客-CSDN博客》 本篇简介 本章主要讲解VI VENC模块和AI AENC模块的初始化及具体函数详解 01 什么是码率
视频码率指的是数据传输单位数也是指每秒钟传输的视频数据位数单位是kbps千位/s。
通常来说码率越大视频的精度越高。编码出来的视频文件则会越接近原始YUV文件。
通常码率和分辨率息息相关。下面这张图就是分辨率和码率的关系
02 什么是码率控制方式
码率控制指的是利用编码中的一些特殊手段控制图像的压缩比例使其画面质量在不同的场景中保持一个最优的状态。
RV1126的码率控制方式总共分为三种 CBR固定码率控制模式VBR可变码率控制模式AVBR码率控制模式。 2. 1. CBR控制码率详解
CBR指的是固定比特率它指的是在统计时间内编码码率处于平稳状态。
这种方式的特点是码率调节会相对比较缓慢它不会跟着图像的质量的波动去改变码率。
CBR控制模式一般用于网络流媒体视频编码。 CBR的优点在于压缩速度非常快并且码率很平稳不会出现码率跳变的情况。但缺点也很明显就是它不会根据画面的波动对码率进行节省这样的话会导致每秒空间的浪费。在RV1126的API里面CBR一般用平均比特率去表示。 从上图我们可以看出来在RV1126的API里面。用 VENC_H264_CBR_S(H264的CBR控制模式)VENC_MJPEG_CBR_S(MJPEG的CBR控制模式)VENC_H265_CBR_S(H265的CBR控制模式) 2.2 H264_CBR结构体
u32Gop关键帧间隔u32SrcFrameRateNum数据源帧率分子u32SrcFrameRateNum数据源帧率分母fr32DstFrameRateNum 目标帧率分子fr32DstFrameRateDen 目标帧率分母u32BitRate平均比特率[2000, 98000000] 2.3 H265_CBR结构体
H265_CBR结构体的成员变量跟H264_CBR结构体的成员变量是一样的。
2.4 MJPEG_CBR_S结构体:
u32Gop关键帧间隔u32SrcFrameRateNum数据源帧率分子u32SrcFrameRateNum数据源帧率分母fr32DstFrameRateNum 目标帧率分子fr32DstFrameRateDen 目标帧率分母u32BitRate平均比特率[2000, 98000000] 03 VBR控制码率模式详解
VBR指的是动态码率它的作用是在统计时间内允许编码编率出现波动这种波动可以使得编码图像质量变高。
VBR的特点是它是随着图像的复杂程度的不同而变化。假设在编码到简单图像的时候它会节省码率而如果编码到一些相对复杂的图像它的码率将会提升。VBR模式一般使用在DVD上面。 VBR同样也有优缺点VBR的优点是它的尽可能保证整个图像编码质量利用VBR编码的图像很少会出现马赛克、画面丢失的情况。 但缺点同样也很明显使用VBR编码出来的图像它的体积是不固定的。所以它会根据画面的复杂程度去决定视频文件的大小另外还有的是使用VBR进行编码的时候它的编码算法复杂度会变高这就会导致解码端的复杂度升高。 在RV1126的API里面。 用VENC_H264_VBR_S(H264的VBR控制模式)VENC_MJPEG_VBR_S(MJPEG的VBR控制模式)VENC_H265_VBR_S(H265的VBR控制模式)。 VENC_H264_VBR_S结构体 u32Gop关键帧间隔u32SrcFrameRateNum数据源帧率分子u32SrcFrameRateNum数据源帧率分母fr32DstFrameRateNum 目标帧率分子fr32DstFrameRateDen 目标帧率分母u32MaxBitRate最大比特率[2000, 98000000] VENC_H265_VBR_S结构体 H265_VBR结构体的成员变量跟H265_CBR结构体的成员变量是一样的。 VENC_MJPEG_VBR_S的结构体 u32SrcFrameRateNum数据源帧率分子u32SrcFrameRateNum数据源帧率分母fr32DstFrameRateNum 目标帧率分子fr32DstFrameRateDen 目标帧率分母u32BitRate平均比特率[2000, 98000000] 04 AVBR控制码率模式详解
AVBR全称叫适配式可变码率控制方式它的很多思想跟VBR基本上是一致的。 但它比VBR强大的一点是这种控制方式能够自动检测当前编码场景是静止画面还是运动画面。 若当前画面是静止画面则会主动降低码率、若当前画面是运动画面则会把码率主动提升。 AVBR适用于当前编码视频静止画面和运动画面频繁出现的场景所以AVBR码率控制方式经常用在大型体育比赛上面。 在RV1126的API里面。 VENC_H264_ AVBR_S(H264的VBR控制模式)VENC_MJPEG_AVBR_S(MJPEG的VBR控制模式)VENC_H265_AVBR_S(H265的VBR控制模式)。 4.1 VENC_H264_AVBR结构体 u32Gop关键帧间隔u32SrcFrameRateNum数据源帧率分子u32SrcFrameRateNum数据源帧率分母fr32DstFrameRateNum 目标帧率分子fr32DstFrameRateDen 目标帧率分母u32MaxBitRate最大比特率[2000, 98000000] VENC_H265_AVBR结构体和H264的也是一样的