首页 » 软件优化 » 效果如何?(直播视频效果阿里监听)

效果如何?(直播视频效果阿里监听)

萌界大人物 2024-11-23 05:11:56 0

扫一扫用手机浏览

文章目录 [+]

swoole做直播具体步骤如下:(带摄像头的笔记本)

1、Swoole创建 2个监听 一个WebSocket监听服务(用于视频流传输)。
一个本地 【Unix Socket文件描述符】(用于ffmpeg转码后的视频流接受与转发给WebSocket客户端。

2、浏览器使用 jsmpeg 这个项目连接 Swoole 提供的WebSocket 服务来获取视频流播放。

效果如何?(直播视频效果阿里监听) 软件优化
(图片来自网络侵删)

3、使用ffmpeg 把直播的视频流 转码 为 mpeg 视频流格式 发送到 本地的Swoole 监听的【Unix Socket】文件描述符

比如:$serv->addlistener("/var/run/myserv.sock", 0,SWOOLE_UNIX_STREAM); 文件描述符:/var/run/myserv.sock

4、Swoole 监听的文件描述符 的 onReceive 事件会收到 ffmpeg 转码的视频流。
在通过 Swoole的WebSocket方法push 给连接到 WebSocket服务的 客户端发送视频流。

PHP与阿里云视频直播API开发视频直播

1.下载sdk放入项目文件夹中

核心就是aliyun-php-sdk-core,它的配置文件会自动加载相应的类

2.引入文件

include_onceLIB_PATH.'ORG/aliyun-openapi/aliyun-php-sdk-core/Config.php';

3.配置客户端对象,需要Access Key ID,Access Key Secret

$iClientProfile=DefaultProfile::getProfile("cn-hangzhou","xxxx","xxxx");//AccessKeyID,AccessKeySecret$client=newDefaultAcsClient($iClientProfile);

4.调用请求类,并配置参数,就拿直播推流历史为例

$request=newlive\Request\V20161101\DescribeLiveStreamsPublishListRequest();$request->setDomainName('live.yunlutong.com');$request->setAppName('yunlutong');$request->setStreamName('demo');$request->setStartTime('2020-03-01T19:00:00Z');$request->setEndTime('2020-03-29T19:00:00Z');

5.发起请求

//针对阿里云进行请求$response=$client->getAcsResponse($request);exit(json_encode($response));

完整代码如下

<?php/直播相关接口/classLiveActionextendsApiAction{protectedfunction_initialize(){parent::_initialize();}//获取推流历史publicfunctionDescribeLiveStreamsPublishList(){include_onceLIB_PATH.'ORG/aliyun-openapi/aliyun-php-sdk-core/Config.php';$iClientProfile=DefaultProfile::getProfile("cn-hangzhou","xxxx","xxxx");//AccessKeyID,AccessKeySecret$client=newDefaultAcsClient($iClientProfile);$request=newlive\Request\V20161101\DescribeLiveStreamsPublishListRequest();$request->setDomainName('live.yunlutong.com');$request->setAppName('yunlutong');$request->setStreamName('demo');$request->setStartTime('2020-03-01T19:00:00Z');$request->setEndTime('2020-03-29T19:00:00Z');//针对阿里云进行请求$response=$client->getAcsResponse($request);exit(json_encode($response));}}

返回的数据

其他的接口请求也都类似这样,就不在这里一一列举,更多会用到的API,你是要查看API文档的,地址:https://help.aliyun.com/document_detail/48207.html

视频直播生成推流地址和播放地址的程序示例

直播推流地址和播放地址本身没有API接口,需要在客户端自行拼接地址,然后使用推流工具或者播放器对其推流或播放。

示例代码

<?phpfunctionpush_url($push_domain,$push_key,$expireTime,$appName,$streamName){$push_url='';//未开启鉴权Key的情况下if($push_key==''){$push_url='rtmp://'.$push_domain.'/'.$appName.'/'.$streamName;echo$push_url;return;}$timeStamp=time()+$expireTime;$sstring='/'.$appName.'/'.$streamName.'-'.$timeStamp.'-0-0-'.$push_key;$md5hash=md5($sstring);$push_url='rtmp://'.$push_domain.'/'.$appName.'/'.$streamName.'?auth_key='.$timeStamp.'-0-0-'.$md5hash;echo$push_url;echoPHP_EOL;return;}functionplay_url($play_domain,$play_key,$expireTime,$appName,$streamName){//未开启鉴权Key的情况下if($play_key==''){$rtmp_play_url='rtmp://'.$play_domain.'/'.$appName.'/'.$streamName;$flv_play_url='http://'.$play_domain.'/'.$appName.'/'.$streamName.'.flv';$hls_play_url='http://'.$play_domain.'/'.$appName.'/'.$streamName.'.m3u8';}else{$timeStamp=time()+$expireTime;$rtmp_sstring='/'.$appName.'/'.$streamName.'-'.$timeStamp.'-0-0-'.$play_key;$rtmp_md5hash=md5($rtmp_sstring);$rtmp_play_url='rtmp://'.$play_domain.'/'.$appName.'/'.$streamName.'?auth_key='.$timeStamp.'-0-0-'.$rtmp_md5hash;$flv_sstring='/'.$appName.'/'.$streamName.'.flv-'.$timeStamp.'-0-0-'.$play_key;$flv_md5hash=md5($flv_sstring);$flv_play_url='http://'.$play_domain.'/'.$appName.'/'.$streamName.'.flv?auth_key='.$timeStamp.'-0-0-'.$flv_md5hash;$hls_sstring='/'.$appName.'/'.$streamName.'.m3u8-'.$timeStamp.'-0-0-'.$play_key;$hls_md5hash=md5($hls_sstring);$hls_play_url='http://'.$play_domain.'/'.$appName.'/'.$streamName.'.m3u8?auth_key='.$timeStamp.'-0-0-'.$hls_md5hash;}echo'rtmp播放地址:'.$rtmp_play_url;echoPHP_EOL;echo'flv播放地址:'.$flv_play_url;echoPHP_EOL;echo'hls播放地址:'.$hls_play_url;echoPHP_EOL;return;}//推流域名$push_domain='testpush.cn';//推流域名配置的鉴权Key$push_key='test_Push_key';//生成随机的AppName$appName=md5(uniqid(microtime(true),true));//生成随机的StreamNmae$streamName=md5(uniqid(microtime(true),true));//配置过期时间为1小时$expireTime=3600;//播放域名$play_domain='testPlay.cn';//播放域名配置的鉴权Key$play_key='test_play_key';push_url($push_domain,$push_key,$expireTime,$appName,$streamName);play_url($play_domain,$play_key,$expireTime,$appName,$streamName);?>啥?swoole你还不会,

领取方式:点赞关注小编后私信【资料】获取资料领取方式!

标签:

相关文章

智慧城市沙盘模型(沙盘城市智慧模型技术)

智慧城市沙盘在使用中的范围还是很广的,应用在房地产项目上最多。采用“多位一体”多媒体数字沙盘集成技术,综合运用同步播放系统、追光捕...

软件优化 2024-12-23 阅读492 评论0