|
本帖最后由 追影 于 2021-3-26 14:57 编辑
直播主要分为三个端:直播数据采集端(采集数据并编码推给服务端)
服务端 (负责解码并推流到客户端),腾讯云已经帮你完全做好你不用管
客户端拉流播放
腾讯云直播使用流程
首先登录注册https://console.cloud.tencent.com/live/common/apply?code=0
配置域名 将配置的域名到自己域名管理里cname解析
php生成多房间 推流服务器url与播放url实例:下面要用到这两个url
- <?php
- function getPushUrl($domain, $streamName, $key = null, $time = null){
- if($key && $time){
- $txTime = strtoupper(base_convert(strtotime($time),10,16));
- //txSecret = MD5( KEY + streamName + txTime )
- $txSecret = md5($key.$streamName.$txTime);
- $ext_str = "?".http_build_query(array(
- "txSecret"=> $txSecret,
- "txTime"=> $txTime
- ));
- }
-
- return "rtmp://".$domain."/live/".$streamName . (isset($ext_str) ? $ext_str : "");
- }
- echo getPushUrl("push.abcd.com","shadowgirl","d68de0084956ad55d2996ee7c83152db",date('Y-m-d H:i:s',strtotime("+2 day")));
- echo '<br>';
- function getPlayUrl($domain,$streamName, $key,$time,$playFormat = 'hls')
- {
- $txTime = strtoupper(base_convert(strtotime($time),10,16));
- $txSecret = md5($key.$streamName.$txTime);
- $extStr = '?'.http_build_query([
- 'txSecret' => $txSecret,
- 'txTime' => $txTime
- ]);
-
- switch ($playFormat)
- {
- case 'flv':
- $playUrl = "http://".$domain."/live/".$streamName .'.flv'. (isset($extStr) ? $extStr : "");
- break;
-
- case 'hls':
- $playUrl = "http://".$domain."/live/".$streamName .'.m3u8'. (isset($extStr) ? $extStr : "");
- break;
-
- case 'rtmp':
- default:
- $playUrl = "rtmp://".$domain."/live/".$streamName . (isset($extStr) ? $extStr : "");
- break;
- }
-
- return $playUrl;
- }
- echo getPlayUrl("play.abcd.com","shadowgirl","d68de0084956ad55d2996ee7c83152db",date('Y-m-d H:i:s',strtotime("+2 day")));
复制代码
1:直播数据采集端 可以简单理解主播端 可以用任何高级语言编写采集流媒体数据编码向服务端发送数据
这里简单用
ffmpeg 官网 下载链接为:http://ffmpeg.org/您也可以用这个https://obsproject.com/
命令: rtmp推流
- ffmpeg.exe -re -i "test.mp4" -acodec aac -ar 32000 -vcodec copy -f flv "rtmp://腾讯云的rmtp服务端地址"
复制代码 2:由于服务端腾讯云已经做好我们不管,客户端html5播放即可
- <script src="https://imgcache.qq.com/open/qcloud/video/vcplayer/TcPlayer-2.3.3.js" charset="utf-8"></script>;
- <div id="id_test_video" style="width:100%; height:auto;"></div>
- <script>
- var player = new TcPlayer('id_test_video', {
- "m3u8": "http://播放域名/live/shadowgirl.m3u8?txSecret=2396273493870044dc552af2a00cc34e&txTime=60601ED8", //请替换成实际可用的播放地址
- "autoplay" : true, //iOS 下 safari 浏览器,以及大部分移动端浏览器是不开放视频自动播放这个能力的
- "poster" : "http://www.test.com/myimage.jpg",
- "width" : '480',//视频的显示宽度,请尽量使用视频分辨率宽度
- "height" : '320'//视频的显示高度,请尽量使用视频分辨率高度
- });
- </script>
复制代码
效果图:
多房间(多人)在线直播实现思路就这么简单!!
|
|