ffserver配置

ffserver與x264 收藏
      最近打算學習h264,用windows版的git把x264的整個開源工程下載下來了,打算去看一下,同時儘量多做一些實踐運用,這個工程應該和介紹h264的標準文檔結合起來看,其中涉及很多圖像處理的專業和技術性問題,涉及linux和一些數學知識(離散餘弦變換DCT,傅里葉變換等)的運用,我對linux和這些數學知識都比較陌生,看來要花很多時間去學習了。

      windows版的git我使用的是msgit,在http://code.google.com/p/msysgit/downloads/list下載,安裝後在Git Bash使用命令git clone git://git.videolan.org/x264.git下載開源工程。

    在linux下使用ffplay播放視頻時,需要安裝sdl庫,要讓sdl支持ffplay,又要先安裝xorg-dev。安裝xorg-dev的方法是在liunx終端輸入sudo apt-get install xorg-dev(ubuntu發行版)

      ffserver是ffmpeg開源工程的一部分,主要用於把經過ffmpeg程序格式轉換和編碼後的數據(包括視頻、音頻、字幕、元數據等)流化,將數據封裝在NAL包中便於網絡傳輸,目前支持TCP和RTP協議。

      ffserver的配置文件如下:

view plaincopy to clipboardprint?
·········10········20········30········40········50········60········70········80········90········100·······110·······120·······130·······140·······150
Port 8090  
BindAddress 0.0.0.0  
 
MaxHTTPConnections 2000  
MaxClients 1000  
 
MaxBandwidth 1000  
CustomLog -  
 
# Suppress that if you want to launch ffserver as a daemon.  
NoDaemon  
 
<Feed feed1.ffm> 
File /tmp/feed1.ffm  
FileMaxSize 200K  
 
</Feed> 
 
<Stream test.flv> 
Feed feed1.ffm  
Format flv  
StartSendOnKey  
</Stream> 
 
<Stream cloudTest.flv> 
File "cloud.flv"  
Format flv  
</Stream> 
 
<Stream stat.html> 
Format status  
 
ACL allow localhost  
ACL allow 192.168.0.0 192.168.255.255  
</Stream> 
 
<Redirect index.html> 
URL http://www.ffmpeg.org/  
</Redirect> 
Port 8090
BindAddress 0.0.0.0

MaxHTTPConnections 2000
MaxClients 1000

MaxBandwidth 1000
CustomLog -

# Suppress that if you want to launch ffserver as a daemon.
NoDaemon

<Feed feed1.ffm>
File /tmp/feed1.ffm
FileMaxSize 200K

</Feed>

<Stream test.flv>
Feed feed1.ffm
Format flv
StartSendOnKey
</Stream>

<Stream cloudTest.flv>
File "cloud.flv"
Format flv
</Stream>

<Stream stat.html>
Format status

ACL allow localhost
ACL allow 192.168.0.0 192.168.255.255
</Stream>

<Redirect index.html>
URL http://www.ffmpeg.org/
</Redirect>
 

打開linux下的一個終端(相當於打開windows下的一個命令行窗口),進入ffmpeg工程的目錄,輸入./ffserver -f doc/ffserver.conf &

按回車,就把ffserver啓動了,如果啓動不了,可以改一下ffserver.conf 文件中的端口號配置試一下。

      這時在瀏覽器地址欄輸入http://localhost:8090/stat.html就可以看到打開的ffserver的概況,就現在這個配置文件而言,從這個網頁上可以看到有兩個流被ffserver輸出,一個是test.flv,一個是cloudTest.flv,其中test.flv流需要ffmpeg先把數據編碼放在/tmp/feed1.ffm文件中,然後ffserver把feed1.ffm文件中的數據流化成test.flv;而cloudTest.flv流則是最簡單的,ffserver直接把本地文件cloud.flv流化爲cloudTest.flv,其中不需要ffmpeg參與格式轉換和編碼,所以這個流比test.flv流要流暢很多

     再打開一個linux終端,在其中輸入./ffplay http://localhost:8090/cloudTest.flv就可以直接播放視頻文件了。但是輸入./ffplay http://localhost:8090/test.flv則訪問不了,因爲這時ffmpeg還沒有開始編碼數據,這時tmp/feed1.ffm文件都不存在。

     再打開一個linux終端,在其中輸入./ffmpeg -i dog.avi http://localhost:8090/feed1.ffm,同時在另一個終端輸入./ffplay http://localhost:8090/test.flv,這時才能訪問這個流,觀看視頻的時候會發現視頻播放的很不流暢

     ffserver.conf文件有幾個特別關鍵的配置,一個是輸出流的格式,目前的格式是flv,如果是avi或者asf就不行,就訪問不了輸出流,其他的格式還沒有試過;一個是FileMaxSize,如果它小於了本地文件dog.avi文件的大小,則只能播放dog.avi文件的一部分

     此外,ffserver還能流化攝像頭實時採集的視頻,但我還沒嘗試過。

 

本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/mu399/archive/2010/09/03/5860887.aspx

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章