目前,由於Flash的流行,網絡上絕大多數的微視頻網站都採用了Flv格式來播放視頻。
在互聯網上播放視頻,有兩種方式,一種是文件方式,即通過HTTP協議訪問視頻文件,這種方式的缺點是不能從特定的幀開始播放;另外一種就是採用專門的流媒體服務器,這種方式的缺點是要搭建複雜的流媒體服務器。不過,現在有了一種集合了以上兩種方式優點的一種解決方案,即通過HTTP來實現僞流媒體。本文描述的就是這樣的一種解決方案。
首先配置nginx服務支持flv模塊功能
⑴查看你的nginx是否已支持flv功能模塊
[root@localhost ~]# /usr/local/nginx/sbin/nginx -V //查看nginx服務支持
結果:
nginx version: nginx/0.8.24
built by gcc 4.4.4 20100726 (Red Hat 4.4.4-13) (GCC)
configure arguments: --prefix=/usr/local/nginx --with-http_flv_module --with-http_gzip_static_module --with-http_stub_status_module
分析:我的nginx版本0.8.24,http_flv_module已經開啓,支持flv服務
⑵安裝支持flv模塊的nginx服務器:
#tar zxvf nginx-0.8.24.tar.gz
#cd nginx-0.8.24
#./configure --prefix=/usr/local/nginx --with-http_flv_module --with-http_gzip_static_module --with-http_stub_status_module //開啓flv模塊
#make && make install
#/usr/local/nginx/sbin/nginx //啓Nginx
⑶nginx服務器配置(nginx.conf文件)
server
{
listen 80;
server_name localhost;
charset utf-8;
location / {
root html;
index index.php index.html index.htm;
}
location ~ \.flv {
flv;
limit_rate_after 10m;
limit_conn one 1;
limit_rate 85k;
}
}
使用location 將 .flv的文件指向flv模塊即可。
以上使用了limit_rate 是爲了限速,當 flv視頻下載超過10M,則限速到85K,只允許用戶開1個進程,也就是先快速緩存可以播放,後面的慢慢下載。
⑷安裝支持flv拖放進度條的播放器
上面三步都是安裝支持nginx服務支持flv功能的,現在需要支持flv拖放進度條的播放器.
你需要有一個能夠播放Flv視頻的播放器,很顯然,它還需要能夠嵌入到網頁中。目前比較流行的,功能上也還比較完善的一個Flv播放器就是 JW FLV Media Player(也稱爲 jwplayer)。它的網址是:
http://www.longtailvideo.com/players/jw-flv-player/
這個播放器支持視頻加入廣告和視頻節目單功能,
下載包裏面有很全的實例和使用方式,
將包中的player.swf(如果是帶有Viral插件的,就是player-viral.swf)放到你的網站內,這就是用來提供視頻播放的播放器。至於包中其它的文件,都可以不要。
接下來,將播放器嵌入到你的視頻播放網頁中:
直接嵌入,使用Object/Embed代碼嵌入:
<embed
type="application/x-shockwave-flash"
id="player2"
name="player2"
src="player.swf"
width="328"
height="200"
allowscriptaccess="always"
allowfullscreen="true"
flashvars="file=http://192.168.40.135/test.flv&image=http://192.168.40.135/preview.jpg&autostart=false&type=http&streamer=start"
> </embed>
file:"video.flv", // FLV視頻地址
type:"http", // 數據類型,本文是基於http模式的,這個必須寫滴
image:"preview.jpg",// 開始播放之前的預覽圖
autostart:"false", // 是否自動播放
streamer:"start", // 參數爲 “start”,這個參數用於傳遞給服務器從特定的關鍵幀開始播放,nginx編譯了 flv 模塊 所以是支持的。。
⑸添加關鍵幀
如果一個Flv視頻要能夠被拖到特定點播放,該Flv需要在其metadata中有關鍵幀的信息。如果你的Flv視頻製作的時候沒有這些信息,也是不能拖放播放的。可以使用yamdi來爲你的視頻加上關鍵幀信息 :
安裝:
1 [root@localhost ~]#wget http://sourceforge.net/projects/yamdi/files/yamdi/1.4/yamdi-1.4.tar.gz/download
2 [root@localhost ~]#tar zxvf yamdi-1.4.tar.gz
3 [root@localhost ~]#cd yamdi-1.4/
4 [root@localhost yamdi-1.4]#make && make install
使用方法:
yamdi -i source.flv -o dest.flv //原視頻 輸出視頻