【发布时间】:2017-03-03 12:02:26
【问题描述】:
我正在尝试在上传时对视频进行编码,但无法执行我想要的操作。这是我的上传代码。
if(isset($_FILES['video_profile'])){
$errors= array();
$file_name = $_FILES['video_profile']['name'];
$ext = pathinfo($file_name, PATHINFO_EXTENSION);
$newName = time();
$file_size =$_FILES['video_profile']['size'];
$file_tmp =$_FILES['video_profile']['tmp_name'];
$file_type =$_FILES['video_profile']['type'];
$file_ext =strtolower(end(explode('.',$_FILES['video_profile']['name'])));
$expensions = array("webm","mp4", "avi", "mov", "flv", "swf", "mpg", "mpeg", "mpeg-4", "wmv");
if(in_array($file_ext,$expensions)=== false){
$errors[]="extension not allowed, please choose a JPEG or PNG file.";
}
if($file_size > 524288000){ // 2097152 //
$errors[]='File size must be smaller than 500 MB';
}
if(empty($errors)==true){
move_uploaded_file($file_tmp,"upload_data/site_video/".$newName.'_video.'.$ext);
//var_dump($file_tmp,"upload_data/site_video/".$newName.'_video.'.$ext);
echo "<p class=\"success\">You have successfully uploaded video</p>";
Db::query('INSERT INTO site_video SET table_name = "profile_video", user_id = '.$_SESSION['user']['id'].', video_name = "'.$newName.'_video.'.$ext.'" ');
$orderby = Db::insert_id();
Db::query('UPDATE site_video SET orderby = '.$orderby.' WHERE id = '.$orderby);
}
else{
//print_r($errors);
}
}
我正在搜索,发现我需要将此代码放在某个地方,但不知道在哪里以及如何
exec("ffmpeg -i video.avi -ar 22050 -ab 32 -f flv -s 320x240 video.flv");
谁能给我提示!谢谢
【问题讨论】:
-
转换视频需要大量资源和时间。您不想在您的主 Web 服务器上执行此操作,并且您肯定不想在 Web 服务器 PHP 请求中执行此操作。要以理智的方式执行此操作,您将需要一个专门用于此视频转换的服务器,在该服务器上运行单个工作程序(或您希望并行处理的许多编码),这需要要从作业队列转换的视频。编码将在后台异步发生。这一切如何协同工作过于宽泛,无法在此处详细解释。
标签: php mysql video upload encode