顯示具有 Red5 標籤的文章。 顯示所有文章
顯示具有 Red5 標籤的文章。 顯示所有文章

2009年2月5日 星期四

簡易的即時視訊和語音串流

又花了點時間玩了一下 Red5,做了一個簡單的即時視訊和語音的串流。大概了解了即時串流的實作方法,看來可以將進度往前到資料庫的部分了。

(傳送示意圖)

最左邊的是傳送端,右手邊兩個是接收端。因為都在本機,所以看不到延遲的現象。

2009年2月2日 星期一

Red5 - HTTP 404 Error

Red5 在安裝時,預設就會將 Red5 安裝成服務。所以,系統重新啟動時,不用再執行 Red5.bat 來啟動。否則,Red5.bat 照樣可以執行,也不會出現 Port Binded 的錯誤,看似一切正常,結果只會回傳 HTTP 4o4 Error。

剛剛就耍了這個笨一下... 這應該可以算是 Red5 的 Bug,沒處理到重複執行的問題。

Red5 - onBWDone Error

用 Flex 寫了個將視訊和語音傳到 Red5 的小程式,結果卻發生了 ReferenceError: Error #1069: Property onBWDone not found on StreamTest and there is no default value 的錯誤訊息,Google 了一下,還好有人提供了解決方法,省了我這個 Flex 新手許多時間。

參考資料 : http://www.toybot.nl/blog/?p=28
( 雖然文中方法是用在正統的 Flash Media Server 上,但是理念是相同的。)

簡單來說,這個錯誤發生的原因是因為串流傳送到伺服器時,會對用戶端的頻寬進行測試,並給予適當的傳輸限制。因為我是將串流傳送到 webapps/oflaDemo 下,看了一下原始碼,果然...


public boolean appConnect(IConnection conn, Object[] params) {
// Trigger calling of "onBWDone", required for some FLV players
measureBandwidth(conn);
if (conn instanceof IStreamCapableConnection) {
IStreamCapableConnection streamConn = (IStreamCapableConnection) conn;
SimpleConnectionBWConfig bwConfig = new SimpleConnectionBWConfig();
bwConfig.getChannelBandwidth()[IBandwidthConfigure.OVERALL_CHANNEL] =
1024 * 1024;
bwConfig.getChannelInitialBurst()[IBandwidthConfigure.OVERALL_CHANNEL] =
128 * 1024;
streamConn.setBandwidthConfigure(bwConfig);
}
}

解決方法也很簡單,只要對你的 NetConnection 物件的 client 屬性指到 this,

var nc:NetConnection = new NetConnection();
nc.client = this;


和實作下面這個方法就行了


public function onBWDone():void
{
//codes...
}