2010-09-29 170 views
8

我對h.264的瞭解不多,但問題是我在h.264中的mp4容器中有這個視頻, UDP。通過UDP對h.264編碼視頻進行流式處理

我的問題很簡單,在編碼視頻時可以做些什麼調整,這樣它就可以相當容忍某些「輕微」數據包丟失?

我知道壓縮視頻通常每N幀有一個關鍵幀,然後在它們之間發送增量。我可以想象h.264應該比這更復雜,所以它可能不是那麼簡單。更準確地說,我一直在做一些實驗,並意識到只要從視頻流中移除1024個字節,我就會從丟失和丟失的角度完全「無法播放」。

我想讓它容忍這樣的光線損失,這有可能嗎?

感謝

尼爾森

回答

10

這取決於你正在失去什麼數據。 H264數據流中的一些數據不是可能丟失的數據。例如,如果您在實驗中丟棄了1024個字節,而您恰好是您發送的前1024個字節,那麼您可能丟失了序列參數集和圖片參數集(SPS/PPS),這基本上是告訴解碼器如何解釋傳入的信息。你也可能不能從流中放出一個隨機的1024字節;通常H264是分組化的,所以這種事情不會發生。

因此,H264確實包含一些真正不「可丟棄」的小數據;許多像RTSP這樣的流媒體協議通過明確說明你不應該通過有損傳輸信道發送這種信息,而是在SDP交換(通過TCP發生)期間發送這種信息。就損失容限而言,H264確實具有可以幫助損失容限(ASO,FMO等)的功能,但實際上大多數編碼器不支持它們。如果可以的話,我會用x264;據稱低延遲流媒體配置即使在數據包丟失高達20%或更高的情況下也能很好地工作。如果你的H264已經被編碼了,那麼沒有太多的事情要做。您的視頻已經被編碼,您必須按原樣進行流式傳輸。