FFmpegPHP的安装使用详解
2016-03-02 16:36
731 查看
FFmpegPHP 是一个纯面向对象的 ffmpeg 的
PHP封装。提供一些简单易用、面向对象的API用以访问视频和音频文件的信息,可直接从视频中获取帧的图片,这常用来做视频的缩略图。支持的视频格式包 括: MOV, AVI, MPG, 和 WMV.
FFmpegPHP封装,没有提供视频转换的接口。(至少我没找到,如果大家知道还望赐教。)
我使用的集成环境APMServ。
1.下载ffmpeg-php:http://sergey89.ru/files/ffmpeg-php-win32-all.zip
2. 解压ffmpeg-php-win32-all.zip 后有下面几个文件:
avcodec-51.dll
avformat-51.dll
avutil-49.dll
php_ffmpeg.dll
pthreadGC2.dll
3. 将四个文件拷贝到windows/system32文件夹下面
avcodec-51.dll, avformat-51.dll, avutil-49.dll, pthreadGC2.dll
4.将php_ffmpeg.dll拷贝到php的ext目录下。
5. 然后需要到apache/bin文件下找到php.ini文件下允许使用dll文件加入extension=php_ffmpeg.dll 并允许 extension=php_gd2.dll, extension=php_gettext.dll这两个设置。(去掉前面的分号)
extension=php_gd2.dll
extension=php_gettext.dll
extension=php_ffmpeg.dll
6. 重新启动APMServ后使用phpinfo()函数看到一下信息配置:
以上就表明ffmpeg在php环境中配置成功了。
7. 下面我们建立一个php的页面来测试是不是可以使用ffmpeg的一些函数功能。建立testvideo.php文件
代码如下:
<?php
extension_loaded('ffmpeg');
$ffmpegInstance = new ffmpeg_movie('D:\Program Files\APMServ5.2.6\www\htdocs\test.mpg');
echo "getDuration: " . $ffmpegInstance->getDuration()."<br>" .
"getFrameCount: " . $ffmpegInstance->getFrameCount()."<br>" .
"getFrameRate: " . $ffmpegInstance->getFrameRate()."<br>" .
"getFilename: " . $ffmpegInstance->getFilename()."<br>" .
"getComment: " . $ffmpegInstance->getComment()."<br>" .
"getTitle: " . $ffmpegInstance->getTitle()."<br>" .
"getAuthor: " . $ffmpegInstance->getAuthor()."<br>" .
"getCopyright: " . $ffmpegInstance->getCopyright()."<br>" .
"getArtist: " . $ffmpegInstance->getArtist()."<br>" .
"getGenre: " . $ffmpegInstance->getGenre()."<br>" .
"getTrackNumber: " . $ffmpegInstance->getTrackNumber()."<br>" .
"getYear: " . $ffmpegInstance->getYear()."<br>" .
"getFrameHeight: " . $ffmpegInstance->getFrameHeight()."<br>" .
"getFrameWidth: " . $ffmpegInstance->getFrameWidth()."<br>" .
"getPixelFormat: " . $ffmpegInstance->getPixelFormat()."<br>" .
"getBitRate: " . $ffmpegInstance->getBitRate()."<br>" .
"getVideoBitRate: " . $ffmpegInstance->getVideoBitRate()."<br>" .
"getAudioBitRate: " . $ffmpegInstance->getAudioBitRate()."<br>" .
"getAudioSampleRate: " . $ffmpegInstance->getAudioSampleRate()."<br>" .
"getVideoCodec: " . $ffmpegInstance->getVideoCodec()."<br>" .
"getAudioCodec: " . $ffmpegInstance->getAudioCodec()."<br>" .
"getAudioChannels: " . $ffmpegInstance->getAudioChannels()."<br>" .
"hasAudio: " . $ffmpegInstance->hasAudio();
8.执行后如果拿到视频的一些信息如下就表示环境配置成功了,那我们就可以开始开发我们的视频操作。
执行结果:
略....
9.实现视频的截图。(接上面的php代码)
$ff_frame = $ffmpegInstance->getFrame(20);//截取视频第20帧的图像
$gd_image = $ff_frame->toGDImage();
$img=$_SERVER['DOCUMENT_ROOT']."/test2.jpg";//要生成图片的绝对路径
imagejpeg($gd_image, $img);//创建jpg图像
imagedestroy($gd_image);//销毁一图像
10.关于ffmpeg-php的API。
ffmpeg_movie object methods
==============================================================
ffmpeg_frame object methods
==============================================================
ffmpeg_animated_gif object methods
PHP封装。提供一些简单易用、面向对象的API用以访问视频和音频文件的信息,可直接从视频中获取帧的图片,这常用来做视频的缩略图。支持的视频格式包 括: MOV, AVI, MPG, 和 WMV.
FFmpegPHP封装,没有提供视频转换的接口。(至少我没找到,如果大家知道还望赐教。)
我使用的集成环境APMServ。
1.下载ffmpeg-php:http://sergey89.ru/files/ffmpeg-php-win32-all.zip
2. 解压ffmpeg-php-win32-all.zip 后有下面几个文件:
avcodec-51.dll
avformat-51.dll
avutil-49.dll
php_ffmpeg.dll
pthreadGC2.dll
3. 将四个文件拷贝到windows/system32文件夹下面
avcodec-51.dll, avformat-51.dll, avutil-49.dll, pthreadGC2.dll
4.将php_ffmpeg.dll拷贝到php的ext目录下。
5. 然后需要到apache/bin文件下找到php.ini文件下允许使用dll文件加入extension=php_ffmpeg.dll 并允许 extension=php_gd2.dll, extension=php_gettext.dll这两个设置。(去掉前面的分号)
extension=php_gd2.dll
extension=php_gettext.dll
extension=php_ffmpeg.dll
6. 重新启动APMServ后使用phpinfo()函数看到一下信息配置:
以上就表明ffmpeg在php环境中配置成功了。
7. 下面我们建立一个php的页面来测试是不是可以使用ffmpeg的一些函数功能。建立testvideo.php文件
代码如下:
<?php
extension_loaded('ffmpeg');
$ffmpegInstance = new ffmpeg_movie('D:\Program Files\APMServ5.2.6\www\htdocs\test.mpg');
echo "getDuration: " . $ffmpegInstance->getDuration()."<br>" .
"getFrameCount: " . $ffmpegInstance->getFrameCount()."<br>" .
"getFrameRate: " . $ffmpegInstance->getFrameRate()."<br>" .
"getFilename: " . $ffmpegInstance->getFilename()."<br>" .
"getComment: " . $ffmpegInstance->getComment()."<br>" .
"getTitle: " . $ffmpegInstance->getTitle()."<br>" .
"getAuthor: " . $ffmpegInstance->getAuthor()."<br>" .
"getCopyright: " . $ffmpegInstance->getCopyright()."<br>" .
"getArtist: " . $ffmpegInstance->getArtist()."<br>" .
"getGenre: " . $ffmpegInstance->getGenre()."<br>" .
"getTrackNumber: " . $ffmpegInstance->getTrackNumber()."<br>" .
"getYear: " . $ffmpegInstance->getYear()."<br>" .
"getFrameHeight: " . $ffmpegInstance->getFrameHeight()."<br>" .
"getFrameWidth: " . $ffmpegInstance->getFrameWidth()."<br>" .
"getPixelFormat: " . $ffmpegInstance->getPixelFormat()."<br>" .
"getBitRate: " . $ffmpegInstance->getBitRate()."<br>" .
"getVideoBitRate: " . $ffmpegInstance->getVideoBitRate()."<br>" .
"getAudioBitRate: " . $ffmpegInstance->getAudioBitRate()."<br>" .
"getAudioSampleRate: " . $ffmpegInstance->getAudioSampleRate()."<br>" .
"getVideoCodec: " . $ffmpegInstance->getVideoCodec()."<br>" .
"getAudioCodec: " . $ffmpegInstance->getAudioCodec()."<br>" .
"getAudioChannels: " . $ffmpegInstance->getAudioChannels()."<br>" .
"hasAudio: " . $ffmpegInstance->hasAudio();
8.执行后如果拿到视频的一些信息如下就表示环境配置成功了,那我们就可以开始开发我们的视频操作。
执行结果:
略....
9.实现视频的截图。(接上面的php代码)
$ff_frame = $ffmpegInstance->getFrame(20);//截取视频第20帧的图像
$gd_image = $ff_frame->toGDImage();
$img=$_SERVER['DOCUMENT_ROOT']."/test2.jpg";//要生成图片的绝对路径
imagejpeg($gd_image, $img);//创建jpg图像
imagedestroy($gd_image);//销毁一图像
10.关于ffmpeg-php的API。
ffmpeg_movie object methods
Method | Description |
$movie = new ffmpeg_movie(String path_to_media, boolean persistent) | Open a video or audio file and return it as an object. path_to_media - File path of video or audio file to open. persistent - Whether to open this media as a persistent resource. See the PHP documentation for more info about persistent resources |
$movie->getDuration() | Return the duration of a movie or audio file in seconds. |
$movie->getFrameCount() | Return the number of frames in a movie or audio file. |
$movie->getFrameRate() | Return the frame rate of a movie in fps. |
$movie->getFilename() | Return the path and name of the movie file or audio file. |
$movie->getComment() | Return the comment field from the movie or audio file. |
$movie->getTitle() | Return the title field from the movie or audio file. |
$movie->getAuthor() alias $movie->getArtist() | Return the author field from the movie or the artist ID3 field from an mp3 file. |
$movie->getCopyright() | Return the copyright field from the movie or audio file. |
$movie->getArtist() | Return the artist ID3 field from an mp3 file. |
$movie->getGenre() | Return the genre ID3 field from an mp3 file. |
$movie->getTrackNumber() | Return the track ID3 field from an mp3 file. |
$movie->getYear() | Return the year ID3 field from an mp3 file. |
$movie->getFrameHeight() | Return the height of the movie in pixels. |
$movie->getFrameWidth() | Return the width of the movie in pixels. |
$movie->getPixelFormat() | Return the pixel format of the movie. |
$movie->getBitRate() | Return the bit rate of the movie or audio file in bits per second. |
$movie->getVideoBitRate() | Return the bit rate of the video in bits per second. NOTE: This only works for files with constant bit rate. |
$movie->getAudioBitRate() | Return the audio bit rate of the media file in bits per second. |
$movie->getAudioSampleRate() | Return the audio sample rate of the media file in bits per second. |
$movie->getFrameNumber() | Return the current frame index. |
$movie->getVideoCodec() | Return the name of the video codec used to encode this movie as a string. |
$movie->getAudioCodec() | Return the name of the audio codec used to encode this movie as a string. |
$movie->getAudioChannels() | Return the number of audio channels in this movie as an integer. |
$movie->hasAudio() | Return boolean value indicating whether the movie has an audio stream. |
$movie->hasVideo() | Return boolean value indicating whether the movie has a video stream. |
$movie->getFrame([Integer framenumber]) | Returns a frame from the movie as an ffmpeg_frameobject. Returns false if the frame was not found. framenumber - Frame from the movie to return. If no framenumber is specified, returns the next frame of the movie. |
$movie->getNextKeyFrame() | Returns the next key frame from the movie as anffmpeg_frame object. Returns false if the frame was not found. |
ffmpeg_frame object methods
Method | Description |
$frame = new ffmpeg_frame(Resource gd_image) | Create a frame object from a GD image. NOTE: This function will not be available if GD is not enabled. |
$frame->getWidth() | Return the width of the frame. |
$frame->getHeight() | Return the height of the frame. |
$frame->getPTS() alias $frame->getPresentationTimestamp() | Return the presentation time stamp of the frame. |
$frame->resize(Integer width, Integer height [, Integer crop_top [, Integer crop_bottom [, Integer crop_left [, Integer crop_right ]]]]) | Resize and optionally crop the frame. (Cropping is built into ffmpeg resizing so I'm providing it here for completeness.) width - New width of the frame (must be an even number). height - New height of the frame (must be an even number). croptop - Remove [croptop] rows of pixels from the top of the frame. cropbottom - Remove [cropbottom] rows of pixels from the bottom of the frame. cropleft - Remove [cropleft] rows of pixels from the left of the frame. cropright - Remove [cropright] rows of pixels from the right of the frame. NOTE: Cropping is always applied to the frame before it is resized. Crop values must be even numbers. |
$frame->crop(Integer crop_top [, Integer crop_bottom [, Integer crop_left [, Integer crop_right ]]]) | Crop the frame. croptop - Remove [croptop] rows of pixels from the top of the frame. cropbottom - Remove [cropbottom] rows of pixels from the bottom of the frame. cropleft - Remove [cropleft] rows of pixels from the left of the frame. cropright - Remove [cropright] rows of pixels from the right of the frame. NOTE: Crop values must be even numbers. |
$frame->toGDImage() | Returns a truecolor GD image of the frame. NOTE: This function will not be available if GD is not enabled. |
ffmpeg_animated_gif object methods
Method | Description |
$gif = new ffmpeg_animated_gif(String output_file_path, Integer width, Integer height, Integer frame_rate, [Integer loop_count]) | create a new ffmpeg_animated_gif object output_file_path - Location in the filesystem where the animated gif will be written. width - Width of the animated gif. height - Height of the animated gif. frame_rate - Frame rate of the animated gif in frames per second.. loop_count - Number of times to loop the animation. Put a zero here to loop forever or omit this parameter to disable looping. |
$frame->addFrame(ffmpeg_frameframe_to_add) | Add a frame to the end of the animated gif. frame_to_add - The ffmpeg_frame object to add to the end of the animated gif. |
相关文章推荐
- 一个关于if else容易迷惑的问题
- PHP5.2.*防止Hash冲突拒绝服务攻击的Patch
- 深入理解PHP之匿名函数
- JSP/PHP基于Ajax的分页功能实现
- 关于PHP通过PDO用中文条件查询MySQL的问题。
- 什么是设计模式
- PHP数据库长连接mysql_pconnect的细节
- Php Installing An Expansion
- PHP+Apache在Windows 9x下的安装和配置
- IIS 6 的 PHP 最佳配置方法
- 安装Apache和PHP的一些补充
- Linux Apache+MySQL+PHP
- 建立Apache+PHP+MySQL数据库驱动的动态网站
- PHP 5.3.0 安装分析心得
- apache 环境下 php 的配置注意事项
- ASP.NET、ASP、PHP、JSP之间有什么区别?
- PHP VBS JS 函数 对照表
- C语言实现的统计php代码行数功能源码(支持文件夹、多目录)
- php xml 入门学习资料