视频直播常见问题与解决办法汇总【系列三—直播推流】
摘要: 直播推流初始化設(shè)置 要進(jìn)行直播推流,您必須開啟直播加速 > 配置直播域名 > 直播推流,詳情參考 快速開始。 如何獲取推流地址 直播加速配置成功后,您可以通過以下方式獲取對(duì)應(yīng)的推流地址。 登錄 視頻直播控制臺(tái)。
直播推流初始化設(shè)置
要進(jìn)行直播推流,您必須開啟直播加速 > 配置直播域名 > 直播推流,詳情參考 快速開始。
如何獲取推流地址
直播加速配置成功后,您可以通過以下方式獲取對(duì)應(yīng)的推流地址。
1.登錄 視頻直播控制臺(tái)。
2.單擊 域名管理。
3.選擇所需地域。
4.選擇所需的域名。
5.選擇所需域名,并單擊右側(cè)的 管理。
6.在 基本信息 中,獲取對(duì)應(yīng)的推流地址:rtmp://video-center.alivecdn.com/AppName/StreamName?vhost=videolive.aliyuntest.club 。
注意:
直播配置成功后,對(duì)應(yīng)的推流地址獲取是不需要調(diào)用 API 或者 SDK 生成或者初始化的,使用推流工具推流的時(shí)候,填入需要的 AppName 或者 StreamName 進(jìn)行推流即可。如指定推流地址:rtmp://video-center.alivecdn.com/1/2?vhost=live.aliyun.com。
推流地址中 APPName 是應(yīng)用名稱,支持自定義,可以更改。
推流地址中 StreamName 是流名稱,支持自定義,可以更改。
推流的 APPName 或 StreamName 不建議設(shè)置為中文字符。
為何OBS推流不成功
OBS 推流不成功,對(duì)應(yīng) 視頻直播控制臺(tái) > 流管理,正在推流信息中不能看到對(duì)應(yīng)流.OBS如何進(jìn)行推流,詳情參考 OBS 操作指南。
排查
排查對(duì)應(yīng)域名是否進(jìn)行直播配置:視頻直播控制臺(tái) > 域名管理 中能否看到對(duì)應(yīng)的域名。直播加速配置參考 直播加速配置。
排查OBS推流配置填寫的是否準(zhǔn)確,詳情參考 OBS 推流。
OBS推流配置如下:
FMS URL / URL: rtmp://video-center.alivecdn.com/AppName
播放路徑/串碼流(如果存在)/ 流秘鑰: StreamName?vhost=live.aliyun.com
排查直播域名是否開啟了A鑒權(quán)。
1.登錄 視頻直播控制臺(tái)。
2.單擊 域名管理。
3.選擇所需的地域。
4.選擇所需的域名。
5.單擊所選域名右側(cè) 管理。
6.單擊 鑒權(quán)配置。
如果開啟,計(jì)得算推流地址(rtmp://video-center.alivecdn.com/AppName/StreamName?vhost=videolive.aliyuntest.club)的鑒權(quán)地址進(jìn)行推流,鑒權(quán)地址計(jì)算參考 快速開始 第4點(diǎn)鑒權(quán)配置。
直播推流支持哪些協(xié)議
視頻直播只支持rtmp協(xié)議推流
直播推流如何進(jìn)行鑒權(quán)推流
直播鑒權(quán)開啟及鑒權(quán)地址計(jì)算參考 快速開始 第4點(diǎn)鑒權(quán)配置。
鑒權(quán)地址計(jì)算完成后,使用對(duì)應(yīng)的鑒權(quán)地址進(jìn)行推流:
OBS推流配置類似如下:
FMS URL / URL: rtmp://video-center.alivecdn.com/AppName
播放路徑/串碼流(如果存在)/ 流秘鑰: StreamName?vhost=live8.aliyuntest.club&auth_key=1487766738-0-0-a96e76d2ebf9bbd855b0d4a9168ee600;
如何確認(rèn)推流成功
1.登錄 視頻直播控制臺(tái)。
2.單擊 流管理。
3.選擇所需的地域。
4.選擇所需的域名。
5.流狀態(tài)選擇 正在推流。
如果可以查看到存在對(duì)應(yīng)流,則推流成功。
禁止推流的情況該如何實(shí)現(xiàn)?
用戶存在業(yè)務(wù)場(chǎng)景需求某路流臨時(shí)禁止推流。例如,對(duì)應(yīng)的鑒權(quán)推流地址暴露,客戶惡意推流該地址、業(yè)務(wù)需求禁止該推流URL進(jìn)行推流等,就可以使用直播的禁止推流功能滿足該需求。推流及鑒權(quán)推流地址概念參考 直播推流地址相關(guān)問題。
直播控制臺(tái)禁止推流
1.獲取正在推流地址并加入黑名單
直播推流成功后,您可以在 視頻直播控制臺(tái) > 流管理 > 選擇所需的地域和域名 > 選擇正在推流,查看到正在推流的地址,單擊 加入黑名單 即可。
2.獲取歷史推流地址并加入黑名單
直播推流成功后,您可以在 視頻直播控制臺(tái) > 流管理 > 選擇所需的地域和域名 > 選擇歷史推流,查看到歷史推流地址,單擊 加入黑名單 即可。
SDK實(shí)現(xiàn)禁止推流
視頻直播的API是基于阿里云的OpenAPI實(shí)現(xiàn)的。因此,SDK的調(diào)用也是對(duì)OpenAPI封裝后調(diào)用。以Java SDK為例,Java SDK建議使用maven管理項(xiàng)目依賴,在pom.xml中添加如下的依賴項(xiàng):
<dependencies><dependency><groupid>com.aliyun</groupid><artifactid>aliyun-java-sdk-cdn</artifactid><version>2.3.1</version></dependency><dependency><groupid>com.aliyun</groupid><artifactid>aliyun-java-sdk-core</artifactid><optional>true</optional><version>2.3.8</version></dependency></dependencies>其中,aliyun-java-sdk-core是對(duì)阿里云OpenAPI封裝的核心模塊,在使用OpenAPI的產(chǎn)品調(diào)用Java SDK均需要添加該依賴項(xiàng),而aliyun-java-sdk-cdn包括了視頻直播接口的Request和Response類;其中禁止推流的Request和Response類為ForbidLiveStreamRequest及ForbidLiveStreamResponse,Java代碼示例如下:
public static void main(String[] args) throws Exception {IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessId, accessKey);DefaultAcsClient client = new DefaultAcsClient(profile);ForbidLiveStreamResponse res=ForbidLiveStreamR(client);System.out.println(res.getRequestId());} static ForbidLiveStreamResponse ForbidLiveStreamR(DefaultAcsClient client){ForbidLiveStreamRequest request =new ForbidLiveStreamRequest();request.setDomainName("<domainname>");request.setAppName("<appname>");request.setStreamName("<streamname>");request.setLiveStreamType("publisher");ForbidLiveStreamResponse response=null;try {response = client.getAcsResponse(request);}catch (ServerException e) {e.printStackTrace();} catch (ClientException e) {e.printStackTrace();} return response;}Demo代碼主要流程如下:
初始化Client對(duì)象。SDK需要通過IAcsClient對(duì)象完成對(duì)OpenAPI的調(diào)用,而初始化IAcsClient對(duì)象時(shí)根據(jù)IClientProfile對(duì)象配置region、AccessKeyId和AccessKeySecret參數(shù)。其中,region請(qǐng)一直寫cn-hangzhou,因?yàn)檫@里指的是OpenAPI的服務(wù)器所在區(qū)域。AccessKeyId和AccessKeySecret參數(shù)即是賬號(hào)權(quán)限驗(yàn)證,如果是主賬號(hào)的AccessKeyId和AccessKeySecret,則可以正常使用。如果是子賬號(hào)的AccessKeyId和AccessKeySecret參數(shù),則需要保證該子賬號(hào)有視頻直播的權(quán)限。
初始化請(qǐng)求Request類。SDK對(duì)每個(gè)接口實(shí)現(xiàn)了對(duì)應(yīng)的Request類和Response類,對(duì)應(yīng)的禁止推流Request類需要傳入哪些參數(shù),看API接口定義 禁止推流API。
發(fā)起請(qǐng)求獲取結(jié)果。使用Client對(duì)象的getAcsResponse方法發(fā)起Request對(duì)象請(qǐng)求,并根據(jù)該方法反饋的反序列化的結(jié)果實(shí)例化為對(duì)應(yīng)接口的Response類。并且在執(zhí)行該方法時(shí)可以catch ServerException和ClientException異常類,當(dāng)http status>=300且<500 SDK拋ClientException,表示客戶端錯(cuò)誤。當(dāng)http status>=500 SDK拋ServerException,表示服務(wù)器端錯(cuò)誤。如果沒有拋出異常則表示接口調(diào)用成功。
如何查看推流黑名單
1.直播控制臺(tái)查看推流黑名單
直播推流成功后,您可以在 視頻直播控制臺(tái) > 流管理 > 選擇所需的地域和域名 > 選擇黑名單,查看到黑名單中的推流地址。
2.SDK獲取黑名單地址視頻直播的API是基于阿里云的OpenAPI實(shí)現(xiàn)的,因此SDK的調(diào)用也是對(duì)OpenAPI封裝后調(diào)用。以Java SDK為例:Java SDK建議使用maven管理項(xiàng)目依賴,在pom.xml中添加如下的依賴項(xiàng):
<dependencies><dependency><groupid>com.aliyun</groupid><artifactid>aliyun-java-sdk-cdn</artifactid><version>2.3.1</version></dependency><dependency><groupid>com.aliyun</groupid><artifactid>aliyun-java-sdk-core</artifactid><optional>true</optional><version>2.3.8</version></dependency></dependencies>其中,aliyun-java-sdk-core是對(duì)阿里云OpenAPI封裝的核心模塊,在使用OpenAPI的產(chǎn)品調(diào)用Java SDK均需要添加該依賴項(xiàng),而aliyun-java-sdk-cdn包括了視頻直播接口的Request和Response類。其中,查詢推流黑名單列表的Request和Response類為DescribeLiveStreamsBlockListRequest及DescribeLiveStreamsBlockListResponse,Java代碼示例如下:
public static void main(String[] args) throws Exception {IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessId, accessKey);DefaultAcsClient client = new DefaultAcsClient(profile);DescribeLiveStreamsBlockListResponse res=DescribeLiveStreamsBlockListR(client);System.out.println(res.getStreamUrls());} static DescribeLiveStreamsBlockListResponse DescribeLiveStreamsBlockListR(DefaultAcsClient client){DescribeLiveStreamsBlockListRequest request =new DescribeLiveStreamsBlockListRequest();request.setDomainName("<domainname>");DescribeLiveStreamsBlockListResponse response=null;try {response = client.getAcsResponse(request);}catch (ServerException e) {e.printStackTrace();} catch (ClientException e) {e.printStackTrace();} return response;}Demo代碼主要流程如下:
初始化Client對(duì)象。SDK需要通過IAcsClient對(duì)象完成對(duì)OpenAPI的調(diào)用,而初始化IAcsClient對(duì)象時(shí)根據(jù)IClientProfile對(duì)象配置region、AccessKeyId和AccessKeySecret參數(shù)。其中,region請(qǐng)一直寫cn-hangzhou,因?yàn)檫@里指的是OpenAPI的服務(wù)器所在區(qū)域。AccessKeyId和AccessKeySecret參數(shù)即是賬號(hào)權(quán)限驗(yàn)證,如果是主賬號(hào)的AccessKeyId和AccessKeySecret則可以正常使用,如果是子賬號(hào)的AccessKeyId和AccessKeySecret參數(shù)則需要保證該子賬號(hào)有視頻直播的權(quán)限。
初始化請(qǐng)求Request類。SDK對(duì)每個(gè)接口實(shí)現(xiàn)了對(duì)應(yīng)的Request類和Response類,對(duì)應(yīng)的禁止推流Request類需要傳入哪些參數(shù),看API接口定義 查詢推流黑名單列表API。
發(fā)起請(qǐng)求獲取結(jié)果。使用Client對(duì)象的getAcsResponse方法發(fā)起Request對(duì)象請(qǐng)求,并根據(jù)該方法反饋的反序列化的結(jié)果實(shí)例化為對(duì)應(yīng)接口的Response類。并且在執(zhí)行該方法時(shí)可以catch ServerException和ClientException異常類,當(dāng)http status>=300且<500 SDK拋ClientException,表示客戶端錯(cuò)誤。當(dāng)http status>=500 SDK拋ServerException,表示服務(wù)器端錯(cuò)誤。如果沒有拋出異常則表示接口調(diào)用成功。
如何恢復(fù)黑名單直播流推送地址
1.直播控制臺(tái)恢復(fù)
直播推流成功后,您可以在 視頻直播控制臺(tái) > 流管理 > 選擇所需的地域和域名 > 選擇正在推流 > 選擇黑名單,查看到黑名單中的推流地址,進(jìn)行恢復(fù)。
2.SDK恢復(fù)黑名單直播流推送地址
視頻直播的API是基于阿里云的OpenAPI實(shí)現(xiàn)的,因此SDK的調(diào)用也是對(duì)OpenAPI封裝后調(diào)用。以Java SDK為例。Java SDK建議使用maven管理項(xiàng)目依賴,在pom.xml中添加如下的依賴項(xiàng):
<dependencies><dependency><groupid>com.aliyun</groupid><artifactid>aliyun-java-sdk-cdn</artifactid><version>2.3.1</version></dependency><dependency><groupid>com.aliyun</groupid><artifactid>aliyun-java-sdk-core</artifactid><optional>true</optional><version>2.3.8</version></dependency></dependencies>其中,aliyun-java-sdk-core是對(duì)阿里云OpenAPI封裝的核心模塊,在使用OpenAPI的產(chǎn)品調(diào)用Java SDK均需要添加該依賴項(xiàng),而aliyun-java-sdk-cdn包括了視頻直播接口的Request和Response類。其中,恢復(fù)直播流推送的Request和Response類為ResumeLiveStreamRequest及ResumeLiveStreamResponse,Java代碼示例如下:
public static void main(String[] args) throws Exception {IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessId, accessKey);DefaultAcsClient client = new DefaultAcsClient(profile);ResumeLiveStreamResponse res=ResumeLiveStreamR(client);System.out.println(res.getRequestId());} static HttpResponse ForbidLiveStream(DefaultAcsClient client){ForbidLiveStreamRequest request =new ForbidLiveStreamRequest();request.setDomainName("<domainname>");request.setAppName("<appname>");request.setStreamName("<streamname>");request.setLiveStreamType("publisher");HttpResponse response=null;try {response = client.doAction(request);}catch (ServerException e) {e.printStackTrace();} catch (ClientException e) {e.printStackTrace();} return response;}Demo代碼主要流程如下:
初始化Client對(duì)象。SDK需要通過IAcsClient對(duì)象完成對(duì)OpenAPI的調(diào)用,而初始化IAcsClient對(duì)象時(shí)根據(jù)IClientProfile對(duì)象配置region、AccessKeyId和AccessKeySecret參數(shù)。其中region請(qǐng)一直寫cn-hangzhou,因?yàn)檫@里指的是OpenAPI的服務(wù)器所在區(qū)域。AccessKeyId和AccessKeySecret參數(shù)即是賬號(hào)權(quán)限驗(yàn)證。如果是主賬號(hào)的AccessKeyId和AccessKeySecret,則可以正常使用。如果是子賬號(hào)的AccessKeyId和AccessKeySecret參數(shù),則需要保證該子賬號(hào)有視頻直播的權(quán)限。
初始化請(qǐng)求Request類。SDK對(duì)每個(gè)接口實(shí)現(xiàn)了對(duì)應(yīng)的Request類和Response類,對(duì)應(yīng)的禁止推流Request類需要傳入哪些參數(shù),看API接口定義 恢復(fù)直播流推送API。
發(fā)起請(qǐng)求獲取結(jié)果。使用Client對(duì)象的getAcsResponse方法發(fā)起Request對(duì)象請(qǐng)求,并根據(jù)該方法反饋的反序列化的結(jié)果實(shí)例化為對(duì)應(yīng)接口的Response類。并且在執(zhí)行該方法時(shí)可以catch ServerException和ClientException異常類,當(dāng)http status>=300且<500 SDK拋ClientException,表示客戶端錯(cuò)誤。當(dāng)http status>=500 SDK拋ServerException,表示服務(wù)器端錯(cuò)誤。如果沒有拋出異常則表示接口調(diào)用成功。
0.1元開啟直播之旅
開年采購季,為了讓更多用戶能夠體驗(yàn)和享受到視頻直播云服務(wù)的便利,視頻產(chǎn)品推出了0.1元體驗(yàn)包,配置清單如下:
原文鏈接
干貨好文,請(qǐng)關(guān)注掃描以下二維碼:
總結(jié)
以上是生活随笔為你收集整理的视频直播常见问题与解决办法汇总【系列三—直播推流】的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 传奇谢幕,回顾霍金76载传奇人生
- 下一篇: Multi Task Learning在