台灣最大裝潢接案平台
輕鬆接案網
清潔公司專精高難度抓漏工程,近30年經驗
快速找出問題所在,品質絕佳。

首頁  •  tw 論壇 • 程式設計討論     • 

[討論]教你如何架設像YouTube的網站

房東:阿龍
發表時間:2007-06-11
[檢舉]



要搞個自家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才能用得到它的弁遄C


tar -zxvf lame-3.97.tar.gz

cd lame-3.97

./configure --enable-shared -prefix=/usr

make

make install

ffmpeg


ffmpeg是著名的轉片套件,所附的libavcodec涵誘j部分影片格式,轉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

到這裡,有關轉片方面的安裝便大尼i成。那應該怎麼用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格式有一點要求,所以還是不要動好了。


從影片擷取小圖示


或陰z會需要一張小圖示來代表那影片,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有沒有正確載入。







  • 贊助網站       

    廣利不動產-新板特區指名度最高、值得您信賴的好房仲
    您的托付,廣利用心為您服務
    廣利不動產-板橋在地生根最實在--新板特區指名度最高、值得您信賴的好房仲
    完整房訊,房屋、店面熱門精選物件,廣利不動產 優質仲介,房屋租賃、買賣資訊透明,交易真安心!

  • 1 樓住戶:初學者
    發表時間:2007-06-11
    [檢舉]

    最近在搞ffmpeg php-ffmpeg目的就是在linux上玩flv轉檔

    也用了http://www.phpclasses.org/browse/package/3747.html 這邊所已建好的參數



    這是FFmpeg的文件,可以參考看看

    http://ffmpeg.mplayerhq.hu/ffmpeg-doc.html

    2 樓住戶:php 新手
    發表時間:2007-06-11
    [檢舉]

    架設自動轉換上傳 mpeg 為 flv

    1.伺服器 apache + php + LAME + ffmpeg + ruby (這是 linux 和 freebsd 都有的套件,freeBSD上可以用port安裝,linux 則是 yum 或 apt-get?)
    2.flvtool2 這是 ruby 的程式, http://rubyforge.org/projects/flvtool2/

    以上2者是環境,再者,到 http://www.phpclasses.org/ 可以找到一個現成的程式碼,名稱也叫做 ffmpeg,下載後解壓即可得到程式庫和範例程式。



    有免費版的程式哦!
    os tube…有興趣的可以試試看!
    http://www.ostube.de/en/downloads.php?register=community

    或者是自己有興趣開發程式者可以參考這個程式
    http://ffmpeg-php.sourceforge.net/

    3 樓住戶:黑糖龍
    發表時間:2007-06-11
    [檢舉]

    想要自己來建一個youtube。想要實現這個想法,要先能有一個網路版的flv player,還要能在影片上傳的時候,自動轉成flv檔。要製作flv player比較簡單,用flash+php就可以,至於轉檔,在網路上找了一下資料,發現linux下有一個叫ffmpeg的程式可以使用。那麼,事情就簡單多了,透過php的exec呼叫ffmpeg就能進行轉檔了


     




    所以,必須先解決ffmpeg的問題。


    1.安裝lame用來把聲音壓成mp3


    .把lame下載下來


    .把lame解開後,執行./configure --enable-shared -prefix=/usr


    .make


    .make install


    2.安裝 ruby,等一下要安裝flvtool2用的


    .下載ruby或直接用aptitude(debian)安裝皆可


     ../configure --> make --> make install


    3.安裝flvtool2,編輯flv檔用的


    .下載flvtool2 


    .解開後執行ruby setup.rb config


    .執行ruby setup.rb setup


    .執行ruby setup.rb install


    4.主角終於現身了,安裝ffmpeg囉


    .下載ffmpeg或用svn checkout svn://svn.mplayerhq.hu/ffmpeg/trunk下載


    .解開後執行 ./configure --enable-shared --prefix=/usr


    .make


    .make install


    5.如果想要能透過php取得影片資料而不是空能轉檔的話,還必須安裝ffmpeg-php


    .下載ffmpeg-php 


    .解開後執行phpize(要裝php-dev才有)


    ../configure --> make --> make install


    .然後把extension=ffmpeg.so 寫入php.ini就行了




    接下來,就簡單多了,將影片轉成flv的指令就是ffmpeg -i 來源檔.xxx 目的檔.flv,只要將指令透過php的exec來執行就可以了。如果要擷取一張圖片來當預覽的話,就執行ffmpeg -i 來源檔 -f image2 -ss 秒數 -vframes 1 -s 寬x高 -an 圖檔檔名(jpg、gif、png)。當然,ffmpeg還有很多弁鄍i以用,在終端機上執行ffmpeg -h就可以一目了然了。


    相關參考:http://luar.com.hk/blog/?p=670





     共 3 人回應  選擇頁數 【第1 頁】 

    姓名:
    佈告內容: