天涯论坛

 找回密码
 立即注册
搜索
查看: 24|回复: 2

[精选] php亦是能够做直播相关业务研发的

[复制链接]

2973

主题

412

回帖

9117万

积分

论坛元老

Rank: 8Rank: 8

积分
91179187
发表于 2024-10-4 19:11:22 | 显示全部楼层 |阅读模式

商务合作加微X:2230304070 

学习与交流:PHP技术交流微X群 

学习与分享:JetBrains 正版授权 ,所有系列 IDE 均可用

如今的直播平台到处都是了,自己动手用PHP去做一个视频直播,那是能够的,你能够用到swoole。然则会花很长期研发与测试吧!晓得研发出来的效果会不会不稳定。因此为了节省更加多的时间,研发视频直播基本都会用到第三方稳定的API,今天要讲到的是用PHP与阿里云视频直播API研发视频直播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.sock4、Swoole 监听的文件描述符 的 onReceive 事件会收到 ffmpeg 转码的视频流。在经过 Swoole的WebSocket办法push 给连接到 WebSocket服务的 客户端发送视频流。PHP与阿里云视频直播API研发视频直播1.下载sdk放入项目文件夹中核心便是aliyun-php-sdk-core,它的配置文件会自动加载相应的类2.引入文件include_once LIB_PATH . ORG/aliyun-openapi/aliyun-php-sdk-core/Config.php

;

3.配置客户端对象,需要Access Key ID,Access Key Secret$iClientProfile = DefaultProfile::getProfile("cn-hangzhou""xxxx""xxxx");  // Access Key ID,Access Key Secret$client = new

 DefaultAcsClient($iClientProfile);

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

live\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

/**

 * 直播关联接口

 */
class LiveAction extends ApiAction

{

    protected function _initialize()    

{

        parent

::_initialize();

    }

    // 获取推流历史    public function DescribeLiveStreamsPublishList() 

{

        include_once LIB_PATH . ORG/aliyun-openapi/aliyun-php-sdk-core/Config.php

;

$iClientProfile = DefaultProfile::getProfile("cn-hangzhou""xxxx""xxxx");  // Access Key ID,Access Key Secret        $client = new

 DefaultAcsClient($iClientProfile);

$request =new

 live\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接口,需要在客户端自动拼接位置而后运用推流工具播放器对其推流或播放。示例代码<?phpfunction push_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;

        echo

 HP_EOL;

        return

;

}

function play_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;

        echo

 HP_EOL;

        echo flv播放位置

.$flv_play_url;

        echo

 HP_EOL;

        echo hls播放位置

.$hls_play_url;

        echo

 HP_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);

?>
原文链接:https://www.cnblogs.com/jiqing9006/p/6599492.html以上便是本篇分钟的所有内容,期盼各位程序员们奋斗提高个人技术。最后,博主温馨提示:每日阅读5分钟,每日学习一点点,每日进步一点点。

丨热门教程资源免费领丨

上下滑动查看更加多

在下方公众号回复「资料就可领取哦

↓↓↓

点个赞

再走吧





上一篇:原创 明初军队中的舍人和余丁是什么职务
下一篇:电销卡是重点用来做什么的?
回复

使用道具 举报

2951

主题

3万

回帖

9997万

积分

论坛元老

Rank: 8Rank: 8

积分
99979409
发表于 2024-10-23 09:44:55 | 显示全部楼层
感谢你的精彩评论,带给我新的思考角度。
回复

使用道具 举报

3139

主题

3万

回帖

9996万

积分

论坛元老

Rank: 8Rank: 8

积分
99968622
发表于 2024-10-29 10:00:35 | 显示全部楼层
百度seo优化论坛 http://www.fok120.com/
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

站点统计|Archiver|手机版|小黑屋|天涯论坛 ( 非经营性网站 )|网站地图

GMT+8, 2024-11-23 16:46 , Processed in 0.117449 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.