七牛-Pili Streaming Cloud Server-Side Library For PHP
2017-08-14 10:14
1151 查看
七牛-Pili Streaming Cloud Server-Side Library For PHP
<?php class QinqiuPpi{ private $ak = ''; private $sk=''; private $hubName = ""; private $domian = ""; /** * 初始化参数 * QinqiuPpi constructor. * @param array $options * @param $options ['ak'] * @param $options ['sk'] * @param $options ['hubName'] //存储空间//防止直播卡顿尽量设置为加速域名 * @param $options ['domian'] //域名 */ public function __construct($options) { $this->ak = isset($options["ak"]) ? $options["ak"] : ''; $this->sk = isset($options["sk"]) ? $options["sk"] : ''; $this->hubName = isset($options["hubName"]) ? $options["hubName"] : ''; $this->domian = isset($options["domian"]) ? $options["domian"] : ''; } /** * 创建一个hub对象 */ private function hub(){ $ak = $this->ak; $sk = $this->sk; $hubName = $this->hubName; $mac = new Qiniu\Pili\Mac($ak, $sk); $client = new Qiniu\Pili\Client($mac); $hub = $client->hub($hubName); return $hub; } /** * Stream的相关操作及信息 */ public function stream($streamKey = ''){ //获取stream if(empty($streamKey)){ $streamKey = "php-sdk-test" . time(); }else{ $streamKey = $streamKey; } $stream = hub()->stream($streamKey); try { //创建stream $resp = $this->hub()->create($streamKey); //获取stream info $resp = $stream->info(); //列出所有流 $resp = $this->hub()->listStreams("php-sdk-test", 1, ""); //列出正在直播的流 $resp = $this->hub()->listLiveStreams("php-sdk-test", 1, ""); //返回流 return $stream; } catch (\Exception $e) { echo "Error:", $e, "\n"; } } /** * 启用流 * @return mixed */ public function stream_enable(){ try { //启用流 $stream_info = stream()->info(); //查询直播状态 $status = stream()->liveStatus(); return $stream_info; } catch (\Exception $e) { echo "Error:", $e, "\n"; } } /** * 获取流的信息 * @return mixed */ public function stream_info(){ try { //获取流信息 $stream_info = stream()->info(); //查询直播状态 $status = st 4000 ream()->liveStatus(); return $stream_info; } catch (\Exception $e) { echo "Error:", $e, "\n"; } } /** * 禁用流 * @return mixed */ public function stream_disable(){ try { //禁用流 $stream_info = stream()->disable(); //查询直播状态 $status = stream()->liveStatus(); return $stream_info; } catch (\Exception $e) { echo "Error:", $e, "\n"; } } /** * 保存直播回放 * @param $start 开始时间 * @param $end 结束时间 */ public function save($start,$end){ try { //保存直播回放 $fname = stream()->save($start, $end); //保存的直播回放地址 $url = $this->domian . $fname['fname']; } catch (\Exception $e) { echo "Error:", $e, "\n"; } } /** * 查询直播历史 * @param $start * @param $end */ public function stream_historyActivity($start,$end){ try { //查询直播历史 $fname = stream()->historyActivity($start, $end); } catch (\Exception $e) { echo "Error:", $e, "\n"; } } /** * RTMP推流地址: RTMPPublishURL(domain, hub, streamKey, mac, expireAfterSeconds) *RTMP直播地址: RTMPPlayURL(domain, hub, streamKey) *HLS直播地址: HLSPlayURL(domain, hub, streamKey) *HDL直播地址: HDLPlayURL(domain, hub, streamKey) *截图直播地址: SnapshotPlayURL(domain, hub, streamKey) */ /** * @param $streamKey //流 * @return array */ public function push_url($streamKey){ $domain = $this->domian; $hubName = $this->hubName; $ak = $this->ak; $sk = $this->sk; //获取流 $streamKey = $this->stream($streamKey); //RTMP 推流地址 $url = \Qiniu\Pili\RTMPPublishURL($domain, $hubName, $streamKey, 3600, $ak, $sk); //RTMP 直播放址 $url2 = \Qiniu\Pili\RTMPPlayURL($domain, $hubName, $streamKey); //rtmp格式 //HLS 直播地址 $url3 = \Qiniu\Pili\HLSPlayURL($domain, $hubName, $streamKey); //m3u8格式 //HDL直播地址 $url4 = \Qiniu\Pili\HDLPlayURL($domain, $hubName, $streamKey); //flv格式 //截图直播地址: $url5 = \Qiniu\Pili\SnapshotPlayURL($domain, $hubName, $streamKey); $result = array('url'=>$url,'rtmp'=>$url2,'m3u8'=>$url3,'streamKey'=>$streamKey,'flv'=>$url4,"play_img" =>$url5); return $result; } /** * 视频转码 */ public function checkout_transcoding(){ import('phpSDK.autoload'); //对已经上传到七牛的视频发起异步转码操作 $accessKey = $this->ak; $secretKey = $this->sk; $domain = $this->domian; $auth = new \Qiniu\Auth($accessKey, $secretKey); //要转码的文件所在的空间和文件名。 $bucket = 'tst1'; //转码是使用的队列名称。 https://portal.qiniu.com/mps/pipeline $pipeline = 'mseplay'; //转码完成后通知到你的业务服务器。 $pfop = new \Qiniu\Processing\PersistentFop($auth, $bucket, $pipeline); //获取文件名 $key_arr = M("live_store")->where(["tran_status"=>0,"is_del"=>1,"tran_id"=>0])->getField('fname',true); if($key_arr){ foreach ($key_arr as $k =>$v){ //要进行转码的转码操作。 http://developer.qiniu.com/docs/v6/api/reference/fop/av/avthumb.html $rest = preg_replace("/m3u8/",'mp4',$v); $fops = "avthumb/mp4"; //saveas另存并且重名 $fops .= '|saveas/' . \Qiniu\base64_urlSafeEncode("$bucket:$rest"); list($id, $err) = $pfop->execute($v, $fops); if ($err == null) { M("live_store")->where(["fname"=>$v])->save(["tran_id"=>$id,"tran_status"=>1]); } } } //查询转码的进度和状态 $tran_arr = M("live_store")->where(["stan_status"=>1,"is_del"=>1])->getField("tran_id",true); foreach ($tran_arr as $k=>$v){ $mp4 = M("live_store")->where(["tran_id"=>$v])->getField("mp4"); list($ret, $err) = $pfop->status($v); if ($err == null) { if($ret["items"][0]["key"]){ $data["mp4"] = $domain.$ret["items"][0]["key"]; M("live_store")->where(["tran_id" => $v])->save($data); } } } } }
注明:
php 转码的 demo
Qiniu Resource (Cloud) Storage SDK for PHP
七牛服务端php-SDK
七牛直播云服务端相关开发文档
相关文章推荐
- Server Side Validation Library
- php中$_SERVER参数HTTP_X_FORWARDED_FOR & REMOTE_ADDR与获取IP
- 动手开发一个简易的 PHP for Git Server 第二章
- How to Install CURL library for PHP in Ubuntu box
- Unable to load the native wlfileio library for the persistent file store "_WLS_AdminServer"
- Installing PowerShell Management Library for windows server 2008
- TCP/UDP client/server library for Java, 最好的java语言tcp udp 服务器客户端实现库
- A Streaming Server Application for the Elphel 313 Network Camera
- oauth2-server-php for windows 的那些坑 (研究中...)
- 动手开发一个简易的 PHP for Git Server 第三章
- 微软的PHP连接SQL Server数据库 (Microsoft Drivers for PHP for SQL Server )
- Install mcrypt for php on Mac OSX 10.10 Yosemite for a Development Server
- Akka(35): Http:Server side streaming
- Webserver issues | PHP manager for IIS
- PHP开发调试环境配置(基于wampserver+Eclipse for PHP Developers )
- Aspose for Cloud如何在PHP中执行邮件合并
- PHP开发调试环境配置(基于wampserver+Eclipse for PHP Developers )
- 动手开发一个简易的 PHP for Git Server 第四章
- API 参考 (SQL Server Driver for PHP)
- Darwin Streaming Server for Windows 安装