video.html 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
  6. <meta http-equiv="X-UA-Compatible" content="IE=9">
  7. <title>视频转码服务系统</title>
  8. <link rel="stylesheet" type="text/css" href="<?=Web_Path?>packs/layui/css/layui.css">
  9. <link rel="stylesheet" type="text/css" href="<?=Web_Path?>packs/public/css/common.css?v=1.1">
  10. <link rel="stylesheet" type="text/css" href="<?=Web_Path?>packs/font/font.css">
  11. <script src="<?=Web_Path?>packs/jquery/jquery.min.js"></script>
  12. <script src="<?=Web_Path?>packs/layui/layui.js"></script>
  13. </head>
  14. <body>
  15. <div class="layui-tab-content" style="min-height: 360px;">
  16. <form class="layui-form layui-form-so" action="<?=site_url('video')?>" method="post" style="padding-top: 10px">
  17. <div class="layui-form-item">
  18. <label class="layui-form-label">日期</label>
  19. <div class="layui-input-inline">
  20. <input style="width:120px;" name="kstime" id="kstime" type="text" value="<?=$kstime?>" class="layui-input" />
  21. </div>
  22. <div class="layui-input-inline">-</div>
  23. <div class="layui-input-inline">
  24. <input style="width:120px;" name="jstime" id="jstime" value="<?=$jstime?>" type="text" class="layui-input" />
  25. </div>
  26. <label class="layui-form-label">名称</label>
  27. <div class="layui-input-inline">
  28. <input type="text" name="key" value="<?=$key?>" class="layui-input" style="width: 150px">
  29. </div>
  30. <div class="layui-input-inline">
  31. <div class="vocation">
  32. <select name="cid">
  33. <option value="0">视频分类</option>
  34. <?php
  35. foreach ($vlist as $row2) {
  36. $sel = $cid == $row2->id ? ' selected' : '';
  37. echo '<option value="'.$row2->id.'"'.$sel.'>'.$row2->name.'</option>';
  38. }
  39. ?>
  40. </select>
  41. </div>
  42. </div>
  43. <div class="layui-input-inline">
  44. <div class="vocation">
  45. <select name="sid">
  46. <option value="0">转码状态</option>
  47. <option value="1"<?php if($sid==1) echo ' selected';?>>未完成</option>
  48. <option value="2"<?php if($sid==2) echo ' selected';?>>已完成</option>
  49. <option value="3"<?php if($sid==3) echo ' selected';?>>已失败</option>
  50. </select>
  51. </div>
  52. </div>
  53. <div class="layui-input-inline">
  54. <button class="layui-btn" type="submit">查询</button>
  55. </div>
  56. </div>
  57. </form>
  58. <style type="text/css">
  59. .layui-table td, .layui-table th{text-align: center;}
  60. .layui-btn+.layui-btn{margin-left: 2px;}
  61. .layui-btn-mini{height: 20px;line-height: 20px;padding: 0 3px;}
  62. .layui-table td, .layui-table th{padding: 9px 5px;}
  63. </style>
  64. <form class="layui-form" action="<?=site_url('video/del')?>" method="post">
  65. <table class="layui-table">
  66. <colgroup>
  67. <col width="40">
  68. <col width="100">
  69. <col>
  70. <col width="100">
  71. <col width="80">
  72. <col width="100">
  73. <col width="180">
  74. <col width="160">
  75. <col width="260">
  76. </colgroup>
  77. <thead>
  78. <tr>
  79. <th>选</th>
  80. <th>ID</th>
  81. <th>名称</th>
  82. <th>分类</th>
  83. <th>时长</th>
  84. <th>原大小</th>
  85. <th>状态</th>
  86. <th>时间</th>
  87. <th>操作</th>
  88. </tr>
  89. </thead>
  90. <tbody>
  91. <?php
  92. if(empty($video)) echo '<tr><td align="center" height="50" colspan="9">没有找到相关记录</td></tr>';
  93. $Mu_Path = substr(Mu_Path,0,2) == './' ? substr(Mu_Path,2) : Mu_Path;
  94. foreach ($video as $row) {
  95. $status = '<font class="zt" color=#1e9fff>等待转码</font>';
  96. if($row->sid==1){
  97. $status = '<font color=green>转码完成</font>';
  98. }
  99. if($row->sid==2) $status = '<font color=red>转码失败</font>';
  100. //获取视频地址,兼容其他平台转移过来的数据
  101. if(!empty($row->path) && substr($row->path,-5) == '.m3u8'){
  102. $parr = explode('/', $row->path);
  103. $len = count($parr)-1;
  104. unset($parr[$len]);
  105. $path = implode('/',array_filter($parr));
  106. $rowpath = $path.'/index.m3u8';
  107. $picpath = $path.'/1.jpg';
  108. $m3u8url = m3u8_link($vodpath);
  109. $picurl = m3u8_link($picpath,'jpg');
  110. }else{
  111. if(!empty($row->pic)){
  112. $m3u8url = m3u8_link($row->m3u8);
  113. $picurl = m3u8_link($row->pic,'jpg');
  114. }else{
  115. $m3u8url = m3u8_link(m3u8_dir($row->id,$row->addtime,'m3u8',1));
  116. $picurl = m3u8_link(m3u8_dir($row->id,$row->addtime,'jpg',1),'jpg');
  117. }
  118. }
  119. $cname = '默认分类';
  120. if($row->cid>0){
  121. $rowc = $this->db->query("select name from ".CS_SqlPrefix."class where id=".$row->cid)->row();
  122. if($rowc) $cname = $rowc->name;
  123. }
  124. $playurl = 'http://'.Web_Url.links('play/'.$row->id);
  125. $tb = Api_On == 1 ? '<a class="layui-btn layui-btn-mini layui-btn-normal" href="javascript:get_tb('.$row->id.');">同步</a>' : '';
  126. echo '
  127. <tr id="row_'.$row->id.'">
  128. <td><input name="id['.$row->id.']" lay-ignore class="xuan" type="checkbox" value="'.$row->id.'" /></td>
  129. <td>'.$row->id.'</td>
  130. <td style="text-align: left;"><a title="'.$row->path.'" class="plink" sid="'.$row->sid.'" href="javascript:layer.msg(\'转码未完成...\');" _href="'.$playurl.'">'.$row->name.'</a></td>
  131. <td>'.$cname.'</td>
  132. <td>'.formattime($row->duration,1).'</td>
  133. <td>'.formatsize($row->size).'</td>
  134. <td id="zm_'.$row->id.'">'.$status.'</td>
  135. <td>'.date('y-m-d H:i:s',$row->addtime).'</td>
  136. <td class="basedb-more">
  137. '.$tb.'
  138. <a class="layui-btn layui-btn-mini copy" data-clipboard-text="'.$playurl.'" href="javascript:;">分享</a>
  139. <a class="layui-btn layui-btn-mini layui-btn-danger copy" data-clipboard-text="'.$m3u8url.'" href="javascript:;">m3u8</a>
  140. <a class="layui-btn layui-btn-mini copy" data-clipboard-text="'.$picurl.'" href="javascript:;">图片</a>
  141. <a class="layui-btn layui-btn-mini layui-btn-normal" href="javascript:get_open(\''.site_url('video/show/'.$row->id).'\',\'视频详细信息展示\',\'80%\',\'450px\');">详情</a>
  142. <a class="layui-btn layui-btn-mini layui-btn-danger" href="javascript:del_one(\''.site_url('video/del').'\','.$row->id.');">删除</a></td>
  143. </tr> ';
  144. }
  145. ?>
  146. </tbody>
  147. </table>
  148. <div class="more_func">
  149. <a class="layui-btn layui-btn-primary layui-btn-small" href="javascript:select_all();"><i class="fa fa-check colorl" ></i>全选/反选</a>
  150. <a class="layui-btn layui-btn-primary layui-btn-small" lay-submit lay-filter="del_pl"><i class="fa fa-close " style="color: red" ></i>删除选中</a>
  151. </div>
  152. </form>
  153. <div id="page">
  154. <div class="data_nums phide"><?=$page_data?></div>
  155. <div class="data_page"><?=$page_list?></div>
  156. </div>
  157. </div>
  158. <script src="<?=Web_Path?>packs/public/js/clipboard.min.js"></script>
  159. <script src="<?=Web_Path?>packs/public/js/common.js?v=1.4"></script>
  160. <script type="text/javascript">
  161. var laydate,tbval=null;
  162. var sid = did = 0;
  163. layui.use('laydate', function(){
  164. laydate = layui.laydate;
  165. getTime('kstime');
  166. getTime('jstime');
  167. });
  168. function getpro(){
  169. $.get("<?=links('video/getpro')?>", function(data) {
  170. if(data.info.xu == 1){
  171. var ml = '<?=Mu_Kbps == ''?'原画':Mu_Kbps?>';
  172. }else{
  173. var ml = '<?=Mu_Kbps2?>';
  174. }
  175. if(data.error==0){
  176. if(data.info.type==0){
  177. $('#zm_'+data.info.vid).html('<font class="zt" color="#9c27b0">《'+ml+'》转码中 '+data.info.pro+'%</font>');
  178. if(data.info.vid != did){
  179. $('#zm_'+did).html('<font color=green>转码完成</font>');
  180. $('#row_'+did+' td .plink').attr('sid','1');
  181. }
  182. }else if(data.info.type==1){
  183. $('#zm_'+data.info.vid).html('<font color=green>《'+ml+'》转码完成</font>');
  184. $('#zm_'+data.info.nxvid).html('<font class="zt" color="#9c27b0">《'+ml+'》转码准备中</font>');
  185. $('#row_'+data.info.vid+' td .plink').attr('sid','1');
  186. getplink();
  187. }else{
  188. $('#zm_'+data.info.vid).html('<font color=red>《'+ml+'》转码失败</font>');
  189. $('#zm_'+data.info.nxvid).html('<font class="zt" color="#9c27b0">《'+ml+'》转码准备中</font>');
  190. }
  191. did = data.info.vid;
  192. }else{
  193. clearTimeout(tbval);
  194. $('.plink').attr('sid','1');
  195. $('.zt').html('<font color=green>转码完成</font>');
  196. getplink();
  197. }
  198. },"json");
  199. }
  200. function getplink(){
  201. $('.plink').each(function(){
  202. var sid = $(this).attr('sid');
  203. var link = $(this).attr('_href');
  204. if(sid == '1'){
  205. $(this).attr('href',link).attr('target','play');
  206. }
  207. });
  208. }
  209. function get_tb(_id){
  210. var index = layer.load(0, {shade: false});
  211. $.get('<?=site_url('video/tongbu')?>?id='+_id, function(data) {
  212. layer.close(index);
  213. if(data == 'ok'){
  214. layer.msg('恭喜你,同步成功!',{icon:1});
  215. }else{
  216. layer.msg(data,{icon:7});
  217. }
  218. },'text');
  219. }
  220. $(document).ready(function(){
  221. if($('.zt').length > 0){
  222. getpro();
  223. tbval = setInterval(function(){getpro();},3000);
  224. }
  225. getplink();
  226. });
  227. $('.copy').on('click', function () {
  228. var clipboard = new Clipboard('.copy');
  229. clipboard.on('success', function(e) {
  230. layer.msg('复制成功');
  231. });
  232. clipboard.on('error', function(e) {
  233. layer.msg('复制失败', {shift: 6});
  234. });
  235. })
  236. </script>
  237. </body>
  238. </html>