[英]Convert video to MP4 with php
here is my problem : On my website I want to allow users to upload any type of video. 这是我的问题:我想在我的网站上允许用户上传任何类型的视频。 But with the HTML5 tag only .mp4 video can be used. 但是使用HTML5标签只能使用.mp4视频。 So I want to convert any type of video submit by the user to MP4 then add the path to the databse. 因此,我想将用户提交的任何类型的视频转换为MP4,然后将路径添加到数据库。
I've read something about FFmpeg but I can't figure out how to use it. 我已经读过一些关于FFmpeg的内容,但是我不知道该如何使用。 I tried to use shell_exec("ffmpeg -i ".$vid." -vcodec libx264 -crf 20 out.mp4 2>&1") without success. 我尝试使用shell_exec(“ ffmpeg -i”。$ vid。“ -vcodec libx264 -crf 20 out.mp4 2>&1”)失败。
The html HTML
<form method="post" enctype="multipart/form-data" name="form" action="post.php"> <input type="file" name="media-vid" class=" file_multi_video" accept="video/*"> </form>
The php script: php脚本:
if(file_exists($_FILES['media-vid']['tmp_name']) && is_uploaded_file($_FILES['media-vid']['tmp_name'])) { $targetvid = md5(time()); $target_dirvid = "videos/"; $target_filevid = $targetvid.basename($_FILES["media-vid"]["name"]); $uploadOk = 1; $videotype = pathinfo($target_filevid,PATHINFO_EXTENSION); if ($_FILES["media-vid"]["size"] > 500000000) { $uploadOk = 0; echo "Sorry, your file is too large."; } // Check if $uploadOk is set to 0 by an error if ($uploadOk == 0) { echo "Sorry, your video was not uploaded."; // if everything is ok, try to upload file } else { $target_filevid = strtr($target_filevid, 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy'); $target_filevid = preg_replace('/([^.a-z0-9]+)/i', '_', $target_filevid); if (!move_uploaded_file($_FILES["media-vid"]["tmp_name"], $target_dirvid. $target_filevid)) { echo "Sorry, there was an error uploading your file. Please retry."; }else{ $vid= $target_dirvid.$target_filevid; shell_exec("ffmpeg -i ".$vid." -vcodec libx264 -crf 20 out.mp4 2>&1"); } } }
Here is how I would do it: 这是我的方法:
Try out this code! 试试这个代码! ( Tested and works fine ) (经过测试,工作正常)
<form method="post" enctype="multipart/form-data" name="form"> <input type="file" name="media-vid" class=" file_multi_video" accept="video/*"> <input type="submit" name="submit" value="upload"/> </form>
<?
if (isset($_POST['submit'])) {
if (file_exists($_FILES['media-vid']['tmp_name']) && is_uploaded_file($_FILES['media-vid']['tmp_name'])) {
$targetvid = md5(time());
$target_dirvid = "videos/";
$target_filevid = $targetvid . basename($_FILES["media-vid"]["name"]);
$uploadOk = 0;
$videotype = pathinfo($target_filevid, PATHINFO_EXTENSION);
//these are the valid video formats that can be uploaded and
//they will all be converted to .mp4
$video_formats = array(
"mpeg",
"mp4",
"mov",
"wav",
"avi",
"dat",
"flv",
"3gp"
);
foreach ($video_formats as $valid_video_format) {
//You can use in_array and it is better
if (preg_match("/$videotype/i", $valid_video_format)) {
$target_filevid = $targetvid . basename($_FILES["media-vid"] . ".mp4");
$uploadOk = 1;
break;
} else {
//if it is an image or another file format it is not accepted
$format_error = "Invalid Video Format!";
}
}
if ($_FILES["media-vid"]["size"] > 500000000) {
$uploadOk = 0;
echo "Sorry, your file is too large.";
}
// Check if $uploadOk is set to 0 by an error
if ($uploadOk == 0 && isset($format_error)) {
echo $message;
// if everything is ok, try to upload file
} else if ($uploadOk == 0) {
echo "Sorry, your video was not uploaded.";
}
else {
$target_filevid = strtr($target_filevid, 'ÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðòóôõöùúûüýÿ', 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
$target_filevid = preg_replace('/([^.a-z0-9]+)/i', '_', $target_filevid);
if (!move_uploaded_file($_FILES["media-vid"]["tmp_name"], $target_dirvid . $target_filevid)) {
echo "Sorry, there was an error uploading your file. Please retry.";
} else {
$vid = $target_dirvid . $target_filevid;
}
}
}
}
?>
Test it and let me know how it goes. 测试一下,让我知道如何进行。 If you have any other questions or need anything else, please do not hesitate to ask. 如果您还有其他问题或需要其他任何内容,请随时提出。 I am always here to help and I would like you to have this file fully coded. 我一直在这里为您提供帮助,希望您对此文件进行完整编码。 Good luck bro! 祝你好运,兄弟!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.