今天這個不得不寫了,找了一下午的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 ");
}