From 57df02b30955a030f2f8bf062e963ea3be7ac2f4 Mon Sep 17 00:00:00 2001 From: Markerov Date: Sat, 29 Nov 2014 01:30:18 +0800 Subject: [PATCH 1/2] initial commit generate the thumbnail from the middle of the video --- inc/lib/webm/ffmpeg.php | 5 +++-- inc/lib/webm/posthandler.php | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/inc/lib/webm/ffmpeg.php b/inc/lib/webm/ffmpeg.php index 8e4076d1..405dbdf1 100644 --- a/inc/lib/webm/ffmpeg.php +++ b/inc/lib/webm/ffmpeg.php @@ -19,6 +19,7 @@ function get_webm_info($filename) { if(empty($webminfo['error'])) { $webminfo['width'] = $ffprobe_out['streams'][0]['width']; $webminfo['height'] = $ffprobe_out['streams'][0]['height']; + $webminfo['duration'] = $ffprobe_out['format']['duration']; } return $webminfo; @@ -52,7 +53,7 @@ function is_valid_webm($ffprobe_out) { return array('code' => 4, 'msg' => $config['error']['webmtoolong']); } -function make_webm_thumbnail($filename, $thumbnail, $width, $height) { +function make_webm_thumbnail($filename, $thumbnail, $width, $height, $duration) { global $board, $config; $filename = escapeshellarg($filename); @@ -62,7 +63,7 @@ function make_webm_thumbnail($filename, $thumbnail, $width, $height) { $ret = 0; $ffmpeg_out = array(); - exec("$ffmpeg -strict -2 -i $filename -v quiet -ss 00:00:00 -an -vframes 1 -f mjpeg -vf scale=$width:$height $thumbnail 2>&1", $ffmpeg_out, $ret); + exec("$ffmpeg -strict -2 -ss " . $duration / 2 . " -i $filename -v quiet -an -vframes 1 -f mjpeg -vf scale=$width:$height $thumbnail 2>&1", $ffmpeg_out, $ret); return $ret; } diff --git a/inc/lib/webm/posthandler.php b/inc/lib/webm/posthandler.php index 18b4186f..2889cd9f 100644 --- a/inc/lib/webm/posthandler.php +++ b/inc/lib/webm/posthandler.php @@ -21,7 +21,7 @@ function postHandler($post) { $file = set_thumbnail_dimensions($post, $file); $tn_path = $board['dir'] . $config['dir']['thumb'] . $file->file_id . '.jpg'; - if(0 == make_webm_thumbnail($file->file_path, $tn_path, $file->thumbwidth, $file->thumbheight)) { + if(0 == make_webm_thumbnail($file->file_path, $tn_path, $file->thumbwidth, $file->thumbheight, $webminfo['duration'])) { $file->thumb = $file->file_id . '.jpg'; } else { From 7011fdf9c27b7ce42cd3d77e1d2992a2b2b1e2eb Mon Sep 17 00:00:00 2001 From: Markerov Date: Wed, 7 Jan 2015 03:18:24 +0800 Subject: [PATCH 2/2] round starting time down to nearest second --- inc/lib/webm/ffmpeg.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/inc/lib/webm/ffmpeg.php b/inc/lib/webm/ffmpeg.php index 405dbdf1..485e4702 100644 --- a/inc/lib/webm/ffmpeg.php +++ b/inc/lib/webm/ffmpeg.php @@ -63,7 +63,7 @@ function make_webm_thumbnail($filename, $thumbnail, $width, $height, $duration) $ret = 0; $ffmpeg_out = array(); - exec("$ffmpeg -strict -2 -ss " . $duration / 2 . " -i $filename -v quiet -an -vframes 1 -f mjpeg -vf scale=$width:$height $thumbnail 2>&1", $ffmpeg_out, $ret); + exec("$ffmpeg -strict -2 -ss " . floor($duration / 2) . " -i $filename -v quiet -an -vframes 1 -f mjpeg -vf scale=$width:$height $thumbnail 2>&1", $ffmpeg_out, $ret); return $ret; }