|
@@ -44,13 +44,13 @@ class Handle
|
|
|
|
|
|
Dever::db('live/stream')->update($info_update);
|
|
|
|
|
|
- Dever::db('live/stream_log')->update(array('edate' => time(), 'where_id' => $log_id));
|
|
|
+ Dever::db('live/stream_ios_log')->update(array('edate' => time(), 'where_id' => $log_id));
|
|
|
|
|
|
return true;
|
|
|
}
|
|
|
|
|
|
-
|
|
|
- public function saveLog($id, $log_id = false, $table = false)
|
|
|
+
|
|
|
+ public function saveIosLog($id, $log_id = false, $table = false)
|
|
|
{
|
|
|
$info = Dever::db('live/stream')->one($id);
|
|
|
|
|
@@ -60,42 +60,53 @@ class Handle
|
|
|
$data['stream_id'] = $id;
|
|
|
$data['live_id'] = $info['live_id'];
|
|
|
$data['active_id'] = $info['active_id'];
|
|
|
- $id = Dever::db('live/stream_log')->insert($data);
|
|
|
+ $id = Dever::db('live/stream_ios_log')->insert($data);
|
|
|
} else {
|
|
|
|
|
|
$config = Dever::db('live/info')->one($info['live_id']);
|
|
|
- $log = Dever::db('live/stream_log')->one($log_id);
|
|
|
+ $log = Dever::db('live/stream_ios_log')->one($log_id);
|
|
|
$method = $this->method($config);
|
|
|
$log['sdate'] = intval($log['sdate']);
|
|
|
$log['edate'] = intval($log['edate']);
|
|
|
- $data['url_m3u8'] = $config['host'] . $method->save($info['key'],$log['sdate'], $log['edate']);
|
|
|
- $data['url_mp4'] = $config['host'] . $method->save($info['key'], $log['sdate'], $log['edate'], 'mp4');
|
|
|
+ $data['url_m3u8'] = $config['host'] . $method->save($info['key'],0, $log['edate']);
|
|
|
+ $data['url_mp4'] = $config['host'] . $method->save($info['key'], 0, $log['edate'], 'mp4');
|
|
|
$data['where_id'] = $log_id;
|
|
|
- Dever::db('live/stream_log')->update($data);
|
|
|
+ Dever::db('live/stream_ios_log')->update($data);
|
|
|
$id = $log_id;
|
|
|
|
|
|
if ($table) {
|
|
|
- $data = Dever::db($table)->state(array('stream_id' => $info['id']));
|
|
|
- if ($data) {
|
|
|
- foreach ($data as $k => $v) {
|
|
|
- if (!$v['url_m3u8'] && $v['sdate'] > 0 && $v['edate'] > 0) {
|
|
|
-
|
|
|
- $v['sdate'] = intval($v['sdate']);
|
|
|
- $v['edate'] = intval($v['edate']);
|
|
|
-
|
|
|
- $url_m3u8 = $config['host'] . $method->save($info['key'],$v['sdate'], $v['edate']);
|
|
|
- $url_mp4 = $config['host'] . $method->save($info['key'], $v['sdate'], $v['edate'], 'mp4');
|
|
|
-
|
|
|
- Dever::db($table)->update(array('where_id' => $v['id'], 'url_m3u8' => $url_m3u8, 'url_mp4' => $url_mp4));
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
+ $this->createUrl($table, $method, $config, $info);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
return $id;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ public function createUrl($table, $method, $config, $info)
|
|
|
+ {
|
|
|
+ $data = Dever::db($table)->state(array('stream_id' => $info['id']));
|
|
|
+ if ($data) {
|
|
|
+ foreach ($data as $k => $v) {
|
|
|
+ $this->createUrlOne($v, $table, $method, $config, $info);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public function createUrlOne($data, $table, $method, $config, $info)
|
|
|
+ {
|
|
|
+ if (!$data['url_m3u8'] && $data['sdate'] > 0 && $data['edate'] > 0) {
|
|
|
+
|
|
|
+ $data['sdate'] = intval($data['sdate']);
|
|
|
+ $data['edate'] = intval($data['edate']);
|
|
|
+
|
|
|
+ $url_m3u8 = $config['host'] . $method->save($info['key'],$data['sdate'], $data['edate']);
|
|
|
+ $url_mp4 = $config['host'] . $method->save($info['key'], $data['sdate'], $data['edate'], 'mp4');
|
|
|
+
|
|
|
+ Dever::db($table)->update(array('where_id' => $data['id'], 'url_m3u8' => $url_m3u8, 'url_mp4' => $url_mp4));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
public function startLive($id)
|
|
|
{
|
|
@@ -140,9 +151,19 @@ class Handle
|
|
|
$stream = $method->getInfo($info['key']);
|
|
|
}
|
|
|
|
|
|
- $rtmp = $method->getRtmp($info['key'], $info['times'] * 3600);
|
|
|
+
|
|
|
+ if (!$info['live_date']) {
|
|
|
+ $info['live_date'] = 0;
|
|
|
+ }
|
|
|
+ $time = time();
|
|
|
+ $num = $info['times'];
|
|
|
+ if ($time - $info['live_date'] > $num) {
|
|
|
+ $rtmp = $method->getRtmp($info['key'], $info['times'] * 3600);
|
|
|
+ }
|
|
|
|
|
|
- $url = $method->getPlay($info['key']);
|
|
|
+ if (!$info['url_rtmp']) {
|
|
|
+ $url = $method->getPlay($info['key']);
|
|
|
+ }
|
|
|
|
|
|
$status = array();
|
|
|
$history = array();
|
|
@@ -160,16 +181,39 @@ class Handle
|
|
|
}
|
|
|
|
|
|
$data['where_id'] = $info['id'];
|
|
|
- $data['live'] = $rtmp;
|
|
|
- $data['url_rtmp'] = $url['rtmp'];
|
|
|
- $data['url_hls'] = $url['hls'];
|
|
|
- $data['url_hdl'] = $url['hdl'];
|
|
|
- $data['url_pic'] = $url['pic'];
|
|
|
+ if (isset($rtmp) && $rtmp) {
|
|
|
+ $data['live'] = $rtmp;
|
|
|
+ $data['live_date'] = $time;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (isset($url) && isset($url['rtmp']) && $url['rtmp']) {
|
|
|
+ $data['url_rtmp'] = $url['rtmp'];
|
|
|
+ $data['url_hls'] = $url['hls'];
|
|
|
+ $data['url_hdl'] = $url['hdl'];
|
|
|
+ $data['url_pic'] = $url['pic'];
|
|
|
+ }
|
|
|
|
|
|
$live = Dever::json_decode($info['info']);
|
|
|
- $live['info'] = $stream;
|
|
|
- $live['live'] = $status;
|
|
|
- $live['hitory'] = $history;
|
|
|
+
|
|
|
+
|
|
|
+ if ($stream) {
|
|
|
+ $live['info'] = $stream;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ if ($status) {
|
|
|
+ $live['live'] = $status;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ if ($history) {
|
|
|
+ $live['history'] = $history;
|
|
|
+ if (isset($history['items']) && $history['items']) {
|
|
|
+ foreach ($history['items'] as $k => $v) {
|
|
|
+ $this->saveLog($info['id'], $v['start'], $v['end']);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
if ($status) {
|
|
|
$data['status'] = 2;
|
|
@@ -183,4 +227,23 @@ class Handle
|
|
|
|
|
|
return $data;
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
+ public function saveLog($id, $sdate, $edate)
|
|
|
+ {
|
|
|
+ $info = Dever::db('live/stream')->one($id);
|
|
|
+
|
|
|
+ $data['sdate'] = $sdate;
|
|
|
+ $data['edate'] = $edate;
|
|
|
+ $data['stream_id'] = $id;
|
|
|
+ $data['live_id'] = $info['live_id'];
|
|
|
+ $data['active_id'] = $info['active_id'];
|
|
|
+ $log = Dever::db('live/stream_log')->one($data);
|
|
|
+
|
|
|
+ if (!$log) {
|
|
|
+ $id = Dever::db('live/stream_log')->insert($data);
|
|
|
+ }
|
|
|
+
|
|
|
+ return $id;
|
|
|
+ }
|
|
|
}
|