直播转码可以解决推流端码率较高或较低而导致播放效果不好等问题。通过阅读本文,您可以快速了解直播转码的使用场景、使用限制、转码功能、模板参数、转码规则和宽度自适应等功能。
使用场景
当推流端码率较高而客户端带宽资源有限会导致视频播放卡顿;当推流端码率较低时会导致视频播放效果不好。使用直播转码服务可以快速帮您解决这些问题。
播放器插件需要实现多码率切换。前端播放器插件设置码率切换,需要同一路推流同时提供多种码率的播流地址。视频直播的实时转码功能能为同一路推流同时提供多种码率的播流地址服务。
使用H.264编码进行推流,实时转码成H.265编码直播流进行播放,可以降低带宽。
使用H.265编码进行推流,实时转码成低码率H.265编码的直播流进行播放。
为了解决H.265在浏览器不兼容问题需要实时转码成H.264编码的直播流进行播放。
使用限制
根据域名+AppName进行转码模板设置时,同一个模板里转码模板类型不能同时配置标准模板和窄带高清TM模板。
直播中心为北京、上海、深圳、新加坡时,每个域名下最多支持50路转码并发流,也就是一个域名下最多同时输出50路转码流。其他直播中心每个域名下最多支持10路转码并发流。如果一路高清分辨率直播流输入,同时转码成标清和流畅分辨率进行输出播放,算2路转码流。
当提供的直播服务不能满足您当前业务需求时,请联系您的阿里云客户经理或通过阿里云其它渠道咨询。
模板参数
转码模板支持通用模板、自定义模板、RTS转码模板和多码率转码模板。
通用模板中的模板为系统预设模板包括转码模板的ID和转码输出分辨率。转码输出的码率都是系统预设置不支持修改。如果通用模板不能满足您的要求,您可以使用自定义模板或RTS转码模板,自定义转码模板支持编码格式、分辨率、码率、帧率、视频GOP、触发转码、转码模板ID的设置。
通用转码和自定义转码分别提供标准模板和窄带高清TM模板。RTS转码在标准模板和窄带高清TM模板基础上提供RTS超低延时播放SDK所需的B帧和OPUS参数设置。
通用转码
说明转码采用宽度自适应的算法,根据转码后视频的高度自适应转码后视频的宽度。请参见宽度自适应。
标准模板
模板名称
模板ID
分辨率(宽*高)
码率(kbps)
转码账单中输出规格
流畅
lld
360
460
LD
标清
lsd
432
640
SD
高清
lhd
648
1200
SD
超清
lud
1080
2100
HD
窄带高清 TM模板
模板名称
模板ID
分辨率(宽*高)
码率(kbps)
转码账单中输出规格
流畅
ld
360
≤420
LD
标清
sd
432
≤580
SD
高清
hd
648
≤1100
SD
超清
ud
1080
≤1900
HD
自定义转码
自定义转码的模板参数由用户自行定义。
说明自定义转码中窄带高清TM模板暂不支持选择H.265编码格式,如果您需要,请联系您的阿里云客户经理或通过阿里云其它渠道咨询。
RTS转码
RTS转码的模板参数由用户自行定义。
多码率转码
多码率转码的模板参数由用户自行定义。
转码功能介绍
转码配置
转码配置可以使用以下两种配置方式:
控制台配置:
API和SDK配置:
//需要<>内容替换成实际使用的值 DefaultProfile profile = DefaultProfile.getProfile("<regionId>", "<ALIBABA_CLOUD_ACCESS_KEY_ID>", "<ALIBABA_CLOUD_ACCESS_KEY_SECRET>"); IAcsClient client = new DefaultAcsClient(profile); AddLiveStreamTranscodeRequest addLiveStreamTranscodeRequest = new AddLiveStreamTranscodeRequest(); addLiveStreamTranscodeRequest.setDomain("<DomainName>"); addLiveStreamTranscodeRequest.setApp("<AppName>"); addLiveStreamTranscodeRequest.setTemplate("<Template>"); // //其他业务代码 // try { AddLiveStreamTranscodeResponse addLiveStreamTranscodeResponse = client.getAcsResponse(addLiveStreamTranscodeRequest); System.out.println(new Gson().toJson(addLiveStreamTranscodeResponse)); // todo something. } catch (ServerException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (ClientException e) { // TODO Auto-generated catch block e.printStackTrace(); }
说明如果更改转码配置,需要进行重新推流后配置才可生效。
使用JAVA SDK,具体请参见Java SDK使用说明。
转码使用
转码配置重新推流后提供多种码率的多条直播地址。您可以登录视频直播控制台,选择流管理,在对应的推流记录中点击操作列直播地址进行查看。其中包含原画地址和转码流地址,原画(Original)即原始码率地址。
说明如果直播地址中未包含转码流地址,请查看您的转码模板是否配置为拉流触发且未进行拉流。
您可在原播流地址
StreamName
后加_转码模板ID
进行自定义拼接转码流地址,详情可参见生成推流地址和播放地址。
转码规则
视频直播默认支持延时转码,系统监测到某一路直播流无人观看时,不会执行转码。检测到有人观看后启动转码,转码过程中5分钟内检测到无人观看即会停止转码。
每一路流仅执行一次转码。
转码不是必须服务,可按需配置。
转码目前支持FLV、RTMP、HLS、RTS格式。
宽度自适应
转码采用宽度自适应的算法,根据转码后视频的高度自适应转码后视频的宽度。