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

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

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

影响视频带宽的因素 视频编码方式:

不同的编码方式对带宽的需求差异很大。例如,H.264 是一种广泛使用的编码标准,它能够在相对较低的带宽下提供较好的视频质量。H.265(HEVC)则在相同视频质量下通常比 H.264 所需带宽更低。较新的编码标准如 AV1,也在不断提高压缩效率,进一步降低带宽需求。 帧率:

帧率越高,每秒钟传输的图像帧数就越多,所需的带宽也会相应增加。常见的帧率有 24fps、30fps、60fps 等。例如,一个 1080p 的视频,在 30fps 下所需的带宽可能与在 60fps 下有较大差异。 视频内容动态程度:

视频中如果有大量快速运动的画面、复杂的场景或细节丰富的图像,需要更多的带宽来准确传输这些信息。相比静态场景为主的视频,动作片、体育赛事等动态内容的视频通常需要更高的带宽。不同分辨率的大致带宽需求 480p:

通常情况下,480p 的视频在较低的码率下也能有较好的观看体验。对于标清的 480p 视频,采用 H.264 编码,在 1Mbps - 2Mbps 的带宽下可以获得较为流畅的播放效果。如果视频内容相对简单,动态程度较低,可能在 1Mbps 以下的带宽也能播放,但可能会出现一些画质损失。 720p:

720p 的高清视频需要更高的带宽来保证画质。一般来说,采用 H.264 编码的 720p 视频在 2Mbps - 4Mbps 的带宽下可以获得较好的观看体验。如果是高动态的视频内容或者要求更高的画质,可能需要接近 5Mbps 的带宽。 1080p:

全高清的 1080p 视频对带宽要求更高。通常情况下,采用H.264 编码的 1080p 视频在 4Mbps - 8Mbps 的带宽下可以有较好的播放效果。对于高质量的 1080p 视频,特别是 60fps 的高帧率视频,可能需要10Mbps 甚至更高的带宽。 2K:

2K 分辨率(通常为 2560×1440)的视频需要大量的带宽来传输高质量的图像。一般来说,采用 H.264 编码的 2K 视频在 8Mbps - 15Mbps 的带宽下可以获得较好的观看体验。如果是高动态、高帧率或者对画质要求极高的情况,可能需要 20Mbps 以上的带宽。 4K:

4K 分辨率(通常为 3840×2160)是目前非常高的画质标准,对带宽的需求极大。采用 H.264 编码的 4K 视频通常需要 20Mbps - 50Mbps 的带宽才能获得较好的观看体验。而采用更高效的编码标准如 H.265 或 AV1,可能在较低的带宽下也能实现较好的画质,但一般也需要 15Mbps - 30Mbps 的带宽。对于高帧率、高动态的 4K 视频,可能需要超过 50Mbps 的带宽。8K 视频: 如果视频编码效率较低,要流畅播放8K视频可能需要 70-80Mbps 的带宽。对于较高质量、高帧率的 8K 视频,带宽需求可能会达到 200Mbps 甚至更高。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复制//估计硬编码码率, 可以根据实际机型调整

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复制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复制 /*

* 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);

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

相关推荐

红色警戒2秘籍作弊码有哪些?秘籍及作弊码分享
365体育亚洲官方入口app下载

红色警戒2秘籍作弊码有哪些?秘籍及作弊码分享

📅 07-21 👁️ 368
【随笔】张謇前沿观的五大启示
365bet.com官网

【随笔】张謇前沿观的五大启示

📅 07-23 👁️ 3962
2025中国安防设备上市公司全方位对比分析(企业分布、经营情况、业务布局等)
厵 - 三个原组成的字怎么读
bt365手机官方网址

厵 - 三个原组成的字怎么读

📅 07-10 👁️ 1031
真实赛车3怎么下载更新:官方正版最新版安装指南
秒, 时间
365bet.com官网

秒, 时间

📅 07-06 👁️ 7630