天天看點

ffmpeg-php 視訊格式轉換

今天這個不得不寫了,找了一下午的ffmpeg-php擴充的安裝與使用方法,都是千篇一律轉載的。

總結一下,看了這篇從安裝到使用一步到位。

1.下載下傳ffmpeg-php擴充包和ffmpeg.exe(剛開始我以為不需要這個,本地windows測試缺一不可),解壓後有以下檔案

    avcodec-51.dll

     avformat-51.dll

     avutil-49.dll

     php_ffmpeg.dll

     pthreadGC2.dll

2. 将四個檔案拷貝到windows/system32目錄下

     avcodec-51.dll, avformat-51.dll, avutil-49.dll, pthreadGC2.dll

3.将php_ffmpeg.dll拷貝到php的ext目錄下。

4. 然後需要到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

5.重新開機apache,輸出phpinfo();方法檢視環境配置,如看到以下資訊則說明擴充安裝成功。

6.測試,建立test.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>"  ;

//擷取參數的方法還有很多,這裡舉例以上幾個

通路test.php檔案,如果有輸出

getDuration: 163.639007568

getFrameCount: 2455

getFrameRate: 15

getFilename: F:\www\ppt.wmv

到這裡測試配置的環境成功,

7.下一步截取視訊圖檔

$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);//銷毀一圖像

這樣也可以

exec ("ffmpeg -i test.avi -y -f image2 -ss 8  test.jpg");//在8秒處截取圖檔

8.這一步才是主要的,視訊格式轉換

exec("f:/www/ffmpeg.exe -i  f:/www/test.wmv  f:/www/test2.flv");

第一個檔案路徑是轉換工具路徑(就是ffmpeg.exe的路徑)

第二個是現有視訊檔案路徑

第三個是生成的視訊檔案路徑

這就是最簡單的格式轉換,還可以設定尺寸、碼率等其他參數這裡不再贅述。

完整的一個處理檔案

$ffmpegInstance = new ffmpeg_movie('f:\www\ppt.wmv'); "getFilename: " . $ffmpegInstance->getFilename()."<br>"  ; exec ("ffmpeg -i  f:/www/test2.flv  -y -f image2 -ss 8  test.jpg");//在8秒處截取圖檔

?>

/*

 *$ffpath ffmpeg.exe的路徑,$srcpath 原視訊路徑 ,$respath 目标路徑

 */

function($ffpath,$srcpath,$respath){

    extension_loaded('ffmpeg');

    exec(" $ffpath  -i  $srcpath  $respath ");

}