這幾天做專案,其中一個需求是使用者上傳視訊檔案到伺服器,然後伺服器自動擷取該視訊的一幀作為該視訊對應的縮圖,伺服器端語言採用php編寫,找了半天資料,發現ffmpeg-php可以滿足該需求,所以下面簡單介紹一下該擴充套件庫的配置和使用方法。
測試伺服器環境 WampServer Version 2.1,php5.3.5,ffmpeg-php 配置和使用步驟如下:
1. 下載 ffmpeg-php, ffmpeg-php-5.3-win32-all.zip
2. 將 php_ffmpeg.dll 放到 PHP 擴充套件目錄,(例如 E:\Program Files\wamp\bin\php\php5.3.5\ext)
3. 將其他的dll檔案放到系統目錄,(例如 C:\Windows\System32)
4. 修改 php.ini,新增 extension=php_ffmpeg.dll 配置項,結果如下:
extension=php_gd2.dll extension=php_gettext.dll extension=php_ffmpeg.dll
(注:Wamp 環境下要修改 apache 目錄中的 php.ini,(例如E:\Program Files\wamp\bin\apache\Apache2.2.17\bin\php.ini), 同時要啟用gd2 和 gettext 模組)
5. 重新啟動 apache 伺服器
6.列印輸出 phpinfo,檢視是否有如下輸出,若有,則說明 ffmpeg-php 模組配置正確
ffmpeg-php
ffmpeg-php version | 0.6.0-svn |
ffmpeg-php built on | Sep 8 2010 12:13:47 |
ffmpeg-php gd support | enabled |
ffmpeg libavcodec version | Lavc52.87.4 |
ffmpeg libavformat version | Lavf52.78.3 |
ffmpeg swscaler version | SwS0.11.0 |
Directive | Local Value | Master Value |
---|---|---|
ffmpeg.allow_persistent | 0 | 0 |
ffmpeg.show_warnings | 0 | 0 |
7. 編寫測試程式碼,示例程式碼擷取視訊的第二幀為縮圖
public function testmp4() { if(extension_loaded('ffmpeg')){//判斷ffmpeg是否載入 $mov = new ffmpeg_movie('E:\\Program Files\\wamp\\www\\BBShow\\test\\guangfa15s.mp4');//視訊的路徑 dump($mov); $ff_frame = $mov->getFrame(2); $gd_image = $ff_frame->toGDImage(); $img=$_SERVER['DOCUMENT_ROOT']."/test.jpg";//要生成圖片的絕對路徑 imagejpeg($gd_image, $img);//建立jpg影像 imagedestroy($gd_image);//銷燬一影像 }else{ echo "ffmpeg沒有載入"; } }
8. 執行測試程式碼,即可在伺服器端生成 jpg 格式的縮圖
9. 有關 ffmpeg-php 的詳細使用說明,請參照官方API(http://ffmpeg-php.sourceforge.net/doc/api/)。