Php 上传视频时如何创建缩略图?
上传视频文件时,我正在使用Php 上传视频时如何创建缩略图?,php,video,upload,ffmpeg,Php,Video,Upload,Ffmpeg,上传视频文件时,我正在使用ffmpeg创建视频缩略图。我已经创建了这个upload.php文件,但它不工作。它成功上载了一个mp4文件,但未能创建缩略图 if(isset($_FILES["myfile"]) && $_FILES["myfile"]["error"]== UPLOAD_ERR_OK) { $UploadDirectory = 'uploads/'; if (!isset($_SERVER['HTTP_X_REQUESTED_WITH'])
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?');
}
您必须使用函数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?');
}
试试这个。首先安装ffmpeg-php()。我相信您已经安装了它
然后你可以使用这个简单的代码:你可以根据你的变量更新代码
<?php
$frame = 10;
$movie = 'test.mp4';
$thumbnail = 'thumbnail.png';
$mov = new ffmpeg_movie($movie);
$frame = $mov->getFrame($frame);
if ($frame) {
$gd_image = $frame->toGDImage();
if ($gd_image) {
imagepng($gd_image, $thumbnail);
imagedestroy($gd_image);
echo '<img src="'.$thumbnail.'">';
}
}
?>
试试这个。首先安装ffmpeg-php()。我相信您已经安装了它
然后你可以使用这个简单的代码:你可以根据你的变量更新代码
<?php
$frame = 10;
$movie = 'test.mp4';
$thumbnail = 'thumbnail.png';
$mov = new ffmpeg_movie($movie);
$frame = $mov->getFrame($frame);
if ($frame) {
$gd_image = $frame->toGDImage();
if ($gd_image) {
imagepng($gd_image, $thumbnail);
imagedestroy($gd_image);
echo '<img src="'.$thumbnail.'">';
}
}
?>
可能重复的可能重复的可能重复的为什么要尝试此操作?请解释您的答案,以便网站的其他用途更容易理解。感谢您的快速回答,但答案相同。不起作用:(为什么要尝试此方法?请解释您的答案,以便网站的其他用途更容易理解。感谢您的快速回答,但答案相同。不起作用:(