2014-09-01 381 views
3

我在C#中使用託管媒體聚合 - https://net7mma.codeplex.com/解碼H264幀C#

我具有接收RTP幀在H264(有效負載類型96)編碼的RTSP客戶端。 我希望能夠將幀保存到視頻文件中,並且可以打包告訴視頻何時開始\結束。

我做了一些閱讀,我讀到了一個問題來解碼H264幀一個接一個..真的不明白爲什麼。

這裏是方法是提高了,我收到

void Client_RtpFrameChanged(object sender, Media.Rtp.RtpFrame frame) 
{ 
    // Decode 
} 
  1. 有人可以解釋爲什麼它的一個問題來解碼H264幀一個接一個每個RTP幀?
  2. 有沒有一個開放源代碼/圖書館/ DLL爲此?

非常感謝!

+0

您只能逐個解碼IDR幀,因爲所有其他幀類型都會引用其他幀。例如,IDR幀之後的P幀將引用IDR幀,因此您需要同時解碼P幀。 – wimh 2015-12-18 23:02:42

回答

0

在RtspServer項目中有一個包含的類。

類是RFC6184Media,它包含打包和depacketiation方法和處理所有定義的NAL單元類型。

在調用解包存在一個緩衝區包含原始比特流有效載荷,你將不得不增加一個起始碼包括0x000001,然後包含在原始比特流中的數據。

該項目的討論區有幾個例子。

之後,您可以將流送入解碼器進行解碼,然後纔可以顯示幀;通常通過從Yuv到Rgb的轉換分別進行編碼時使用的子採樣。

我可以看到關於增加一個小的演示爲對應於一個框架,並展示如何達到預期結果的幾個靜態數據包。

在未來,如果你做的項目頁面上的討論,我可能會得到它快得多。

+0

我最近更新了源代碼以包含這樣一個示例,如果您有任何其他問題,請告訴我。 – Jay 2015-12-21 15:57:21