设为首页 收藏本站
查看: 896|回复: 0

[经验分享] php解决在线视频转换的问题

[复制链接]

尚未签到

发表于 2017-4-4 11:05:27 | 显示全部楼层 |阅读模式
客户端代码:

<?
error_reporting(E_ALL);
set_time_limit(0);
ob_implicit_flush();
$server = "211.94.190.86";
echo date("Y-m-d H:i:s")." Init ftp connection, server is $server./n";
$ftp = ftp_connect($server);
ftp_login($ftp,"viosevent ","event.vios.com");
ftp_chdir($ftp,"/uploadfile/movie/in/");
//fetch
$lst = ftp_nlist($ftp,".");
foreach ($lst as $f){
if(strtolower(substr($f,strlen($f)-5,5))==".flag"){
$f = str_ireplace(".flag","",$f);
echo date("Y-m-d H:i:s")." New file discovered: ./in/$f./n";
ftp_get($ftp,".//in//".$f,"./".$f,FTP_BINARY);
echo date("Y-m-d H:i:s")." Placing FLAG file:.//in//$f.flag./n";
file_put_contents(".//in//$f.flag"," ");
echo date("Y-m-d H:i:s")." Removing the remote flag file. .//in//".$f.".flag.../n";
ftp_delete($ftp,"./".$f.".flag");
ftp_delete($ftp,"./".$f."");
}

ftp_raw($ftp,"noop");
}
//send
$workdir = dir(".//out//");
$entrys = array();
while (false !== ($entry = $workdir->read())) {
$entrys[]=$entry;
}
$workdir->close();
foreach ($entrys as $entry){
switch ($entry){
case ".":
case "..":
break;
default:
// echo $entry;
$pinfo = pathinfo($entry);
if(isset($pinfo['extension']) and $pinfo['extension']=="flv"){
echo date("Y-m-d H:i:s")." Sending .//out//{$pinfo["basename"]}...";
@ftp_put($ftp,"/uploadfile/movie/out/{$pinfo["basename"]}",".//out//{$pinfo["basename"]}",FTP_BINARY);
echo date("Y-m-d H:i:s")." Removeing .//out//{$pinfo["basename"]}...";
unlink(".//out//{$pinfo["basename"]}");
}
break;
}
ftp_raw($ftp,"noop");
}

ftp_close($ftp);
echo date("Y-m-d H:i:s")." Job finished, closing...";
?>

服务器端代码:
<?
error_reporting(E_ALL);
set_time_limit(0);
ob_implicit_flush();

$path_src = ".//in//";
$path_dest = ".//out//";
$path_tmp = ".//tmp//";
/*
$default_video = array(
"filename"=>"file.avi",
"ext"=>"avi",
"width"=>"320",
"height"=>"240",
""=>"",
""=>"",
""=>"",
""=>"",
""=>"",
""=>"",
""=>"",
);
*/
if(file_exists("flvsrv.cfg.php")){
include("flvsrv.cfg.php");
}

while (true) {

$workdir = dir($path_src);
while (false !== ($entry = $workdir->read())) {
switch ($entry){
case ".":
case "..":
break;
default:
$pinfo = pathinfo($path_src.$entry);
if($pinfo['extension']=="flag"){
$fn = str_replace(".flag","",$entry);
$destfn = substr($fn,0,strripos($fn,"."));
//$video_file = unserialize(file_get_contents($path_src.$entry));
echo date("Y-m-d H:i:s")." .//me//mencoder {$path_src}{$fn} -o {$path_tmp}{$destfn}.flv -of lavf -oac mp3lame -lameopts abr:br=56 -srate 22050 -ovc lavc -lavcopts vcodec=flv:vbitrate=500:mbd=2:mv0:trell:v4mv:cbp:last_pred=3 -lavfopts i_certify_that_my_video_stream_does_not_use_b_frames";
exec(".//me//mencoder {$path_src}{$fn} -o {$path_tmp}{$destfn}.flv -of lavf -oac mp3lame -lameopts abr:br=56 -srate 22050 -ovc lavc -lavcopts vcodec=flv:vbitrate=500:mbd=2:mv0:trell:v4mv:cbp:last_pred=3 -lavfopts i_certify_that_my_video_stream_does_not_use_b_frames");
echo date("Y-m-d H:i:s")." Deleting $path_src$entry...";
echo date("Y-m-d H:i:s")." Deleting $path_src$fn...";
unlink($path_src.$entry);
unlink($path_src.$fn);
echo date("Y-m-d H:i:s")." Moving {$path_tmp}{$destfn}.flv to {$path_dest}{$destfn}.flv...";
rename("{$path_tmp}{$destfn}.flv","{$path_dest}{$destfn}.flv");
break;
}
break;
}
}
$workdir->close();

}
?>

说明:
1. 客户端登陆至FTP服务器以后,将当前的目录切换为指定的目录;
2. 客户端在FTP下载目录中寻找.flag形式的文件,删除文件末尾的.flag后缀。然后从FTP上下载视频文件(比如名字为a.avi),并且写一空文件到目录中,名字为(a.avi.flag)。
3. 如果客户端在下载目录中寻找到以.flv后缀的文件,则直接上传到服务器端去。并清空上传目录。
4. 同时在server端也有一个进程在监视这个上传目录,当发现名字后缀位.flag的文件时(比如a.avi.flag),会去找a.avi这个文件,并且调用开源的mplayer 中的 mencode 转换格式将a.avi转换成a.flv,然后传到server上面。
5. Mencode的参数很复杂,详情请看mplayer手册。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-359993-1-1.html 上篇帖子: php多文件上传类(含示例) 下篇帖子: 为什么说PHP的开发效率就会高
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表