dever 6 years ago
parent
commit
1d4b1a89ed
7 changed files with 90 additions and 56 deletions
  1. 1 1
      doc/apidoc.php
  2. 11 0
      live/database/stream.php
  3. 27 26
      live/lib/Handle.php
  4. 1 0
      live/lib/Manage.php
  5. 1 1
      live/lib/Qiniu.php
  6. 49 0
      live/src/Api.php
  7. 0 28
      main/src/Live.php

+ 1 - 1
doc/apidoc.php

@@ -190,7 +190,7 @@
 
 
 /**
- * @api {get} wonderful/main/?l=live.get 获取直播推流信息
+ * @api {get} wonderful/live/?l=api.get 获取直播推流信息
  * @apiVersion 1.0.0
  * @apiName live.get
  * @apiGroup Live

+ 11 - 0
live/database/stream.php

@@ -196,6 +196,17 @@ return array
             //'list'      => true,
         ),
 
+        'url_vod'      => array
+        (
+            'type'      => 'varchar-800',
+            'name'      => '直播回放地址',
+            'default'   => '',
+            'desc'      => '直播回放地址',
+            'match'     => 'option',
+            //'update'    => 'text',
+            //'list'      => true,
+        ),
+
         'info'      => array
         (
             'type'      => 'text-255',

+ 27 - 26
live/lib/Handle.php

@@ -32,6 +32,15 @@ class Handle
         $stream = $method->stop($info['key']);
     }
 
+    # 保存
+    public function save($id)
+    {
+        $info = Dever::db('live/stream')->one($id);
+        $config = Dever::db('live/info')->one($info['live_id']);
+        $method = $this->method($config);
+        return $method->save($info['key']);
+    }
+
     # 初始化流
     public function init($id, $name = '')
     {
@@ -42,34 +51,16 @@ class Handle
         if ($name) {
             $info['key'] = $name;
         }
-        $config = Dever::db('live/info')->one($info['live_id']);
-        
-        $method = $this->method($config);
-        $stream = $method->create($info['key']);
-
-        $rtmp = $method->getRtmp($info['key'], $info['times'] * 3600);
-
-        $url = $method->getPlay($info['key']);
-
-        $data['where_id'] = $id;
-        $data['live'] = $rtmp;
-        $data['url_rtmp'] = $url['rtmp'];
-        $data['url_hls'] = $url['hls'];
-        $data['url_hdl'] = $url['hdl'];
-        $data['url_pic'] = $url['pic'];
-        $live['info'] = $stream;
-
-        $data['info'] = Dever::json_encode($live);
-
-        Dever::db('live/stream')->update($data);
 
-        return $data;
+        return $this->get($info);
     }
 
     # 获取流信息 定时跑
-    public function get($id)
+    public function get($info)
     {
-        $info = Dever::db('live/stream')->one($id);
+        if (!is_array($info)) {
+            $info = Dever::db('live/stream')->one($id);
+        }
 
         $config = Dever::db('live/info')->one($info['live_id']);
         
@@ -81,9 +72,13 @@ class Handle
 
         $stream = $method->getInfo($info['key']);
 
-        $live = $method->getLiveStatus($info['key']);
-
-        $hitory = $method->history($info['key']);
+        try {
+            $live = $method->getLiveStatus($info['key']);
+            $hitory = $method->history($info['key']);
+        } catch (\Exception $e) {
+            $live = array();
+            $hitory = array();
+        }
 
         $data['where_id'] = $id;
         $data['live'] = $rtmp;
@@ -97,6 +92,12 @@ class Handle
         $live['live'] = $live;
         $live['hitory'] = $history;
 
+        if ($live) {
+            $data['status'] = 2;
+        } else {
+            $data['status'] = 1;
+        }
+
         $data['info'] = Dever::json_encode($live);
 
         Dever::db('live/stream')->update($data);

+ 1 - 0
live/lib/Manage.php

@@ -82,6 +82,7 @@ class Manage
         $table['标清地址'] = $info['url_hls'];
         $table['普清地址'] = $info['url_hdl'];
         $table['截图地址'] = $info['url_pic'];
+        $table['回放地址'] = $info['url_vod'];
         return Dever::table($table);
     }
 

+ 1 - 1
live/lib/Qiniu.php

@@ -83,7 +83,7 @@ class Qiniu
     }
 
     # 保存直播数据
-    public function save($name, $start, $end)
+    public function save($name, $start = 0, $end = 0)
     {
         $stream = $this->get($name);
         return $stream->saveas(array("format" => "mp4"), $start, $end);

+ 49 - 0
live/src/Api.php

@@ -0,0 +1,49 @@
+<?php
+
+namespace Live\Src;
+
+use Dever;
+
+class Api
+{
+    # 获取直播地址
+    public function get()
+    {
+        $signature = Dever::input('signature');
+        if ($signature != md5('signature_dever_2018_jm')) {
+            Dever::alert('signature error');
+        }
+
+        $data = Dever::db('live/active')->getAll(array('status' => 2));
+
+        if ($data) {
+            foreach ($data as $k => $v) {
+                $data[$k]['stream'] = Dever::db('live/stream')->getAll();
+            }
+            return array('active' => $data);
+        } else {
+            return array('active' => (object) array());
+        }
+    }
+
+    # 获取回放地址
+    public function getMp4()
+    {
+        $signature = Dever::input('signature');
+        if ($signature != md5('signature_dever_2018_jm')) {
+            Dever::alert('signature error');
+        }
+
+        $id = Dever::input('id');
+        $data = Dever::db('live/stream')->one($id);
+
+        if ($data) {
+            foreach ($data as $k => $v) {
+                $data[$k]['stream'] = Dever::db('live/stream')->getAll();
+            }
+            return array('active' => $data);
+        } else {
+            return array('active' => (object) array());
+        }
+    }
+}

+ 0 - 28
main/src/Live.php

@@ -1,28 +0,0 @@
-<?php
-
-namespace Main\Src;
-
-use Dever;
-
-class Live
-{
-    # 获取直播地址
-    public function get()
-    {
-        $signature = Dever::input('signature');
-        if ($signature != md5('signature_dever_2018_jm')) {
-            Dever::alert('signature error');
-        }
-
-        $data = Dever::db('live/active')->getAll(array('status' => 2));
-
-        if ($data) {
-            foreach ($data as $k => $v) {
-                $data[$k]['stream'] = Dever::db('live/stream')->getAll();
-            }
-            return array('active' => $data);
-        } else {
-            return array('active' => (object) array());
-        }
-    }
-}