zoukankan      html  css  js  c++  java
  • 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
    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_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
    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_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.
  • 相关阅读:
    mongodb复制集配置
    replication set复制集
    CentOS 6.5下源码安装MySQL 5.6
    10个最常见的 HTML5 面试题及答案
    Javascript中document.execCommand()的用法
    javascript 准确的判断类型方法
    getUserMedia API
    javascript
    C++ 面试题
    C++
  • 原文地址:https://www.cnblogs.com/zox2011/p/2971724.html
Copyright © 2011-2022 走看看