1.安装ffmpeg
2.php中使用
在php中的文件中,调用系统命令:system(),直接调用ffmpeg进行使用
如果实在tp3.2以上的的框架中使用该模块的话,同样,需要在核心框架library中新建Phpffmpeg文件夹,
将下载的文件全部复制至Phpffmpeg文件夹中。那么在Controller中使用的话,就不需要require_once了,直接执行
\Phpffmpeg\FFmpegAutoloader::register();
这样已经实现了自动加载和自动注册功能,因为tp自动的自动加载功能会先执行require_once将文件包含进来。
API详解
ffmpeg_movie部分
(1)$movie = new ffmpeg_movie(String path_to_media, boolean persistent);
创建视频处理对象,第一个参数是视频url,第二个参数是以长连接打开视频资源,true或者false。
(2)$movie->getDuration();
获取视频时长,单位秒
(3)$movie->getFrameCount();
获取视频帧数
(4)$movie->getFrameRate();
获取帧率
(5)$movie->getFilename();
获取文件路径,包括文件名称
(6)$movie->getComment();
获取视频的注释
(7)$movie->getTitle();
获取主题
(8)$movie->getFrameHeight();
获取视频高度(分辨率)
(9)$movie->getFrameWidth()
获取视频宽度(分辨率)
(10)$movie->getPixelFormat()
获取像素格式,例如yuv420p
(11)$movie->getFrameNumber();
获取当前帧索引
(12)$movie->getFrame([Integer framenumber]);
获取对应的帧,返回的对象将作为new ffmpeg_frame(Resource gd_image)的实例化对象。
Returns a frame from the movie as an ffmpeg_frame object. Returns false if the frame was not found.
(13)$movie->getNextKeyFrame();
获取下一帧
Returns the next key frame from the movie as an ffmpeg_frame object. Returns false if the frame was not found.
(14)$movie->getSize();
获取视频的大小,单位kb
(15)$movie->getImage($savePath,$second,$width,$height);
获取视频的某个时间的帧图片(关键帧)
$savePath 图片保存的路径,包含图片的名称。例如path/my.jpg;
$second 视频对应的秒数,int。
$width 图片的宽度,int。
$height 图片的高度,int。
执行此函数成功时返回true,失败返回false。
(16)$movie->getGif($savePath,$startsecond,$lastsecond,$width,$height);
截取视频的某个时间开始至某个时间的gif动态图。
$savePath 图片保存的路径,包含图片的名称。例如path/my.gif;
$startsecond 视频开始秒数,int。
$lastsecond 持续的秒数,即gif的时长。
$width gif的宽度,int。
$height gif的高度,int。
执行此函数成功时返回true,失败返回false。
ffmpeg_frame部分
(1)$frame = new ffmpeg_frame(Resource gd_image);
参数是一个图片资源对象(需要自己创建),如果执行$movie->getFrame([Integer framenumber]);择返回的就是一个相当于new ffmpeg_frame(Resource gd_image);的实例化对象;
(2)$frame->getWidth();
返回宽度
(3)$frame->getHeight();
返回高度
(3)$frame->getPTS();
(4)$frame->getPresentationTimestamp();
(5)$frame->resize(Integer width, Integer height [, Integer crop_top [, Integer crop_bottom [, Integer crop_left [, Integer crop_right ]]]]);
(6)$frame->crop(Integer crop_top [, Integer crop_bottom [, Integer crop_left [, Integer crop_right ]]]);
(7)$frame->toGDImage();
返回一个dg对象。
例如:
$frame = $movie->getFrame(6);//返回ffmpeg_frame的对象
$frame->resize(400,400,20,20,20,50);
$img = $frame->toGDImage();
//将gd对象保存为图片
imagejpeg($img,'my.jpeg');
imagedestroy($img);
-----------、
PHP使用使用ffmpeg给视频增加字幕显示的方法给视频增加字幕显示的方法
本文实例讲述了PHP使用ffmpeg给视频增加字幕显示的方法。分享给大家供大家参考。具体实现方法如下:
复制代码 代码如下:
<?php
$dir = ‘./’; // set to current folder
if ($handle = opendir($dir)) {
while(false!== ($file = readdir($handle))) {
if ( is_file($dir.$file) ){
if (preg_match(“‘\.(avi)$'”, $file) ){
$sub_file = str_ireplace(“.avi”, “.srt”, $dir.$file);
$idx_file = str_ireplace(“.avi”, “.idx”, $dir.$file);
$thumb_file = str_ireplace(“.avi”, “.jpg”, $dir.$file);
$out_file = str_ireplace(“.avi”, “.mp4”, $dir.$file);
flv_convert_get_thumb($dir.$file, $sub_file, $idx_file, $thumb_file, $out_file);
}
else{
continue;
}
}
}
closedir($handle);
}
//flv_convert_get_thumb(‘input.avi’, ‘input.srt’, ‘output.jpg’, ‘output.ogm’);
// code provided and updated by steve of phpsnaps ! thanks
// accepts:
// 1: the input video file
// 2: path to thumb jpg
// 3: path to transcoded mpeg?
function flv_convert_get_thumb($in, $in_sub, $in_idx, $out_thumb, $out_vid){
// get thumbnail
$cmd = ‘ffmpeg -v 0 -y -i ‘.$in.’ -vframes 1 -ss 250 -vcodec mjpeg -f rawvideo -s 286×160 -aspect 16:9 ‘.$out_thumb;
$res = shell_exec($cmd);
// $res is the output of the command
// transcode video
$cmd = ‘mencoder ‘.$in.’ -o ‘.$out_vid.’ -sub ‘.$in_sub.’ -subfont-text-scale 3.0 -subpos 99 -af volume=10 -aspect 16:9 -of avi
-noodml -ovc x264 -x264encop$
$res = shell_exec($cmd);
}
?>