··開始先說點我開發遇到的問題,我用的環境是IIS7.5+PHP5.4+MYSQL,系統是windows!要開發一個視頻上傳播放的功能,需要擷取視頻資訊(寬高大小時間等等~),還是截視訊框架做封面。
··然後我就想用ffmpeg處理,我用的是thinkphp 架構,搞了半天整合好了,提示系統沒有安裝ffmpeg,原來還要安裝,又在網上找了一大圈。全試了遍,基本上都是修改php.ini檔案,加幾個dll檔案到系統檔案裡,php_ffmpeg.dll加到PHP裡,還是沒用,然後可能是PHP和ffmpeg版本不匹配,然後找了版本一致的又試了下,還是不行,我當時要抓狂了。後來又看到網上的說用IIS不行,因為這個方法有用的是apache伺服器。我又自己裝了一個xamppIntegration Environment,小試了一下,還是不行,因開發問題,還是不想用apache,就沒有嘗試了。
既然整合的不行,那我就用外部命令,因為這個不需要版本匹配(也不知道是不是真的需要匹配),反正也可以達到我的目的,在網上下載了ffmpeg的win64安裝包(文章後面我會放上需要的軟體,有需要的可以下載),解壓檔案夾放到D:\ffmpeg,如圖:
就是這樣,視頻是我自己的,然後在系統內容變數path裡加上bin的路徑D:\ffmpeg\bin;,如圖:
這個時候應該可以使用命令列執行了,win+R開啟運行,輸入cmd斷行符號,我用ffmpeg的命令截取視頻第一幀儲存圖片:ffmpeg -i d:\ffmpeg\test.mp4 -y -f image2 -t 0.001 -s 352x240 d:\ffmpeg\abcd.jpg
然後會輸出一大堆東西,在看下d盤ffmpeg的目錄下,此時多了一張abcd.jpg的圖片
說明這個時候ffmpeg就安裝好了。
最後我們就是要用這個命令在PHP環境來執行,首先在根目錄下寫一個indexs.php檔案
<?phpexec("dir",$output,$return_val);print_r($output);print_r($return_val);
在網頁上輸入indexs.php的網址。Warning: exec(): Unable to fork,這個提示應該是沒有使用者權限,然後開啟IIS管理器,找到應用程式集區-》找到你的對應網站池-》進階設定-》
確定重啟IIS伺服器,再用網頁開啟indexs.php,如果數組裡輸出內容就成功了,如果提示:Warning: exec() has been disabled for security reasons
這就是PHP沒有許可權執行exec,找到PHP目錄下的php.ini檔案,safe_mode要關掉,disable_functions裡把exec去掉,最好備份你修改的檔案。
重啟IIS伺服器,看出資料輸出內容,不提示報錯說明成功了。具體方法怎麼處理視頻我還沒做,這個相信也不難,我放幾個我要用到的ffmpeg命令,如果後面需要我寫的PHP處理視頻代碼,在下面留言。(本帖不保證所有都能成功,本人也是菜鳥一個。勿噴~)
ffmpeg代碼(我用的都是絕對路徑,以下命令我全測試過,保證沒有問題。)
切視頻第一幀儲存圖片ffmpeg -i e:\girl.mp4 -y -f image2 -t 0.001 -s 352x240 e:\a.jpg把視頻的前30幀轉換成一個Animated Gifffmpeg -i e:\girl.mp4 -vframes 100 -y -f gif e:\a.gif截取指定時間的縮微圖,-ss後跟的時間單位為秒ffmpeg -i e:\girl.mp4 -y -f image2 -ss 28 -t 0.001 -s 350x240 e:\test.jpg輸出視頻詳細資料ffprobe -v quiet -print_format json -show_format -show_streams e:\girl.mp4
ffmpeg安裝檔案:
http://download.csdn.net/download/ysjyygywfn/9946052