前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >480p 720p 1080p 2k 4k 8k 12k分辨率视频分别占用多大带宽?

480p 720p 1080p 2k 4k 8k 12k分辨率视频分别占用多大带宽?

原创
作者头像
音视频牛哥
发布于 2024-10-22 02:29:28
发布于 2024-10-22 02:29:28
2.2K0
举报
文章被收录于专栏:RTMP推送RTMP推送

技术背景

好多开发者,在设置视频编码参数的时候,对不同分辨率的带宽设置,缺乏相关的经验,实际上,视频分辨率与所需带宽之间的关系受到多个因素的影响,包括视频编码方式、帧率、视频内容的动态程度等。下面,我们对不同分辨率大致所需带宽的分析:

影响视频带宽的因素

  1. 视频编码方式
    • 不同的编码方式对带宽的需求差异很大。例如,H.264 是一种广泛使用的编码标准,它能够在相对较低的带宽下提供较好的视频质量。H.265(HEVC)则在相同视频质量下通常比 H.264 所需带宽更低。
    • 较新的编码标准如 AV1,也在不断提高压缩效率,进一步降低带宽需求。
  2. 帧率
    • 帧率越高,每秒钟传输的图像帧数就越多,所需的带宽也会相应增加。常见的帧率有 24fps、30fps、60fps 等。
    • 例如,一个 1080p 的视频,在 30fps 下所需的带宽可能与在 60fps 下有较大差异。
  3. 视频内容动态程度
    • 视频中如果有大量快速运动的画面、复杂的场景或细节丰富的图像,需要更多的带宽来准确传输这些信息。
    • 相比静态场景为主的视频,动作片、体育赛事等动态内容的视频通常需要更高的带宽。

不同分辨率的大致带宽需求

  1. 480p
    • 通常情况下,480p 的视频在较低的码率下也能有较好的观看体验。对于标清的 480p 视频,采用 H.264 编码,在 1Mbps - 2Mbps 的带宽下可以获得较为流畅的播放效果。
    • 如果视频内容相对简单,动态程度较低,可能在 1Mbps 以下的带宽也能播放,但可能会出现一些画质损失。
  2. 720p
    • 720p 的高清视频需要更高的带宽来保证画质。一般来说,采用 H.264 编码的 720p 视频在 2Mbps - 4Mbps 的带宽下可以获得较好的观看体验。
    • 如果是高动态的视频内容或者要求更高的画质,可能需要接近 5Mbps 的带宽。
  3. 1080p
    • 全高清的 1080p 视频对带宽要求更高。通常情况下,采用H.264 编码的 1080p 视频在 4Mbps - 8Mbps 的带宽下可以有较好的播放效果。
    • 对于高质量的 1080p 视频,特别是 60fps 的高帧率视频,可能需要10Mbps 甚至更高的带宽。
  4. 2K
    • 2K 分辨率(通常为 2560×1440)的视频需要大量的带宽来传输高质量的图像。一般来说,采用 H.264 编码的 2K 视频在 8Mbps - 15Mbps 的带宽下可以获得较好的观看体验。
    • 如果是高动态、高帧率或者对画质要求极高的情况,可能需要 20Mbps 以上的带宽。
  5. 4K
    • 4K 分辨率(通常为 3840×2160)是目前非常高的画质标准,对带宽的需求极大。采用 H.264 编码的 4K 视频通常需要 20Mbps - 50Mbps 的带宽才能获得较好的观看体验。
    • 而采用更高效的编码标准如 H.265 或 AV1,可能在较低的带宽下也能实现较好的画质,但一般也需要 15Mbps - 30Mbps 的带宽。对于高帧率、高动态的 4K 视频,可能需要超过 50Mbps 的带宽。
  6. 8K 视频
    • 如果视频编码效率较低,要流畅播放8K视频可能需要 70-80Mbps 的带宽。
    • 对于较高质量、高帧率的 8K 视频,带宽需求可能会达到 200Mbps 甚至更高。
  7. 12K 视频
    • 目前 12K 视频尚未广泛普及应用,相关的实际应用数据较少。但理论上,12K 视频的带宽需求会远高于 8K 视频。如果按照简单的像素数量比例来估算,12K 视频的带宽需求可能是 8K 视频的 1.5 倍左右,实际的带宽需求还会受到视频编码方式、帧率、色彩深度等多种因素的影响。

Android平台视频编码

Android平台上,有多种视频编码方式可供选择,每种编码方式都有其特点和适用场景。如果是高端 Android 设备,具有较强的处理器和图形处理能力,可以考虑使用 H.265 或 VP9 等高压缩比的编码方式,以获得更好的视频质量和更低的带宽需求。对于中低端设备,可能需要权衡编码效率和设备性能。H.264 可能是更合适的选择,以确保视频的流畅播放和较低的资源占用。

以大牛直播SDK的RTMP推送端为例,一般是根据视频宽高、帧率、H.264、H.265编码类型等,给出评估的码率范围,然后设置:

Android平台RTMP直播推送SDK

  • 音频编码:AAC/SPEEX;
  • 视频编码:H.264、H.265;
  • 推流协议:RTMP;
  • [音视频]支持纯音频/纯视频/音视频推送;
  • [摄像头]支持采集过程中,前后摄像头实时切换;
  • 支持帧率、关键帧间隔(GOP)、码率(bit-rate)设置;
  • 支持RTMP推送 live|record模式设置;
  • 支持前置摄像头镜像设置;
  • 支持软编码、特定机型硬编码;
  • 支持横屏、竖屏推送;
  • 支持Android屏幕采集推送;
  • 支持自建标准RTMP服务器或CDN;
  • 支持断网自动重连、网络状态回调;
  • 支持实时动态水印;
  • 支持实时快照;
  • 支持降噪处理、自动增益控制;
  • 支持外部编码前音视频数据对接;
  • 支持外部编码后音视频数据对接;
  • 支持RTMP扩展H.265(需设备支持H.265特定机型硬编码)和Enhanced RTMP;
  • 支持实时音量调节;
  • 支持扩展录像模块;
  • 支持Unity接口;
  • 支持H.264扩展SEI发送模块;
  • 支持Android 5.1及以上版本。
代码语言:java
AI代码解释
复制
//估计硬编码码率, 可以根据实际机型调整
public static int estimate_video_hardware_kbps(int width, int height, int fps, boolean is_h264) {
	int kbps;
	int area = width * height;
	if (area <= (320 * 300))
		kbps = is_h264?350:280;
	else if (area <= (370 * 320))
		kbps = is_h264?470:400;
	 else if (area <= (640 * 360))
		kbps = is_h264?850:650;
   else if (area <= (640 * 480))
		kbps = is_h264?1200:800;
	else if (area <= (800 * 600))
		kbps = is_h264?1300:950;
	else if (area <= (900 * 700))
		kbps = is_h264?1600:1100;
	else if (area <= (1280 * 720))
		kbps = is_h264?2100:1500;
	 else if (area <= (1366 * 768))
		kbps = is_h264?2300:1900;
	 else if (area <= (1600 * 900))
		kbps = is_h264?2800:2300;
	else if (area <= (1600 * 1050))
		kbps =is_h264?3100:2500;
	 else if (area <= (1920 * 1088))
		kbps = is_h264?4200:2800;
	else
		kbps = is_h264?4500:3500;

	kbps = (int)(kbps*fps*1.0/25.0 + 0.5);
	return kbps;
}

Android APP层调用逻辑如下:

代码语言:java
AI代码解释
复制
if (videoEncodeType == 1) {
	int kbps = LibPublisherWrapper.estimate_video_hardware_kbps(width, height, fps, true);
	Log.i(TAG, "h264HWKbps: " + kbps);
	int isSupportH264HWEncoder = lib_publisher.SetSmartPublisherVideoHWEncoder(handle, kbps);
	if (isSupportH264HWEncoder == 0) {
		lib_publisher.SetNativeMediaNDK(handle, 0);
		lib_publisher.SetVideoHWEncoderBitrateMode(handle, 1); // 0:CQ, 1:VBR, 2:CBR
		lib_publisher.SetVideoHWEncoderQuality(handle, 39);
		lib_publisher.SetAVCHWEncoderProfile(handle, 0x08); // 0x01: Baseline, 0x02: Main, 0x08: High

		// lib_publisher.SetAVCHWEncoderLevel(handle, 0x200); // Level 3.1
		// lib_publisher.SetAVCHWEncoderLevel(handle, 0x400); // Level 3.2
		// lib_publisher.SetAVCHWEncoderLevel(handle, 0x800); // Level 4
		lib_publisher.SetAVCHWEncoderLevel(handle, 0x1000); // Level 4.1 多数情况下,这个够用了
		//lib_publisher.SetAVCHWEncoderLevel(handle, 0x2000); // Level 4.2

		// lib_publisher.SetVideoHWEncoderMaxBitrate(handle, ((long)h264HWKbps)*1300);

		Log.i(TAG, "Great, it supports h.264 hardware encoder!");
	}
} else if (videoEncodeType == 2) {
	int kbps = LibPublisherWrapper.estimate_video_hardware_kbps(width, height, fps, false);
	Log.i(TAG, "hevcHWKbps: " + kbps);
	int isSupportHevcHWEncoder = lib_publisher.SetSmartPublisherVideoHevcHWEncoder(handle, kbps);
	if (isSupportHevcHWEncoder == 0) {
		lib_publisher.SetNativeMediaNDK(handle, 0);
		lib_publisher.SetVideoHWEncoderBitrateMode(handle, 1); // 0:CQ, 1:VBR, 2:CBR
		lib_publisher.SetVideoHWEncoderQuality(handle, 39);

		// libPublisher.SetVideoHWEncoderMaxBitrate(handle, ((long)hevcHWKbps)*1200);

		Log.i(TAG, "Great, it supports hevc hardware encoder!");
	}
}

JNI层接口设计如下:

代码语言:java
AI代码解释
复制
 /*
 * SmartPublisherJniV2.java
 * WeChat:xinsheng120
 * Created by daniusdk.com on 2015/09/20.
 */
 
 /**
  * Set Video H.264 HW Encoder, if support HW encoder, it will return 0(设置H.264硬编码)
  * 
  * @param kbps: the kbps of different resolution.
  * 
  * @return {0} if successful
  */
public native int SetSmartPublisherVideoHWEncoder(long handle, int kbps);

/**
 * Set Video H.265(hevc) hardware encoder, if support H.265(hevc) hardware encoder, it will return 0(设置H.265硬编码)
 *
 * @param kbps: the kbps of different resolution.
 *
 * @return {0} if successful
 */
public native int SetSmartPublisherVideoHevcHWEncoder(long handle, int kbps);

/**
 * 设置视频硬编码是否使用 Native Media NDK, 默认是不使用, 安卓5.0以下设备不支持
 * @param handle
 * @param is_native: 0表示不使用, 1表示使用, sdk默认是0.
 * @return {0} if successful
 */
public native int SetNativeMediaNDK(long handle, int is_native);

/*
* 设置视频硬编码码率控制模式
* @param hw_bitrate_mode: -1表示使用默认值, 不设置也会使用默认值, 0:CQ, 1:VBR, 2:CBR, 3:CBR_FD, 请参考:android.media.MediaCodecInfo.EncoderCapabilities
* 注意硬编码和手机硬件有关,多数手机只支持部分码率模式, 另外硬编码设备差异很大,不同设备同一码率控制模式效果可能不一样
* @return {0} if successful
*/
public native int SetVideoHWEncoderBitrateMode(long handle, int hw_bitrate_mode);


/*
 * 设置视频硬编码复杂度, 安卓5.0及以上支持
 * @param hw_complexity: -1表示不设置, 请参考:android.media.MediaCodecInfo.EncoderCapabilities.getComplexityRange() 和 android.media.MediaFormat.KEY_COMPLEXITY
 * 注意硬编码和手机硬件有关,部分手机可能不支持此设置
 * @return {0} if successful
 */
public native int SetVideoHWEncoderComplexity(long handle, int hw_complexity);

/*
 * 设置视频硬编码质量, 安卓9及以上支持, 仅当硬编码器码率控制模式(BitrateMode)是CQ(constant-quality mode)时才有效
 * @param hw_quality: -1表示不设置, 请参考:android.media.MediaCodecInfo.EncoderCapabilities.getQualityRange() 和 android.media.MediaFormat.KEY_QUALITY
 * 注意硬编码和手机硬件有关,部分手机可能不支持此设置
 * @return {0} if successful
 */
public native int SetVideoHWEncoderQuality(long handle, int hw_quality);

/*
 * 设置H.264硬编码Profile, 安卓7及以上支持
 * @param hw_avc_profile: 0表示使用默认值, 0x01: Baseline, 0x02: Main, 0x08: High, 0x10000: ConstrainedBaseline, 0x80000: ConstrainedHigh;
 * 注意: ConstrainedBaseline 和 ConstrainedHigh 可能多数设备不支持,
 * H.264推荐使用 High 或者 ConstrainedHigh, 如果您使用的手机硬解码解不了,那还是设置Baseline
 * 如果设置的Profile硬编码器不支持,应编码器会使用默认值
 * 具体参考:android.media.MediaCodecInfo.CodecProfileLevel
 * @return {0} if successful
 */
public native int SetAVCHWEncoderProfile(long handle, int hw_avc_profile);

/*
 * 设置H.264硬编码Level, 这个只有在设置了Profile的情况下才有效, 安卓7及以上支持
 * @param hw_avc_level: 0表示使用默认值, 0x100: Level3, 0x200: Level3.1, 0x400: Level3.2,
 * 0x800: Level4, 0x1000: Level4.1, 0x2000: Level4.2,
 * 0x4000: Level5, 0x8000: Level5.1,  0x10000: Level5.2,
 * 0x20000: Level6, 0x40000: Level6.1,  0x80000: Level6.2,
 * 如果设置的level太高硬编码器不支持,SDK内部会做相应调整
 * 注意: 640*480@25fps最小支持的是Level3, 720p最小支持的是Level3.1, 1080p最小支持的是Level4
 * 具体参考:android.media.MediaCodecInfo.CodecProfileLevel
 * @return {0} if successful
 */
public native int SetAVCHWEncoderLevel(long handle, int hw_avc_level);

/*
 * 设置视频硬编码最大码率, 安卓没有相关文档说明, 所以不建议设置,
 * @param hw_max_bitrate: 每秒最大码率, 单位bps
 * @return {0} if successful
 */
public native int SetVideoHWEncoderMaxBitrate(long handle, long hw_max_bitrate);

需要注意的是,以上只是大致的带宽范围,实际所需带宽可能会因具体情况而有所不同。在网络环境较差的情况下,为了保证视频的流畅播放,视频播放平台可能会自动降低视频的分辨率和码率,从而减少带宽需求。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
GB/T28181-2022针对H.265编码细化及技术实现
新版国家标准GB/T28181-2022《公共安全视频监控联网系统信息传输、交换、控制技术要求》已于2022年12月30日发布,并将于2023年7月1日正式实施。
音视频牛哥
2023/05/23
5220
GB/T28181-2022针对H.265编码细化及技术实现
GB28181设备接入侧如何支持H.265?
一直以来,GB28181-2022之前的规范版本让人诟病的一点:没有明确针对H.265的说明,特别是监控摄像机,H.265已然成为标配,GB/T28181-2022规范,终于针对H.265做了明确的说明,让我们来一起解读下规范:
音视频牛哥
2023/07/22
3980
GB28181设备接入侧如何支持H.265?
Android平台GB28181设备接入模块开发填坑指南
为什么要开发Android平台GB28181设备接入模块?这个问题不再赘述,在做Android平台GB28181客户端的时候,媒体数据这块,我们已经有了很好的积累,因为在此之前,我们就开发了非常成熟的RTMP推送、轻量级RTSP服务、录像模块、针对音视频的对接处理单元。这让我们在做Android平台GB28181设备接入模块的时候,可以有更多的精力在信令交互和国标平台对接。
音视频牛哥
2023/11/26
7410
Android平台GB28181设备接入模块开发填坑指南
Android平台轻量级RTSP服务模块技术接入说明
为满足内网无纸化/电子教室等内网超低延迟需求,避免让用户配置单独的服务器,大牛直播SDK在推送端发布了轻量级RTSP服务SDK。
音视频牛哥
2024/07/17
2060
Android平台轻量级RTSP服务模块技术接入说明
Android轻量级RTSP服务使用场景分析和设计探讨
好多开发者,对我们Android平台轻量级RTSP服务模块有些陌生,不知道这个模块具体适用于怎样的场景,有什么优缺点,实际上,我们的Android平台轻量级RTSP服务模块更适用于内网环境下、对并发要求不高的场景,实现低成本、低延迟的音视频实时传输。本文就上述问题,做个技术探讨,先说适用场景:
音视频牛哥
2024/09/19
1290
Android轻量级RTSP服务使用场景分析和设计探讨
Android平台RTMP直播推送模块技术接入说明
大牛直播SDK跨平台RTMP直播推送模块,始于2015年,支持Windows、Linux(x64_64架构|aarch64)、Android、iOS平台,支持采集推送摄像头、屏幕、麦克风、扬声器、编码前、编码后数据对接,功能强大,性能优异,配合大牛直播SDK的SmartPlayer播放器,轻松实现毫秒级的延迟体验,满足大多数行业的使用场景。
音视频牛哥
2024/08/07
2980
Android平台RTMP直播推送模块技术接入说明
Android平台通过RTSP服务实现摄像头麦克风共享
前些年,我们在完成Android平台RTMP直播推送模块后,遇到这样的技术需求,好多开发者希望在Android平台,实现摄像头和麦克风音视频数据采集编码打包后,对外提供RTSP(Real Time Streaming Protocol)服务。
音视频牛哥
2024/09/05
2570
Android平台通过RTSP服务实现摄像头麦克风共享
基于RK3588的8K视频解码显示案例分享!引领超高清工业视频时代原创
2K分辨率:也称为全高清(FULL HD),它具有1920 x 1080像素的分辨率。这是目前大多数消费者电视和电脑显示器的标准分辨率,可以提供良好的图像质量。
创龙科技Tronlong
2024/07/04
6630
基于RK3588的8K视频解码显示案例分享!引领超高清工业视频时代原创
网络摄像头带宽估算
一个像素占多大内存 多少字节取决于需要存储一个像素的多少信息,以及是否采用了压缩技术。 如果是非黑即白的二值图像,不压缩的情况下一个像素只需要1个bit。 如果是256种状态的灰度图像,不压缩的情况下一个像素需要8bit(1字节,256种状态)。 如果用256种状态标识屏幕上某种颜色的灰度,而屏幕采用三基色红绿蓝(RGB),不压缩的情况下一个像素需要占用24bit(3字节),这个就是常说的24位真彩色。
三杯水Plus
2021/02/26
4.4K1
网络摄像头带宽估算
Android平台摄像头麦克风视音频采集录像之MediaRecorder还是SmartPublisher
在 Android 中录制摄像头采集的数据到 MP4 文件,我们可以用系统自带的MediaRecorder,也可以用第三方成熟的摄像头采集录制库,本文就两种方案,做个大概的梳理。
音视频牛哥
2024/11/21
2480
Android平台摄像头麦克风视音频采集录像之MediaRecorder还是SmartPublisher
有丢包信道下的带宽受限无线视频通信
随着移动设备数量快速增长,国防监控需求也在增大。然而由于无线通信本身就可能出现丢包,因此在编码、视频质量以及误码纠错中一直都有着权衡。
用户1324186
2022/01/20
1.2K0
有丢包信道下的带宽受限无线视频通信
GB/T28181-2022针对H.265、AAC的说明和技术实现
GB/T28181-2022相对来GB/T28181-2016针对H.265、AAC的更新如下:
音视频牛哥
2023/02/13
8170
GB/T28181-2022针对H.265、AAC的说明和技术实现
视频技术全解析:分辨率、比特率、HDR 及应用
视频文件的制作和管理涉及多个技术要素,从分辨率、帧率到色彩空间,再到编解码器和容器格式的选择,这些都直接影响视频的质量、兼容性和存储效率。
除除
2025/03/31
5360
视频技术全解析:分辨率、比特率、HDR 及应用
RTSP摄像头、播放器为什么需要支持H.265?
好多开发者在做选RTSP播放器的时候,经常问我们的问题是,用H.264好还是H.265好?本文我们就H.264 和 H.265的主要区别和适用场景,做个大概的交流。
音视频牛哥
2024/11/25
3010
RTSP摄像头、播放器为什么需要支持H.265?
视频技术入门指南
你真的理解视频技术吗?什么是帧率、分辨率、码率?它们之间有什么关系?你知道“1080p”和“4K”中的“p”和“K”代表什么吗?如何描述视频质量?蓝光光盘(Blu-ray Disc)究竟是什么?H.264/AVC、H.265/HEVC、AV1 等编解码器有什么区别?苹果的 Apple ProRes 又有什么特殊用途?HDR 和杜比视界(Dolby Vision)是什么?为什么视频文件有.mp4、.mkv、.flv 等多种后缀?
timerring
2025/02/11
1260
GB28181国标支持H.265编码吗?
好多开发者聊到GB28181的时候,不可避免的提到H.265编码国标平台是否支持?实际上,GB/T28181-2016里面,并未提及H.265编解码相关,具体参见以下说明:
音视频牛哥
2022/10/05
9030
GB28181国标支持H.265编码吗?
一篇文章带你简单了解音频视频
1)流媒体协议是服务器与客户端之间通信遵循的规定。当前网络上主要的流媒体协议如表所示。
小驰行动派
2021/04/19
6130
【目标检测】视频输出体积太大?分析视频的编码与码率问题
早期电视台在传输节目信息时,由于带宽有限,于是想在带宽不变的情况下,增加图像的分辨率,让画面看起来更清晰,于是就采用隔行扫描的方式,如下图所示[1],第一帧扫描奇数行的数据,第二帧扫描偶数行的数据,交替进行。由于视觉暂留,在人眼看来就是完整的视频图像。
zstar
2023/12/19
9080
【目标检测】视频输出体积太大?分析视频的编码与码率问题
企鹅电竞直播关键技术大揭秘
16年壮观的直播百团大战相信大家历历在目,至19年初所剩无几的直播寡头,来去如风的直播战场,离不开背后强大的直播技术支撑,本文通过直播基础技术介绍、剖析企鹅电竞直播构架、关键技术、常见问题排查、带领大家了解直播技术细节。 直播基础技术扫盲 分辨率 分辨率是度量位图图像内数据量多少的一个参数。通常表示成每英寸像素(Pixel per inch, ppi)和每英寸点(Dot per inch, dpi),包含的数据越多,图形文件的长度就越大,也能表现更丰富的细节。但更大的文件需要耗用更多的计算机资源,更多的内
腾讯移动品质中心TMQ
2019/05/31
5.3K0
企鹅电竞直播关键技术大揭秘
GB/T28181-2016传输要求和Android平台设备接入技术实现
GB/T28181-2016公共安全视频监控联网系统 信息传输、交换、控制技术要求相关的传输要求如下:
音视频牛哥
2022/09/10
6150
推荐阅读
相关推荐
GB/T28181-2022针对H.265编码细化及技术实现
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档