mirror of
https://github.com/Piwigo/Piwigo.git
synced 2025-04-27 11:49:56 +03:00
In addition, the time from which the poster is generated is now always correct and an attempt is performed with avconv if FFmpeg is not installed.
This commit is contained in:
parent
0001c6834d
commit
9d3ee3c85d
1 changed files with 38 additions and 7 deletions
|
@ -639,16 +639,47 @@ function upload_file_video($representative_ext, $file_path)
|
|||
|
||||
prepare_directory(dirname($representative_file_path));
|
||||
|
||||
$second = 1;
|
||||
// Get duration of video and determine time of poster
|
||||
exec('ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1'." '$file_path'",$O,$S);
|
||||
if(!empty($O[0]))
|
||||
{
|
||||
$second = min(floor($O[0]*10)/10, 2);
|
||||
}
|
||||
else
|
||||
{
|
||||
$second = 0; // Safest position of the poster
|
||||
}
|
||||
$logger->info(__FUNCTION__.', Poster at '.$second.'s');
|
||||
|
||||
// Generate poster
|
||||
// See https://trac.ffmpeg.org/wiki/Seeking
|
||||
$ffmpeg = $conf['ffmpeg_dir'].'ffmpeg';
|
||||
$ffmpeg.= ' -i "'.$file_path.'"';
|
||||
$ffmpeg.= ' -an -ss '.$second;
|
||||
$ffmpeg.= ' -t 1 -r 1 -y -vcodec mjpeg -f mjpeg';
|
||||
$ffmpeg.= ' "'.$representative_file_path.'"';
|
||||
$ffmpeg.= ' -ss '.$second; // Fast seeking
|
||||
$ffmpeg.= ' -i "'.$file_path.'"'; // Video file
|
||||
$ffmpeg.= ' -frames:v 1'; // Extract one frame
|
||||
$ffmpeg.= ' "'.$representative_file_path.'"'; // Output file
|
||||
|
||||
@exec($ffmpeg);
|
||||
@exec($ffmpeg.' 2>&1',$FO,$FS);
|
||||
if(!empty($FO[0]))
|
||||
{
|
||||
$logger->debug(__FUNCTION__.', Tried '.$ffmpeg);
|
||||
$logger->debug($FO[0]);
|
||||
}
|
||||
|
||||
// Did we generate the file ?
|
||||
if (!file_exists($representative_file_path))
|
||||
{
|
||||
// Let's try with avconv if ffmpeg unavailable
|
||||
$avconv = str_replace('ffmpeg', 'avconv', $ffmpeg);
|
||||
@exec($avconv.' 2>&1',$AO,$AS);
|
||||
if(!empty($AO[0]))
|
||||
{
|
||||
$logger->debug(__FUNCTION__.', Tried '.$avconv);
|
||||
$logger->debug($AO[0]);
|
||||
}
|
||||
}
|
||||
|
||||
// Did we finally generate the file ?
|
||||
if (!file_exists($representative_file_path))
|
||||
{
|
||||
return null;
|
||||
|
@ -832,4 +863,4 @@ function ready_for_upload_message()
|
|||
|
||||
return null;
|
||||
}
|
||||
?>
|
||||
?>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue