RV1126+FFMPEG推流项目(6)视频码率及其码率控制方式

ops/2025/1/20 21:09:04/

        视频从采集到编码再到线程获取编码后的数据,已经全部说完。接下来继续来说应该比较重要的,和视频相关的。就是码率。

视频码率及其码率控制方式

一、什么是码率?

视频码率是指在单位时间内传输的视频数据量,通常以 kbps(千位每秒)为单位。视频的质量与码率有密切关系,通常来说,码率越高,视频的清晰度和精度也越高。高码率的视频与原始的 YUV 文件更加接近,但同时也意味着更大的文件体积和更高的带宽要求。

视频码率与分辨率相关,分辨率越高,通常需要更高的码率才能维持图像质量。不同的编码标准(如 H264、H265)和视频场景的复杂度也会影响实际所需的码率。下面这张图就是分辨率和码率的关系

二、什么是码率控制方式?

码率控制是指在编码过程中,利用算法动态调整编码压缩比率,以保证不同场景下的视频质量始终处于一个较为理想的状态。根据编码时的动态变化,常见的码率控制方式有以下几种:

  1. CBR(Constant Bitrate,固定码率)
  2. VBR(Variable Bitrate,可变码率)
  3. AVBR(Adaptive Variable Bitrate,适应性可变码率)

三、 CBR 控制码率详解

CBR(固定码率)控制模式指在编码过程中,编码器将输出的码率保持在一个固定的水平。无论图像内容如何变化,编码器都不调整码率,这使得码率在整个编码过程中非常稳定。

  • 优点
    • 适用于网络流媒体,带宽稳定。
    • 压缩速度快,码率平稳,不会出现跳变。
  • 缺点
    • 无法根据图像的复杂度进行码率调整,可能导致简单图像的码率浪费,复杂图像的质量降低。
  • 常见应用
    • 流媒体视频、实时视频传输。
  • RV1126 API
    • H264: VENC_H264_CBR_S
    • MJPEG: VENC_MJPEG_CBR_S
    • H265: VENC_H265_CBR_S
  • CBR 结构体
  • u32Gop:关键帧间隔
  • u32SrcFrameRateNum:源帧率分子
  • u32SrcFrameRateDen:源帧率分母
  • u32DstFrameRateNum:目标帧率分子
  • u32DstFrameRateDen:目标帧率分母
  • u32BitRate:平均比特率范围:[2000, 98000000] 就是这里填码率

场景描述:

  • 直播内容:可能包括新闻播报、体育赛事或游戏直播。
  • 码率:假设选择 3000 kbps(3 Mbps)作为固定码率。
  • 图像内容:直播画面可能有较为平稳的背景,也可能有动态画面(如运动员奔跑、游戏角色移动等)。

CBR 应用:

  • 在 CBR 模式下,直播编码器会将比特率固定为 3000 kbps。无论画面是简单的新闻画面还是复杂的体育动作,编码器都会以 3000 kbps 的码率进行编码传输。
  • 优点:带宽需求和流量稳定,观众观看体验更加顺畅,不会因为码率波动而出现视频卡顿或中断。
  • 缺点:如果画面简单(如一个静态背景),则这 3000 kbps 的码率会浪费带宽;但如果画面复杂(如快速的运动画面),则可能导致画质不理想,出现马赛克。

 

2.2 VBR 控制码率模式详解

VBR(可变码率)控制模式允许编码器根据图像的复杂度动态调整码率。当编码器遇到复杂的图像时,它会增加码率以保持较高的图像质量;遇到简单图像时,它会降低码率以节省带宽。

  • 优点

    • 保证图像质量较高,减少马赛克和丢帧现象。
    • 可根据场景复杂度调节码率,避免不必要的浪费。
  • 缺点

    • 编码后的视频文件大小不固定,可能产生较大的波动。
    • 由于编码算法的复杂性,解码端的计算负担可能增加。
  • 常见应用

    • DVD 视频、电影、部分在线视频流。
  • RV1126 API

    • H264: VENC_H264_VBR_S
    • MJPEG: VENC_MJPEG_VBR_S
    • H265: VENC_H265_VBR_S
  • VBR 结构体

    • u32Gop:关键帧间隔
    • u32SrcFrameRateNum:源帧率分子
    • u32SrcFrameRateDen:源帧率分母
    • u32DstFrameRateNum:目标帧率分子
    • u32DstFrameRateDen:目标帧率分母
    • u32MaxBitRate:最大比特率范围:[2000, 98000000]    

2.3 AVBR 控制码率模式详解

AVBR(适应性可变码率)控制模式是 VBR 的扩展,它可以自动判断当前视频场景是静态还是动态。如果当前场景为静态,AVBR 会降低码率;如果场景为动态(如快速运动的画面),AVBR 会提高码率。

  • 优点

    • 可以根据视频内容自动调节码率,优化带宽使用。
    • 在复杂或运动画面时,保证视频质量;在静态画面时,节省带宽。
  • 缺点

    • 在高变化的视频场景下,可能产生较大的带宽波动。
  • 常见应用

    • 体育赛事直播、大型会议或直播场景中频繁出现运动画面的场合。
  • RV1126 API

    • H264: VENC_H264_AVBR_S
    • MJPEG: VENC_MJPEG_AVBR_S
    • H265: VENC_H265_AVBR_S
  • AVBR 结构体

    • u32Gop:关键帧间隔
    • u32SrcFrameRateNum:源帧率分子
    • u32SrcFrameRateDen:源帧率分母
    • u32DstFrameRateNum:目标帧率分子
    • u32DstFrameRateDen:目标帧率分母
    • u32MaxBitRate:最大比特率范围:[2000, 98000000]
总结

视频的码率控制方式(CBR、VBR、AVBR)各有优缺点,选择哪种方式取决于应用场景的需求。CBR 适合带宽稳定且对视频质量要求不极高的应用场合;VBR 适合高质量视频的场合,尤其是文件体积不敏感的情况;AVBR 则适合具有频繁运动和静态场景的应用,如体育赛事等。


http://www.ppmy.cn/ops/151758.html

相关文章

浅谈云计算17 | 分布式存储

分布式存储 一、云存储系统结构模型1.1 存储层1.2 基础管理层1.3 应用接口层1.4 访问层 二、HDFS技术2.1 HDFS原理与架构2.1.1 架构组件2.1.2 数据存储与读取 2.2 HDFS特性分析2.2.1 容错性机制2.2.2 读写性能优化2.2.3 数据一致性保障 三、对等存储系统3.1 对等存储系统概述3.…

ubuntu20.04的虚拟机突然打不开terminal了

遇到的问题: 突然开机很慢,终端一直转圈,但是打不开,重启也没用。 解决办法: 打开的shell来寻找错误,用CtrlAltF4进入命令行模式(虚拟机用f4,独立系统就用F1) 登录账…

【Compose multiplatform教程】05 IOS环境编译

了解如何使现有的 Android 应用程序跨平台,以便它在 Android 和 iOS 上都能运行。您将能够在一个位置编写代码并针对 Android 和 iOS 进行测试一次。 本教程使用一个示例 Android 应用程序,其中包含用于输入用户名和密码的单个屏幕。凭证经过验证并保存…

云消息队列 Kafka 版 V3 系列荣获信通院“云原生技术创新标杆案例”

2024 年 12 月 24 日,由中国信息通信研究院(以下简称“中国信通院”)主办的“2025 中国信通院深度观察报告会:算力互联网分论坛”,在北京隆重召开。本次论坛以“算力互联网 新质生产力”为主题,全面展示中国…

循环神经网络RNN-数据流动

1. RNN 的结构概述 RNN 的核心是一个循环单元,它在每个时间步接收两个输入: 当前时间步的输入数据 x t x_t xt​(例如词向量)。上一个时间步的隐藏状态 h t − 1 h_{t-1} ht−1​。 然后,RNN 会输出: …

小程序疫苗预约网站系统ssm+论文源码调试讲解

第4章 系统设计 一个成功设计的系统在内容上必定是丰富的,在系统外观或系统功能上必定是对用户友好的。所以为了提升系统的价值,吸引更多的访问者访问系统,以及让来访用户可以花费更多时间停留在系统上,则表明该系统设计得比较专…

数仓建模(五)选择数仓技术栈:Hive ClickHouse 其它

在大数据技术的飞速发展下,数据仓库(Data Warehouse,简称数仓)成为企业处理和分析海量数据的核心工具。市场上主流数仓技术栈丰富,如Hive、ClickHouse、Druid、Greenplum等,对于初学者而言,选择…

WebSocket有哪些缺点?应该如何解决?

虽然 WebSocket 提供了许多优势,使其成为实时通信的理想选择,但它也有一些缺点和局限性。以下是 WebSocket 的一些主要缺点: 1. 初始握手开销 HTTP 握手:WebSocket 连接需要先通过 HTTP 协议进行握手,这增加了初始连接…