先教Server學轉片吧 米奇
要搞個自家YouTube伺服器,第一個難關就是如何讓Server有能力去轉片。參考Luar的英文Blog,總算找到了安裝各種套件的方法了。
正如前面文章提到,要讓Linux伺服器會轉FLV影片,要安裝4個套件,它們依次是LAME、ffmpeg、Ruby和FLVTool2。另外,由於用ffmpeg轉片只會忠實地按照您指定的尺寸來縮放影片,用轉4:3影片的尺寸來轉16:9影片會令完成影片變成,為了日後檔案上傳後可透過PHP自動檢查影片的尺寸來進行轉換工作,所以還要裝個PHP的擴充ffmpeg-php。而由於我們的特別需求,所以都不能用RPM方式來安裝,全都要耐心地去編譯。
LAME
LAME是用來將聲音壓成MP3格式的,是相當有名的壓MP3套件。先到LAME的官網去下載最新的LAME,依下面的指令來解開安裝它。其中最重要的是--enable-shared一段,因為只有那樣ffmpeg才能用得到它的功能。
tar -zxvf lame-3.97.tar.gz
cd lame-3.97
./configure --enable-shared -prefix=/usr
make
make install
ffmpeg
ffmpeg是著名的轉片套件,所附的libavcodec涵蓋大部分影片格式,轉FLV也可以。不過由於它也有不少FLV轉換軟件也有的共通問題,所以稍後還要安裝FLVTools來修正。
ffmpeg表明它是一個「永遠也是開發中的專案」,總是不停在更新,所以沒有一個官方的Binary檔可以下載來安裝,連源碼也要透過Subversion來取得最新版本。大多數Linux版本相信都已經預設安裝了SVN了吧。
svn checkout svn://svn.mplayerhq.hu/ffmpeg/trunk /usr/local/src/ffmpeg
cd /usr/local/src/ffmpeg
./configure --enable-gpl --enable-libmp3lame --enable-shared --prefix=/usr
make clean && make
make install
當然,安裝ffmpeg時可以有很多很多很多很多插件和參數供您加上去,以安裝出一個更加萬能的轉片工具,不過因為真的太多太多太多,一版紙也寫不完,所以如何您要裝的話就自己到網上查看好了。
Ruby
花了好長時間編譯ffmpeg之後,就要著手修正不正確儲存FLV metadata的問題了。FLVTool2可以做到這項工作,不過它是用Ruby來寫的,所以要先安裝Ruby。Ruby是由一位日本人松本行弘開發出來的,是個徹底至極的OO語言,不過由於太新不夠普及,不是所有Linux分發版本都預設安裝這種程式語言的編譯程式,所以又要去官網下載源碼來安裝。
tar -zxvf ruby-1.8.5-p12.tar.gz
cd ruby-1.8.5-p12
./configure
make
make install
FLVTool2
FLVTool2是一個用來編輯FLV檔的套件,透過它來儲存FLV檔,就可以保證FLV檔裡有正確的metadata了。FLVTool2的最新版本放了在RubyForge網站,下載回來就可以安裝。
gunzip flvtool2-1.0.6.tgz
tar -xvf flvtool2-1.0.6.tar
cd flvtool2-1.0.6
ruby setup.rb config
ruby setup.rb setup
ruby setup.rb install
到這裡,有關轉片方面的安裝便大功告成。那應該怎麼用ffmpeg來轉換影片至FLV檔呢?在Luar的網站雖然也有一些參考指令,不過不知怎的米奇總是用得不順手,於是就參考一下同是使用ffmpeg來轉片的攜帶動畫轉換君3GP Converter的做法。
將影片轉換為FLV檔
ffmpeg -y -i [來源檔路徑] -f flv -s [目的影片寬度]x[目的影片高度] -r [目的frame rate] -b [目的bitrate] -acodec mp3 -ar 22050 -ab 48 -ac 2 - | flvtool2 -U stdin [目的檔檔名]
目的檔的寬度和高度可以自訂,不過要小心會變形。一般來說320x240是4:3,320x180則是16:9。目的frame rate一般都離不開8/10/14.985/15/23.976/24/25/29.97/30的,網上播片的話14.985便夠了。至於bitrate就要看您的伺服器的流量和您自己的要求了,米奇的Demo網站用的是512000(512kbps),雖然幾乎沒起格,但檔案就頗大(186秒12.1MB),用384000(384kbps)已經有不錯的效果。至於聲音參數方面,由於FLV格式有一點要求,所以還是不要動好了。
從影片擷取小圖示
或許您會需要一張小圖示來代表那影片,ffmpeg也可以用來擷取這張圖示。
ffmpeg -y -i [來源路徑] -f image2 -ss [擷取影格的秒數] -vframes 1 -s [圖示寬度]x[圖示高度] -an [圖示檔檔名]
擷取影格的秒數可以是小數後3位的小數,也接受00:00:00.xxx格式。圖檔名方面JPG/GIF/PNG都接受。
ffmpeg-php
為了讓PHP取得影片的資料,要安裝ffmpeg-php擴充插件。先到這裡下載ffmpeg-php回來編譯:
bunzip2 ffmpeg-php-0.5.0.tbz2
tar -xvf ffmpeg-php-0.5.0.tar
cd ffmpeg-php-0.5.0
phpize
./configure && make
make install
編譯完成後就可以製作出一個ffmpeg.so的檔案。然後就要去設定PHP,讓它載入這個擴充插件了。首先用筆記簿開一個新的純文字檔案,輸入以下兩行:
; Enable ffmpeg-php extension module
extension=ffmpeg.so
將檔案命名為ffmpeg.ini儲存起來,然後上傳到/etc/php.d/目錄裡,重新啟動Apache之後,PHP就會自動載入它。您可以透過phpinfo()函式來查看ffmpeg-php有沒有正確載入。
引用URL : http://blog.comicparty.com/trackback.php?id=319







01/04/2007, 11:29
這個東西在虛擬主機上有沒有用處?
02/04/2007, 13:53
要安裝這些必須要有root權限哩。所以虛擬主機一般都沒辦法做到。有些Hosting公司提供Virtual Dedicated Server就可以。
順帶一提,小弟以TVParty 0.2架設的一個網站www.i-TV.hk自從啟用之後,流量急增了兩倍,不過閱覽率也不算高,可以看出要搞這種廣播伺服器有很高要求,這點必須注意一下。
17/04/2007, 14:11
請教一下!! 如果php已經可以連接使用時,那您有上傳的範例可以參考嗎? 感謝萬分
17/04/2007, 18:12
米奇借用了別人的server裝了個TVParty系統,那是正在改良中的v2.0版本,不過由於以下兩理由,您只可以點擊ADMIN PAGE連結去看看管理介面是甚麼模樣的,但就不能上傳檔案了:
1. 為了應付大型影像檔案,TVParty除了輔助性的HTTP form上傳檔案之外,其實主要是以FTP來上傳檔案的,這也是TVParty的威力所在。由於伺服器是借來的,不方便給匿名用戶上傳很大的檔案。有空的話米奇會寫些cron job來自動清理上傳檔案,那就可以讓大家試試FTP配合cron job進行自動轉換大型檔案的好處了。
2. 由於轉換檔案非常耗用資源,米奇不好意思在別人的伺服器上開動自動轉換機能。所以現在即使您上傳檔案上來,也不會自動轉換。
現在http://www.i-TV.hk正在使用TVParty v2.0-1 custom make版本,那是個每天都在運作的網上電視台,他們以一台近端的伺服器來上傳及轉換檔案,然後每日定時rsync近端的紀錄到遠端的production伺服器。這是TVParty的叢集式架構的實現。
17/04/2007, 19:43
噢,忙了放連結。
TVParty 測試版 - ComicParty 劇場
17/04/2007, 23:19
謝謝您的回應!! 我安裝開始測試php上傳時 卻出現這些訊息「ffmpeg -i 'test_media/robot.avi' -s '320x240' -sameq -acodec 'mp3' -ab '32' -ar '22050' -f 'flv' test_media/robot.flv
flvtool2 -U test_media/robot.flv
CLASS FFMPEG ERROR: Execute error. Output for file "test_media/robot.avi" was not found. Please check server write permissions and/or available codecs compiled with FFmpeg.」
php產生出來的若用putty進去 照著打的話 是能夠正常轉檔的! 但是到了php就是無法自動轉~ 您覺得是否是控制權限的問題呢?
18/04/2007, 20:39
那應該是設定的目錄路徑有錯吧,請按照README檔的說明設定好每個目錄的名稱和權限。TVParty預設上是從upload_tmp目錄讀取檔案來轉換的,這個執行目錄的路徑可以透過config.ini來更改。
另外,cron_convert.php一定要用root權限來執行,因為它要用來操作用別的帳號經FTP上傳上去的檔案,一定要有一個權限夠大的user來執行。
19/04/2007, 12:20
恩! 我所測試的大致上ok
不過我是寫php來產生command
並且寫在*.sh檔中 用crontab來排程
不過目前發現的問題似乎是ffmpeg無法同時間轉二個檔
不知道您是否有這個問題
19/04/2007, 16:37
由於轉換檔案對伺服器有相當負擔,米奇在設計cron_convert.php時是限制了CPU loading 在40%以下且沒有別的轉換工作在進行時才會去做轉換工作。如果要同時進行多個轉換工作,是可以修改那部份的code,甚至不去做那個檢查的。不過米奇並不建議您那樣做。
19/04/2007, 18:00
恩!! 這其實很二難
因為我架設的方向是設定在多人使用的話
假設有20個人上下相差不到5秒的時間上傳1mb的檔案
如果將轉檔設定在先後順序的話
那會變成有人覺得才1mb為何轉那麼久
這也是我今天一直在搞的東西!!! 唉~
目前這塊的討論實在少之又少 變的運行相當困難。
我突然想起像是天空部落應該就是運行排程來轉檔
因為我有次上傳檔案,並沒有馬上就完成
而是等了十幾分鐘後 才會有結果出來。
20/04/2007, 12:19
YouTube也是使用排程的方法來轉換檔案的。米奇每星期都會上傳一些影片到YT,所以不難發現有時只要十幾分鐘就能看到我的影片,有時卻等了兩三小時才看到。不過,由於YT所面對的客戶更多,所以他們可以更放膽的去投資架設多幾台轉換伺服器,所以每個上傳者都不用等太久。我想他們的做法是上傳檔案伺服器只是一個中轉站,多台轉換伺服器各自運作,每當工作完結就會到上傳檔案伺服器把檔案抄過來做轉換,完成轉換後就移到下載伺服器去。
在TVParty裡要達到這個做法,只要略為修改cron_convert.php,讓它在找不到紀錄上的檔案就立即放棄,繼續找別的檔案來做,然後將bin和lib兩個目錄和config.ini抄到獨立的轉換伺服器,設定好上傳檔案路徑和儲存完成檔路徑即可。
不過如果沒有那麼多資源,那就只有修改cron_convert.php裡99-127行關於進程檢查的部份,讓它可以容許一定數量的ffmpeg和lame同時並行,那就可以同時處理多個檔案。米奇的公司最近也有類似的需要,不過最快要到5月才有空再去踫TVParty了。
順帶一提,因為米奇學藝不精,沒有能力用perl去寫cron_convert和convert_queue class,否則寫成daemon的話或許效率更好。
14/05/2007, 18:47
請問你是在那個平台上安裝ffmpeg的
Fedora嗎?幾版的?
15/05/2007, 10:37
米奇用的雖然是FC3,不過FC6應該也不會有問題。不知道是FC6有沒有自帶了ffmpeg,你可以用rpm查看一下。米奇第一次安裝時就是安裝rpm版,不過似乎不能照顧所有用家的需要,例如MP3問題就是。
26/03/2008, 00:08
Bon marche de Dofus Kamas.achat de dofus.le prix moins cher.nous vendons dofus kamas ,or de dofus.24/7 appui-en-ligne et livraison rapide.Achat Dofus Kamas,Bon marche de dofus kamas,24/7 appui en ligne,etlivraison rapide,dofus kamas pour dofus,vendons Dofus Kamas.Wakfu Kamas buy Wakfu
10/04/2008, 14:59
要如何從swf檔中取出影格做出一張縮圖
29/04/2008, 16:10
/ مسجات رمضان / مسجات رومانسية / مسجات شوق / مسجات عتاب / مسجات اشتياق / النغمات / نغمات نوكيا / تنزيل نغمات / تحميل نغمات / نغمات mp3 / نغمات 2007 / نغمات 2007 / نغمات 2008 / نغمات اسلامية / موقع نغمات / نغمات صوتية / نغمات mar
جوال نوكيا / برامج نوكيا / ثيمات / مسجات / نغمات / برامج 6600 / برامج 3250 / برامج n70 / برامج n95 / برامج n73 / برامج الجيل الثالث / ثيمات n73 / ثيمات n70 / ثيمات 3250 / ثيمات 6300 / ثيمات 6600 / ثيمات 6630 / ثيمات e50 / ثيمات n70 / ثيمات n80 / ثيمات nth / مسجات / المسجات / احلى مسجات / مسجات حب / مسجات حلوة
01/05/2008, 08:18
make ffmpeg-php-0.5.2.1時出現
/usr/local/include/ffmpeg/avcodec.h:14:27: ffmpeg/common.h: No such file or directory
我cd /usr/local/include/ffmpeg/ 目錄中有avcodec.h , common.h
不知何解?
07/07/2008, 10:38
缠绕膜机气垫膜机春联印刷机Screen Printing Machine 无纺布制袋机 吹膜机 无纺布制袋机 制袋机丝印机 丝网印刷机分切机热切制袋机 冷切制袋机 制袋机 夹链粘合制袋机制袋机吹膜机背心袋设备枕式包装机月饼包装机水平式四边封包装机flow wrap machine面包包装机 饼干包装机 GOOGLE排名 求购包装机 湿巾包装机 背封包装机 包装机价格Package Printing machinery Packaging machinerydie-cutting machineauto slitting machine无纺布制袋机无纺布印刷机
16/08/2008, 10:07
Welcome to our website for wow power leveling ,
aoc gold sevise.
25/09/2008, 18:10
bucuo
Life is like a box of chocolates. You never know what you're going to get
29/10/2008, 14:30
kkdai|wansan82|mocasting|jipin33|jiawuhuo|家務日志|
01/11/2008, 11:49
印刷 & Printing, 花店 & Flower Shop, 滅蟲 & Pest Control, 汽車模型 & Cars Model, 網頁設計 & Web Design, 英語課程 & English Course, 婚紗攝影 & Wedding Photo, 家務助理 & Domestic Helper, 婚禮統籌 & Wedding Planner, 指紋機 & Fingerprint Scanner, 外幣, 美甲
01/11/2008, 11:58
辦公室傢俬, Office Furniture, 寫字樓傢俬, 辦公室屏風, 搬運, 運輸公司, 清拆, 鋼琴搬運
04/11/2008, 14:23
wow gold
wow gold
wow gold
wow gold
wow gold
wow gold
wow gold
wow gold
wow gold
wow gold
wow gold
04/11/2008, 14:30
buy wow gold
cheap wow gold
wow power leveling
buy wow gold
cheap wow gold
wow power leveling
buy wow gold
cheap wow gold
wow power leveling
buy wow gold
cheap wow gold
wow power leveling