Files
Pichome/dzz/xgplayer/index.php

142 lines
5.8 KiB
PHP
Raw Normal View History

2022-06-25 14:48:20 +08:00
<?php
2021-12-09 21:00:09 +08:00
if($_GET['operation']=='progress'){
2022-06-25 14:48:20 +08:00
$id=intval($_GET['id']);
$ff=C::t('video_record')->fetch($id);
if($ff['id']){
exit(json_encode($ff));
}else{
exit(json_encode(array('error'=>true)));
}
2021-12-09 21:00:09 +08:00
}elseif($_GET['operation']=='retry'){
2022-06-25 14:48:20 +08:00
$id=intval($_GET['id']);
$ff=C::t('video_record')->fetch($id);
C::t('video_record')->update($id,array('status'=>0));
exit(json_encode($ff));
2021-12-09 21:00:09 +08:00
}elseif($_GET['path']){
2022-05-02 22:31:35 +08:00
if(!$rid = dzzdecode($_GET['path'],'',0)){
exit('Access Denied');
}
2022-06-25 14:48:20 +08:00
global $_G;
2024-02-06 00:03:33 +08:00
//$rid = dzzdecode($_GET['path'],'',0);
2024-01-31 01:00:33 +08:00
if(strpos($rid, 'attach::') === 0){
$resourcesdata = C::t('attachment')->fetch(intval(str_replace('attach::', '', $path)));
2024-02-06 13:58:58 +08:00
$resourcesdata['iswebsitefile'] = 1;
2022-06-25 14:48:20 +08:00
}else{
2024-01-31 01:00:33 +08:00
$resourcesdata = C::t('pichome_resources')->fetch_data_by_rid($rid);
}
2022-06-25 14:48:20 +08:00
2024-01-31 01:00:33 +08:00
$_GET['ext'] = strtolower($resourcesdata['ext']);
$videosatus = 0;
$cloudvideostatus = 0;
//获取音视频转换开启状态
if($resourcesdata['remoteid'] && $resourcesdata['remoteid']!=1){
$clouddata = DB::fetch_first("select * from %t where id = %d",array('connect_storage',$resourcesdata['remoteid']));
$videostatus = $cloudvideostatus = $clouddata['mediastatus'];
2022-06-25 14:48:20 +08:00
}
2024-01-31 01:00:33 +08:00
if(!$videostatus){
$app = C::t('app_market')->fetch_by_identifier('ffmpeg', 'dzz');
$appextra = unserialize($app['extra']);
$videostatus = $appextra['status'];
2022-06-25 14:48:20 +08:00
}
2024-02-06 00:03:33 +08:00
$pexts= getglobal('config/pichomeplayermediaext') ? explode(',', getglobal('config/pichomeplayermediaext')):array('mov','mp3','mp4','webm','ogv','ogg','wav','m3u8','hls','mpg','mpeg');
if(!$videostatus && !in_array($resourcesdata['ext'],$pexts)){
2024-01-31 01:00:33 +08:00
$msg = '该媒体文件不能直接播放,且当前未安装支持转码应用或未开启转码支持';
include template('progress');
exit();
2022-06-25 14:48:20 +08:00
}
2024-02-06 00:03:33 +08:00
if(!in_array($resourcesdata['ext'],$pexts)){
if($resourcesdata['rid']){
$ff=C::t('video_record')->fetch_by_rid($resourcesdata['rid']);
}else{
$ff=C::t('video_record')->fetch_by_aid($resourcesdata['aid']);
}
2024-01-31 01:00:33 +08:00
//如果没有转码记录生成记录
2022-06-25 14:48:20 +08:00
if(!$ff){
2024-02-06 00:03:33 +08:00
if ('audio' == getTypeByExt($resourcesdata['ext'])) {
$ext = 'mp3';
} else {
$ext = 'mp4';
}
$setarr = ['rid' => $resourcesdata['rid'], 'dateline' => TIMESTAMP,'format'=>$ext,'videoquality'=>1];
2024-01-31 01:00:33 +08:00
$setarr['aid']= $resourcesdata['aid'] ? $resourcesdata['aid']:0;
//如果是云存储状态,当前默认腾讯云
if($cloudvideostatus){
$setarr['ctype'] = 2;
$ff = C::t('video_record')->insert_data($setarr);
if($ff['status'] == 0){
dfsockopen($_G['localurl'] . 'index.php?mod=qcos&op=convert&id='.$ff['id'], 0, '', '', false, '', 1);
}
}else{
$setarr['ctype'] = 1;
$ff = C::t('video_record')->insert_data($setarr);
if($ff['status'] == 0){
dfsockopen($_G['localurl'] . 'index.php?mod=ffmpeg&op=convert&id='.$ff['id'], 0, '', '', false, '', 1);
}
}
2022-06-25 14:48:20 +08:00
}
switch($ff['status']){
case 2:
$_GET['ext']=$ff['format'];
2024-01-31 01:00:33 +08:00
$bz = io_remote::getBzByRemoteid($ff['remoteid']);
$src=IO::getFileuri($bz.$ff['path']);
2022-06-25 14:48:20 +08:00
break;
case 0:
if($videostatus) {
2024-01-31 01:00:33 +08:00
if($ff['ctype'] == 1){
2022-06-25 14:48:20 +08:00
dfsockopen($_G['localurl'] . 'index.php?mod=ffmpeg&op=convert&id='.$ff['id'], 0, '', '', false, '', 1);
}elseif($ff['ctype'] == 2){
dfsockopen($_G['localurl'] . 'index.php?mod=qcos&op=convert&id='.$ff['id'], 0, '', '', false, '', 1);
2024-01-31 01:00:33 +08:00
}else{
dfsockopen($_G['localurl'] . 'misc.php?mod=convert&id='.$ff['id'], 0, '', '', false, '', 1);
2022-06-25 14:48:20 +08:00
}
$ff['status'] = 1;
}
2024-01-31 01:00:33 +08:00
else $msg = '该媒体文件不能直接播放,且当前未安装支持转码应用或未开启转码支持,如需播放请联系管理员安装或开启对应应用';
2022-06-25 14:48:20 +08:00
include template('progress');
exit();
break;
case 1:
if($videostatus) {
2024-01-31 01:00:33 +08:00
if($ff['ctype'] == 1){
2022-06-25 14:48:20 +08:00
dfsockopen($_G['localurl'] . 'index.php?mod=ffmpeg&op=convert&id='.$ff['id'], 0, '', '', false, '', 1);
}elseif($ff['ctype'] == 2){
dfsockopen($_G['localurl'] . 'index.php?mod=pichome&op=getConvertStatus', 0, '', '', false, '', 1);
}
}
include template('progress');
exit();
break;
case -1:
include template('progress');
exit();
break;
}
}else{
2024-02-06 13:58:58 +08:00
if(!$resourcesdata['iswebsitefile'] && $resourcesdata['bz'] == 'dzz::'){
$src = getglobal('siteurl') . 'index.php?mod=io&op=getStream&path=' . dzzencode($rid.'_3', '', 14400, 0);
}else{
$src=IO::getFileuri($resourcesdata['path']);
}
2022-06-25 14:48:20 +08:00
}
2021-12-09 21:00:09 +08:00
}elseif($_GET['src']){
2022-06-25 14:48:20 +08:00
$ismobile = helper_browser::ismobile();
$src = urldecode($_GET['src']);
2021-12-09 21:00:09 +08:00
//$src = str_replace('+',' ',urlencode($src));
if(!isset($_GET['ext'])){
$filedirpathinfo = pathinfo($src);
$filedirextensionarr = explode('?', $filedirpathinfo['extension']);
$_GET['ext'] = strtolower($filedirextensionarr[0]);
}
}
2021-09-17 10:56:51 +08:00
include template('main');