使用场景
视频直播播流端的码率是根据推流端决定的,即播流端的码率是与推流端的码率一致的。但是遇到以下场景会造成直播效果较差
-
推流端码率与播流端带宽不相匹配。当推流端码率较高而客户端带宽资源有限就会导致播放出现卡顿,而当推流端码率较低但是客户端对于直播效率要求较高时会导致播放效果较差。
-
播放器插件需要实现多码率切换。前端播放器插件常可以设置码率切换,这就需要同一路推流可以同时提供多种码率的播流地址。
因此,视频直播提供了实时转码功能对同一路推流地址同时提供多路不同码率播流地址提供服务。
转码功能介绍
-
转码配置
转码配置包括两种配置方式:
-
API/SDK配置:API/SDK提供了如下接口供用户使用:添加转码配置、删除转码配置 和 查询转码配置信息。下面提供使用Java SDK添加转码配置的示例代码。
IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou","<AccessKeyId>", "<AccessKeyScret>"); IAcsClient client = new DefaultAcsClient(profile); AddLiveStreamTranscodeRequest addLiveStreamTranscodeRequest = new AddLiveStreamTranscodeRequest(); addLiveStreamTranscodeRequest.setDomain("<DomainName>"); addLiveStreamTranscodeRequest.setApp("<AppName>"); addLiveStreamTranscodeRequest.setTemplate("hd"); addLiveStreamTranscodeRequest.setSnapshot("no"); addLiveStreamTranscodeRequest.setRecord("no"); try { AddLiveStreamTranscodeResponse addLiveStreamTranscodeResponse = client.getAcsResponse(addLiveStreamTranscodeRequest); System.out.println(addLiveStreamTranscodeResponse.getRequestId()); // todo something. } catch (ServerException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (ClientException e) { // TODO Auto-generated catch block e.printStackTrace(); }
-
转码使用
上述转码配置完成后即可以推流后同时提供多种码率的多条直播地址。您可以在 视频直播控制台 > 流管理 中单击对应的推流记录的直播地址查看。其中原画即是原始码率地址,而转码流即是直播转码后的地址,您可以在该地址后面单击 复制 获取直播地址或者单击 播放 直接播放测试。另外,如果您需要在业务端代码中使用该地址,可以直接在原始码率的{StreamName}后添加转码流即可。
常见问题
-
转码配置针对AppName设置转码规则,暂时不支持设置通配符“*”对整个域名均生效。
-
直播转码包括通用转码和自定义转码,分别支持“标准模板”和“窄带高清™模板”两种转码模板。对应的分辨率如下图。
-
通用转码
-
自定义转码
通过API/SDK设置时Template可以设置为ld、sd、hd和ud(分别表示流畅、标清、高清和超清),暂时通过API/SDK同时设置hd和sd时需要调用两次接口分别设置。
-
-
在开启实时转码后默认会对该AppName限制并发推流路数为10路,更多的路数需求可以使用其他AppName。
-
直播转码功能暂时仅支持rtmp和flv直播流协议,以及m3u8的实时转码功能。