Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 上传视频时如何创建缩略图?_Php_Video_Upload_Ffmpeg - Fatal编程技术网

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.'">';
    }
}
?>


可能重复的可能重复的可能重复的为什么要尝试此操作?请解释您的答案,以便网站的其他用途更容易理解。感谢您的快速回答,但答案相同。不起作用:(为什么要尝试此方法?请解释您的答案,以便网站的其他用途更容易理解。感谢您的快速回答,但答案相同。不起作用:(