==> 2010年1月31日 星期日 <==

UDP下嘅實時音視頻傳輸機制




經歷咗一兩年係項目當中嘅實時音視頻實踐, 覺得要實現好嘅實時音視頻傳輸實屬不易. 以下呢套UDP下嘅實現流程, 係血嘅經驗, 每一點都是來之不易.

全局要點: 視頻可跳, 但聲音不斷.

1. 發送方

(1). 開始時, 編碼I幀, 發送

(2). 接著, 發P幀 ( 聲音與視頻編碼是不同的, 每次真實發送幀前, 讀取錄音緩沖區, 並打包 ), 發N個P幀後, 跳到(1)

(3). 如果在發P幀過程中, 接收到對方發來的 "重發I 幀" 請求, 馬上放棄目前所編碼的幀(視頻幀,不是聲音幀), 跳轉到 (1)

2. 接收方
(1). 建立幀列表, 至少存儲3幀以上才開始播放, 使用順序插入法, 尋找相應幀序號的位置, 並插入.

(2). 播放開始時, 不停從幀列表中取得一幀(由於此時幀列表是順序的,故此取列表頭的那一幀即可), 如果是P幀時則放棄, 直到找到I幀才開始真正播放. 聲音幀不需要等I幀, 只要按著順序播放即可.

(3). 播放過程中, 不停從幀列表中取得一幀進行播放( 聲音播放與視頻播放線程需要分開!!切記! )

(4). 當視頻播放線程發現聲音播放的幀號大於正要播放的視頻2幀以上時, 馬上放棄當前播放的視頻, 並請求對方 "重發I幀", 並一直讀取到幀緩沖列表中大於等於音頻幀號的視頻 "I" 幀為止, 再播放 ( 此處是解決音視頻不同步的情況, 即視頻慢於音頻並隨時間累積 )

(5). 如果在(3) 當中, 發現掉幀了( 要播放的幀號不等於上一次播放的幀號 +1 ), 請求對方 "重發I幀", 並等待下一個 "I幀" (針對的是視頻幀, 音頻幀只要是大於上一次播放的幀號即可以播放 )

3. 上面缺了任何一點, 都會導致播放出現問題.




==> 2010年1月21日 星期四 <==

班得瑞(Bandari)




最近先至發現原來有十幾首好好聽嘅歌,原來喺屬於 Bandari 兩個專輯嘅音樂。再搜索咗一下呢個樂隊嘅信息,好似幾有意思甘,似乎眾說紛紜,有人話呢個樂隊係假嘅,亦有人話呢個樂隊衹係平時好低調,仲有人話 Bandari 係瑞士唱片公司 Audio Video Communications AG(簡稱AVC)嘅產品,似乎最後一種講法比較靠譜,上他們的主頁可以揾到 Bandari 嘅專輯。

似乎 Bandari 華人區更受歡迎,試下係Google搜索一下就知道,如果查英文,基本揾唔到真正同 Bandari 專輯有關嘅信息,但搜索中文網頁就一大堆。

但無關系啦,只要好聽就得~~話知佢係假定系真啦~~