緣由
最近幫朋友看一個直播網站的源碼,發現這份直播源碼借助 阿里雲 、騰訊雲這些大公司提供的SDK 可以非常方便的搭建一個直播網站。下面我們來給大家講解下如何借助 騰訊雲 我們搭建一個簡易的 直播示例
雲直播架構
主要分三部分
1:直播端 通過設備 直接通過 直播服務提供方 的推流 地址 進行直播視頻,這些直播流視頻 會推送到 直播服務提供方 直播服務器雲存儲
2:直播服務提供方 會將 雲存儲的 視頻流 轉發到 CDN 節點
3:觀眾 就通過 各種終端 看直播(此時就會根據不同游客 會 訪問不同的節點 )
生成推送流URL
根據 騰訊雲直播官方 https://cloud.tencent.com/product/lvb 介紹,所有用戶都可以領取20G 的流量,夠我們測試了。
准備工作
1:官方注冊賬號 領取20G流量 官方地址: https://cloud.tencent.com/product/lvb
2:需要一個備案過的域名(用戶播放直播視頻域名) 。這就需要自己購買了
3:支持推流的app。易推流 只支持IOS 、騰訊官方小直播 DEMO:https://cloud.tencent.com/document/product/267/32732#.E5.B0.8F.E7.9B.B4.E6.92.AD-demo
推流URL代碼
/** * 獲取推流地址 * 如果不傳key和過期時間,將返回不含防盜鏈的url * @param domain 您的推流域名 * stream_id 您用來區別不同推流地址的唯一流ID * key 安全密鑰 * time 過期時間 sample 2016-11-12 12:00:00 * @return String url */ public static function getPushUrl($domain, $stream_id, $key = null, $time = null){ if($key && $time){ $tx_time = strtoupper( base_convert(strtotime($time),10,16)); $tx_secret = md5($key.$stream_id.$tx_time); $ext_str = "?".http_build_query([ "txSecret"=> $tx_secret, "txTime"=> $tx_time ]); } return "rtmp://".$domain."/live/".$stream_id.( isset($ext_str) ? $ext_str : ""); }
其中domain 和 key 都是通過騰訊控制台獲取的 。如下圖
而其中的stream_id 你可以理解為直播房間id,在具體開發中 不要重復就好了
播放流URL
生成播放流URL非常簡單,但是需要 有自己備案過得域名。然后在后台添加播放域名就行了。
添加完成域名之后 就需要將域名 cname 到 下圖二中的官方分配地址
播放URL代碼
/** * 獲取播放地址 * @param domain 您的播放域名 * stream_id 您用來區別不同推流地址的唯一流ID * @return String url */ public static function getPlayUrl($domain, $stream_id){ $data = [ "rtmp://".$domain."/live/".$stream_id, "http://".$domain."/live/".$stream_id.".flv", "http://".$domain."/live/".$stream_id.".m3u8" ]; return $data[1]; }
其中 domain 就是剛在添加的域名。stream_id 就是生成推送流里面的參數。播放流可以生成三種模式,flv 和 m3u8。一般我們flv格式延遲會低些
效果展示
獲取推送Url 和 播放Url
推送流Url:rtmp://44159.livepush.myqcloud.com/live/54php?txSecret=安全保密替換掉&txTime=5CC066FD 播放流Url:http://lvb.54php.cn/live/54php.flv
使用騰訊小直播軟件直播
易推流App
前端演示地址:http://m.54php.cn/demo/lvb ,可能無法看到,因為浪子沒有直播了
原文地址: 快速搭建一個直播Demo
標簽: 直播 lvb