阿里雲視頻直播開發的好多坑

這篇文章主要是介紹阿里雲直播開發中的一些坑,不是很詳細,由於關於開發相關的資料網上有不少,可是關於坑的文章有不多,若是有啥不懂的能夠下方評論,一塊兒交流~~~~
簡單介紹一下拉流和推流以及推流拉流地址拼接,剩下的主要是講坑,注意拉流和播流的意思是同樣的。

1、拉流和推流前端

(1)什麼是拉流:拉流顧名思義就是播放(詳細解釋能夠百度)跨域

(2)什麼是推流:推流,指的是把採集階段封包好的內容傳輸到服務器的過程
image.png
2、直播配置服務器

詳情看文檔或者百度,有不少資料app

3、推流播流地址拼接
image.png
廢話很少說直接上代碼阿里雲

// 時間戳

long time=timeConversion(lapseTime);//時間戳能夠動態生成,代碼參考下面的時間戳生成代碼

// APP名稱

String appName="APP名稱";

// 攝像頭編號名稱

String streamName=cloudEyeId;

// 播流域名

String playHost="播流域名";

// 推流域名

String pushHost="推流域名";

// 推流鑑權主key

String  pushKye="推流鑑權主key";

// 播放鑑權主key

String  playKye="播放鑑權主key";

// 隨機數不要有下劃線 //隨機數能夠爲o

String  rand=UUIDGenerator.generate();

// 加密

String strPlay="/"+appName+"/"+streamName+"-"+time+"-0-0-"+playKye;

String strPush="/"+appName+"/"+streamName+"-"+pushTime+"-0-0-"+pushKye;

// 播放流拼接rtmp

String playUrl="rtmp://"+playHost+"/"+appName+"/"+streamName+"?auth\_key="+time+"-0-0-"+DigestUtils.md5Hex(strPlay);

// 推流拼接rtmp

String pushUrl="rtmp://"+pushHost+"/"+appName+"/"+streamName+"?auth\_key="+pushTime+"-0-0-"+ DigestUtils.md5Hex(strPush);

System.out.println(">>>>>>>>>>>>>>>播流地址"+playUrl);

System.out.println(">>>>>>>>>>>>>>>m3u8"+m3u8);

System.out.println(">>>>>>>>>>>>>>>推流地址"+pushUrl);

時間戳生成 注意鑑權過時時間不要毫秒這是一個坑文檔有寫必定要注意!!!!加密

Long time = System.currentTimeMillis();

time += startTime \* 1000 \* 60; //當前時間加上30分鐘

s=(new Date(time).getTime()/1000);

4、爲何你的鑑權時間沒有過時?spa

怎麼查看鑑權時間過不過時,若是你設置了鑑權時間,在過時時間用vlc播放播流地址,播放不了說明,時效時間生效了code

這是一個特別大的坑,在保證你代碼準確,並且配置正確的前提下,若是你的鑑權時間到了,你的播流地址沒有過時,**是由於播流過時時間是你的後臺過時時間+你代碼設置的過時時間=失效時間
意思就是你視頻直播控制檯設置了10分鐘的時效時間,而你代碼也設置了10分鐘的時效時間,這樣時效時間就成了20分鐘。**
5、直播錄像的一些坑視頻

1.爲啥你的m3u8地址播放不了?
仍是在你配置正確的前提下,你的錄像m3u8地址播放不了是由於兩個緣由:(1)前端跨域問題(這個不詳細解釋) (2)oss權限問題,若是你的錄像文件存到oss服務器上,若是你要訪問須要權限,若是你仔細查看文檔,文檔會讓你經過簽名的方式去訪問。簽名代碼以下。
image.png
上圖中的type不要管是什麼,和簽名沒有關係,必定要注意紅框中req.setProcess 這個又是一個坑,若是你不寫這個你簽完名之後你仍是訪問不了你的m3u8地址,爲何呢?
由於你簽名只簽名了你的m3u8的文件,那m3u8相關的ts文件你沒有簽名,因此加上req.setProcessblog

相關文章
相關標籤/搜索