我正在使用 ffmpeg
在上传视频文件时创建视频缩略图。我已经创建了这个 upload.php 文件,但它不起作用。它成功上传了 mp4
文件但无法创建缩略图。
if(isset($_FILES["myfile"]) && $_FILES["myfile"]["error"]== UPLOAD_ERR_OK)
{
$UploadDirectory = 'uploads/';
if (!isset($_SERVER['HTTP_X_REQUESTED_WITH'])){
die();
}
$video = $UploadDirectory . escapeshellcmd($_FILES['myfile']['tmp_name']);
$cmd = "ffmpeg -i $video 2>&1";
$second = 1;
if (preg_match('/Duration: ((\d+):(\d+):(\d+))/s', `$cmd`, $time)) {
$total = ($time[2] * 3600) + ($time[3] * 60) + $time[4];
$second = rand(1, ($total - 1));
}
$image = 'thumbs/random_name.jpg';
$cmd = "ffmpeg -i $video -deinterlace -an -ss $second -t 00:00:01 -r 1 -y -vcodec mjpeg -f mjpeg $image 2>&1";
$do = `$cmd`;
$File_Name = strtolower($_FILES['myfile']['name']);
$File_Ext = substr($File_Name, strrpos($File_Name, '.')); //get file extention
$Random_Number = rand(0, 9999999999); //Random number to be added to name.
$NewFileName = $Random_Number.$File_Ext; //new file name
if(!is_array($_FILES["myfile"]["name"])) //single file
{
move_uploaded_file($_FILES["myfile"]["tmp_name"],$UploadDirectory.$NewFileName);
$ret[]= $NewFileName;
}
echo json_encode($ret);
}
else
{
die('Something wrong with upload! Is "upload_max_filesize" set correctly?');
}
最佳答案
你必须使用函数exec();
要在 php 中使用命令,我添加了 echo exec($cmd);
代码里面
尝试这个:
if(isset($_FILES["myfile"]) && $_FILES["myfile"]["error"]== UPLOAD_ERR_OK)
{
$UploadDirectory = 'uploads/';
if (!isset($_SERVER['HTTP_X_REQUESTED_WITH'])){
die();
}
$video = $UploadDirectory . escapeshellcmd($_FILES['myfile']['tmp_name']);
$cmd = "ffmpeg -i $video 2>&1";
$second = 1;
if (preg_match('/Duration: ((\d+):(\d+):(\d+))/s', `$cmd`, $time)) {
$total = ($time[2] * 3600) + ($time[3] * 60) + $time[4];
$second = rand(1, ($total - 1));
}
$image = 'thumbs/random_name.jpg';
$cmd = "ffmpeg -itsoffset -0 -i uploads/" . $_FILES["myfile"]["name"] . " -vcodec mjpeg -vframes 0 -an -f rawvideo -s 200x200 " . $image;
echo exec($cmd);
$do = `$cmd`;
$File_Name = strtolower($_FILES['myfile']['name']);
$File_Ext = substr($File_Name, strrpos($File_Name, '.')); //get file extention
$Random_Number = rand(0, 9999999999); //Random number to be added to name.
$NewFileName = $Random_Number.$File_Ext; //new file name
if(!is_array($_FILES["myfile"]["name"])) //single file
{
move_uploaded_file($_FILES["myfile"]["tmp_name"],$UploadDirectory.$NewFileName);
$ret[]= $NewFileName;
}
echo json_encode($ret);
}
else
{
die('Something wrong with upload! Is "upload_max_filesize" set correctly?');
}
关于php - 如何在视频上传时创建缩略图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34384790/