gpt4 book ai didi

php - ffmpeg-php 创建视频缩略图

转载 作者:可可西里 更新时间:2023-11-01 13:11:41 26 4
gpt4 key购买 nike

我正在尝试使用此脚本创建使用 ffmpeg 的视频缩略图。起初我使用了 phpinfo();,我发现我的服务器上安装了 ffmpeg。

然后我将ffmpeg-php复制到我的服务器上并运行测试文件

我知道我的服务器上有很多功能正在运行

我得到了这样的输出

输出:-

Functions available in /usr/lib/php/extensions/no-debug-non-zts-20060613/ffmpeg.so extension:

Methods available in class ffmpeg_movie:
__construct
getduration
getframecount
getframerate
getfilename
getcomment
gettitle
getauthor
getartist
getcopyright
getalbum
getgenre
getyear
gettracknumber
getframewidth
getframeheight
getframenumber
getpixelformat
getbitrate
hasaudio
hasvideo
getnextkeyframe
getframe
getvideocodec
getaudiocodec
getvideostreamid
getaudiostreamid
getaudiochannels
getaudiosamplerate
getaudiobitrate
getvideobitrate
getpixelaspectratio
getpixelaspectratio
getvideobitrate
getaudiobitrate
getaudiosamplerate
getaudiochannels
getaudiostreamid
getvideostreamid
getaudiocodec
getvideocodec
getframe
getnextkeyframe
hasvideo
hasaudio
getbitrate
getpixelformat
getframenumber
getframeheight
getframewidth
gettracknumber
getyear
getgenre
getalbum
getcopyright
getartist
getauthor
gettitle
getcomment
getfilename
getframerate
getframecount
getduration
__construct

我写了这段代码并尝试了任何可能的路径来分配 $ffmpeg;

<?php

$thumb_stdout;
$retval=0;
$ffmpeg = '/home/lib/ffmpeg';

// change "demo.mpg" to your mpg file name!
$video = dirname(__FILE__) . 'demo.mpg';

// change "demo.jpg" to whichever name you like or don't
// for this example, the name of the output jpg file does not matter
$image = dirname(__FILE__) . 'demo.jpg';

$second = 1;

$cmd = "$ffmpeg -i $video 2>&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));
}

//$cmd = "$ffmpeg -i $video -deinterlace -an -ss $second -t 00:00:01 -r 1 -y -vcodec mjpeg -f mjpeg $image 2>&1";
$cmd = "$ffmpeg -i $video -r 1 -ss 00:00:05 -t 00:00:01 -s 250x250 -f image2 $image";
echo $cmd;
exec($cmd);
//$return = '$cmd';

echo '<br>done!';
?>

最佳答案

感谢 Anubhaw,我终于得到了代码。您的链接帮助很大。试试这个代码。

            //thumb path should be added in the below code
//test for thumb
$dir_img='uploads/';
$mediapath='123.jpg';
$file_thumb=create_movie_thumb($dir_img.$mediapath,$mediapath,$mediaid);

$name_file=explode(".",$mediapath);
$imgname="thumb_".$name_file[0].".jpg";

/*
Function to create video thumbnail using ffmpeg
*/
function create_movie_thumb($src_file,$mediapath,$mediaid)
{
global $CONFIG, $ERROR;

$CONFIG['ffmpeg_path'] = '/usr/local/bin/'; // Change the path according to your server.
$dir_img='uploads/';
$CONFIG['fullpath'] = $dir_img."thumbs/";

$src_file = $src_file;
$name_file=explode(".",$mediapath);
$imgname="thumb_".$name_file[0].".jpg";
$dest_file = $CONFIG['fullpath'].$imgname;

if (preg_match("#[A-Z]:|\\\\#Ai", __FILE__)) {
// get the basedir, remove '/include'
$cur_dir = substr(dirname(__FILE__), 0, -8);
$src_file = '"' . $cur_dir . '\\' . strtr($src_file, '/', '\\') . '"';
$ff_dest_file = '"' . $cur_dir . '\\' . strtr($dest_file, '/', '\\') . '"';
} else {
$src_file = escapeshellarg($src_file);
$ff_dest_file = escapeshellarg($dest_file);
}

$output = array();

if (eregi("win",$_ENV['OS'])) {
// Command to create video thumb
$cmd = "\"".str_replace("\\","/", $CONFIG['ffmpeg_path'])."ffmpeg\" -i ".str_replace("\\","/" ,$src_file )." -an -ss 00:00:05 -r 1 -vframes 1 -y ".str_replace("\\","/" ,$ff_dest_file);
exec ("\"$cmd\"", $output, $retval);

} else {
// Command to create video thumb
$cmd = "{$CONFIG['ffmpeg_path']}ffmpeg -i $src_file -an -ss 00:00:05 -r 1 -vframes 1 -y $ff_dest_file";
exec ($cmd, $output, $retval);

}


if ($retval) {
$ERROR = "Error executing FFmpeg - Return value: $retval";
if ($CONFIG['debug_mode']) {
// Re-execute the command with the backtick operator in order to get all outputs
// will not work if safe mode is enabled
$output = `$cmd 2>&1`;
$ERROR .= "<br /><br /><div align=\"left\">Cmd line : <br /><span style=\"font-size:120%\">" . nl2br(htmlspecialchars($cmd)) . "</span></div>";
$ERROR .= "<br /><br /><div align=\"left\">The ffmpeg program said:<br /><span style=\"font-size:120%\">";
$ERROR .= nl2br(htmlspecialchars($output));
$ERROR .= "</span></div>";
}
@unlink($dest_file);
return false;
}

$return = $dest_file;
//@chmod($return, octdec($CONFIG['default_file_mode'])); //silence the output in case chmod is disabled
return $return;
}

享受编码的乐趣

关于,

瓦西姆

关于php - ffmpeg-php 创建视频缩略图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3911797/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com