杜郎俊赏

建站之视频处理

借助ffmpeg扩展处理视频。包括自动旋转、截图、转换格式等。

ubuntu 下安装扩展

sudo apt-get install ffmpeg

获取视频尺寸、旋转角度

/** * /usr/bin/ffprobe video.mp4 -show_streams -print_format json */public static function info($video){ $raw = shell_exec(sprintf('%s %s -show_streams -print_format json', self::ffprobe(), $video)); if (empty($raw) || !($raw = json_decode($raw, true)) || empty($raw['streams'])) { return false; } foreach ($raw['streams'] as $v) { if (VIDEO == $v['codec_type']) { $data = $v; break; } } return [ WIDTH => format_integer($data[WIDTH]), HEIGHT => format_integer($data[HEIGHT]), ROTATE => isset($data[TAGS][ROTATE]) ? format_integer($data[TAGS][ROTATE]) : 0, ];}

旋转视频

/** * /usr/bin/ffmpeg -y -i video.mp4 -strict -2 video.mp4_new.mp4 */public static function rotate($video){ if (!($info = self::info($video))) { return false; } if ($info[ROTATE]) { $tmpVideo = $video . '_new.mp4'; shell_exec(sprintf('%s -y -i %s -strict -2 %s', self::ffmpeg(), $video, $tmpVideo)); if (File::exist($tmpVideo)) { File::delete($video); File::rename($tmpVideo, $video); } }}

生成视频缩略图

/** * /usr/bin/ffmpeg -i video.mp4 -y -f image2 -t 0.001 -s 800x600 video.mp4_tmp.jpg */public static function createTmpImage($video){ if (!($info = self::info($video))) { return false; } $image = self::getTmpImageFile($video); shell_exec(sprintf('%s -i %s -y -f image2 -t 0.001 -s %dx%d %s', self::ffmpeg(), $video, $info[WIDTH], $info[HEIGHT], $image)); return File::exist($image) ? $image : false;}

生成 webm

/** * /usr/bin/ffmpeg -i video.mp4 video.webm */public static function webm($video){ if (!($videoFile = File::exist($video))) { return ''; } $webmFile = self::getWebmFile($videoFile); shell_exec(sprintf('%s -i %s %s', self::ffmpeg(), $videoFile, $webmFile));}

标签:建站
日期:2017-05-18