[轉]使用PHP進行影片轉檔及擷取縮圖
要在 Linux 主機上使用 PHP 進行影片轉檔,須安裝 LAME、ffmpeg、Ruby、FLVTool2。
要在 Linux 主機上使用 PHP 進行影片轉檔,須安裝 LAME、ffmpeg、Ruby、FLVTool2。
- 安裝 LAME
LAME 是用來將聲音壓成 MP3 格式,並加入 --enable-shared 以供 ffmpeg 使用
網址:http://lame.sourceforge.net/
下載完成後,輸入下列命令:
[root@localhost ~]# tar -zxvf lame-3.98.4.tar.gz
[root@localhost ~]# cd lame-3.98.4
[root@localhost ~]# ./configure --enable-shared -prefix=/usr
[root@localhost ~]# make
[root@localhost ~]# make install - ffmpeg Install With Libx264
- Download libx264
Get the libx264 package from here: http://www.videolan.org/developers/x264.html - Install libx264
cd /path/to/x264-dir
./configure --enable-shared
make
make install
ldconfig
如果遇到yasm not found,就用無敵的yum install yasm
如果遇到yum找不到yasm,就先裝epel
//32bit sudo rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-4.noarch.rpm //CentOS 5 64bit sudo rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/x86_64/epel-release-5-4.noarch.rpm //CentOS 6 rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-5.noarch.rpm
- Download libx264
- 安裝 ffmpeg
ffmpeg 影片轉檔系統,其 libavcodec 涵蓋大部分影片格式,不過仍有轉換 FLV 上的問題,須另外安裝 FLVTools 來修正。
網址:http://www.ffmpeg.org/
下載完成後,輸入下列命令:
[root@localhost ~]# tar -zxvf ffmpeg-0.5.1.tar.gz
[root@localhost ~]# cd ffmpeg-0.5.1
[root@localhost ~]# ./configure --enable-gpl --enable-libmp3lame --enable-shared --enable-libx264 --prefix=/usr
[root@localhost ~]# make clean && make
[root@localhost ~]# make install - 安裝 Ruby
FLVTool2 可以修正 ffmpeg 不正確儲存 FLV metadata 的問題,不過它是用 Ruby 寫的,須先安裝 Ruby。
網址:http://www.ruby-lang.org/en/
下載完成後,輸入下列命令:
[root@localhost ~]# tar -zxvf ruby-1.9.1-p376.tar.gz
[root@localhost ~]# cd ruby-1.9.1-p376
[root@localhost ~]# ./configure
[root@localhost ~]# make
[root@localhost ~]# make install - 安裝 FLVTool2
FLVTool2 是一個用來編輯FLV檔的套件,透過它來儲存FLV檔,確保 FLV 檔裡有正確的 metadata。
網址:http://rubyforge.org/projects/flvtool2/
下載完成後,輸入下列命令:
[root@localhost ~]# tar -xvf flvtool2-1.0.6.tar
[root@localhost ~]# cd flvtool2-1.0.6
[root@localhost ~]# ruby setup.rb config
[root@localhost ~]# ruby setup.rb setup
[root@localhost ~]# ruby setup.rb install - 安裝 ffmpeg-php
為了讓 PHP 取得影片的資料,要安裝 ffmpeg-php 插件。
網址:http://ffmpeg-php.sourceforge.net/
下載:http://sourceforge.net/projects/ffmpeg-php/files/ffmpeg-php/0.6.0/ffmpeg-php-0.6.0.tbz2/download
下載完成後,輸入下列命令:
[root@localhost ~]# tar -xvf ffmpeg-php-0.6.0.tbz2
[root@localhost ~]# cd ffmpeg-php-0.6.0
[root@localhost ~]# phpize
[root@localhost ~]# ./configure && make
[root@localhost ~]# make install
在configure && make階段遇到CODEC_TYPE_VIDEO undeclared問題
新增yum的Repository後
重裝yum install ffmpeg ffmpeg-devel ffmpeg-libpostproc 解決一些問
Install FFmpeg and ffmpeg-php on CentOS Easily
之後又遇到‘PIX_FMT_RGBA32′undeclared 看下篇解決
ffmpeg-php error PIX_FMT_RGBA32
如果 Apache 是使用 XAMPP 請參考這篇:
[Linux] 在 XAMPP 上安裝 PHP extension (以 ffmpeg-php 為例)
make後 可以看到產生ffmpeg.so的資料
再搬到/usr/lib64/php/modules/ffmpeg.so
即可設定 PHP 載入這個plugin。 - 設定 php.ini
#vi /etc/php.ini
加入以下內容:
[ffmpeg]
extension=ffmpeg.so- 重開apache
#service httpd restart
最後重啟 Apache - 開始轉檔
以下是一個簡單的範例:
PHP程式碼
//ffmpeg 的執行路徑
$ffmpegPath = "/usr/bin/ffmpeg";
//來源影片路徑
$srcFile = '/var/www/html/ffmpeg/upload/test_in.wmv';
//輸出影片路徑
$outFile = '/var/www/html/ffmpeg/upload/test_out.flv';
//輸出縮圖路徑
$outImg = '/var/www/html/ffmpeg/upload/test.jpg';
//取得影片資訊
$ffmpegObj = new ffmpeg_movie($srcFile);
//取得音頻比特率
$srcAB = intval($ffmpegObj->getAudioBitRate()/1000);
//將影片轉換為FLV檔
exec("$ffmpegPath -i $srcFile -f flv -s 436x324 -acodec libmp3lame -ar 22050 -ac 2 -ab $srcAB -y $outFile");
//從影片產生縮圖
exec("$ffmpegPath -itsoffset -1 -i $srcFile -vcodec mjpeg -vframes 1 -an -f rawvideo -s 436x324 $outImg");
如果沒有錯誤,又沒有轉出的檔案 檢查一下資料夾權限是否限制寫入
Reference
- Installing the EPEL Repository on CentOS or RHEL
- Ffmpeg Install With Libx264 (H264)
沒有留言:
張貼留言