閱讀340 返回首頁    go 阿裏雲 go 技術社區[雲棲]


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();方法查看環境配置,如看到以下信息則說明擴展安裝成功。

730EFD22857F4EB8B7B4488B21B5D268

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的路徑)

第二個是現有視頻文件路徑

第三個是生成的視頻文件路徑

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

完整的一個處理文件
<?php



extension_loaded('ffmpeg');



$ffmpegInstance = new ffmpeg_movie('f:\www\ppt.wmv');



echo "getDuration: " . $ffmpegInstance->getDuration()."<br>" .



"getFrameCount: " . $ffmpegInstance->getFrameCount()."<br>" .



"getFrameRate: " . $ffmpegInstance->getFrameRate()."<br>" .



"getFilename: " . $ffmpegInstance->getFilename()."<br>"  ;



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

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 ");

}









最後更新:2017-10-24 00:34:24

  上一篇:go  VBox 克隆
  下一篇:go  windows 使用python DOC文檔轉成PDF