早上好,
我将尽我所能为所有关于使用 shell_exec 从 AJAX 调用的文件运行 FFMPEG 提出一个“深思熟虑”和“有用”的问题。首先,我将从列出我当前的代码开始。
AJAX 脚本
<script>
var xmlhttp;
if (window.XMLHttpRequest){// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}else{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function(){
if (xmlhttp.readyState==4 && xmlhttp.status==200){
//Do something
}
}
xmlhttp.open("GET","video_convert.php",true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send(id=<?php echo $video_upload_result; ?>);
</script>
PHP 代码
$destination = "files/videos/";
$ffmpeg = '/ffmpeg/ffmpeg';
$videoid = mysql_clean($_GET['id']);
$sql = "SELECT file_name FROM cb_video WHERE videoid = '$videoid' ";
$result = mysql_query($sql);
$row = mysql_fetch_assoc($result);
$file_old = glob('files/videos/'.$file_name.'.*');
shell_exec($ffmpeg." -i '/var/www/html/".$file_old[0]."' -ar 44100 /var/www/html/".$destination.$file_name.".flv");
FFMPEG 已安装并正常工作,因为我在网站的其他地方使用过它并尝试使用 PuTTY 进行文件转换。我能够运行由 AJAX 调用的 PHP 文件,因为我在此站点上的单独实例中完成了它。我唯一能想到的是 shell_exec 没有正常运行,我在其他地方使用过,因为它位于一个由 ajax 调用的单独文件中,否则它会过早关闭。我还在一个主文件中测试了这段代码,它可以正常工作,直到我尝试在其中调用单独的文件。
所以,我的问题是这段代码真的可以工作吗?如果可以,我应该采取哪些步骤来让它工作?
此外,如果我在结束我的问题之前有机会捍卫或改写它们以适当地适应这个委员会的高标准问题,如果我以任何方式失败了,我将不胜感激。
谢谢你。