FFmpegPHP的安装使用详解

http://blog.163.com/chenzhenhua_007/blog/static/128492649201182335633965/

FFmpegPHP的安装使用详解  

2011-09-23 16:30:53|  分类: PHP+MySQL |字号 订阅

 

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()函数看到一下信息配置:

 

FFmpegPHP的安装使用详解 - PIRATE - ChenZhenhuas blog

 

 以上就表明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
MethodDescription
$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_frame object. 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 an ffmpeg_frame object. Returns false if the frame was not found.
==============================================================
ffmpeg_frame object methods
MethodDescription
$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
MethodDescription
$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_frame frame_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.

 

 

转载于:https://www.cnblogs.com/zox2011/archive/2013/03/20/2971724.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值