我們有一個應用程序正在生成數據。例如,從攝像機捕獲實時視頻並進行編碼。我們需要知道什麼尺寸可以是一個編碼幀,以便通過網絡發送並毫不延遲地接收。所以說「通過TCP實時視頻流」。它的主要問題是什麼?用戶個人流量負載和服務器整體負載。我們的幀必須具有這樣的大小(這裏的大小==比特率)才能以最小的延遲由服務器接收。在我的情況下,必須使用TCP(我們必須發送所有捕獲的幀,即使它們的質量會下降)如何找出何時增加比特率? (TCP流解決方案)
我們有一個帶有「幀」的流。每個「框架」都有一個「時間戳」。幀具有實際上它們的大小的比特率屬性。我們使用我們的應用程序生成幀,並將它們一個接一個地傳輸到我們的TCP服務器套接字上。與此同時,服務器發佈回覆,以便在每個發送幀之後,我們嘗試從套接字中讀取哪些時間戳記當前在服務器上。如果時間戳低於前一幀,我們將比特率降低20%。這樣的計劃似乎工作給我一種方法vbr(降低),但我不知道如何實施增加?我的意思是我們總是可以嘗試每幀增加5%,直到某個有限的期望值,但是每次我們有延遲都會失去我們流的實時特徵...通常,這樣的方案用於找出有多少網絡流是目前由其他用戶應用程序使用,並給出多少服務器同時加載的圖片,以便我們可以實時傳輸適量的數據以供所有人接收。那麼我應該怎樣做才能增加我的計劃?所以當前比特率爲A時,我認爲我們可以爲3幀加上+ 7%,然後再加上-20%,然後如果3幀+ 7%的時間都及時到達,我們可以給A加14%,並重復循環,如果第二幀會延遲到我們這裏,希望不會很明顯...