2017-05-03 74 views
0

我已經使用Wireshark將視頻呼叫保存到.pcap文件,並且我想從RTP數據包中獲取視頻。 RTP包有效載荷類型是vp8,我可以通過使用C++中的libpcap庫找到vp8 RTP包。然後我將所有RTP vp8數據包的內容保存到一個文件中。但我無法通過使用ffmpeg將此原始vp8數據轉換爲.mp4。轉換過程中ffmpeg給出錯誤。 的ffmpeg轉換錯誤:無效的數據發現處理輸入將RTP vp8淨荷數據包保存爲.webm文件

是怎麼得到VP8 RTP包.MP4.webm視頻文件的步驟是什麼時候?

編輯:我可以得到除VP8有效載荷描述符,有效載荷頭和關鍵幀頭之外的原始VP8數據。然後我說每個VP8原始幀IVF頭和幀頭,根據IVF文件 IVF Document

但是當我想用ffmpeg的

的ffmpeg -i轉換我的IVF文件(輸出1)至output1.mp4輸出1 -c:v VP8 output1.mp4

我得到的錯誤

convertion error

+0

「然後我將所有RTP vp8數據包的內容保存到一個文件中。」 - 你保持數據包邊界嗎?即它只是二進制連接的垃圾或每個數據包仍然是一個單獨的VP8幀與有效的時間戳等? –

+0

我得到所有包括VP8的RTP數據包,然後我從這些數據包中提取了RTP頭,並保存了RTP有效載荷數據。我保存的數據只是連接的RTP有效負載。現在我想從原始數據中獲取視頻。可能首先,我必須找到每個幀的邊界,然後我必須爲每個幀添加一個頭以便能夠以vp8格式播放。 我可以通過使用S位和部件ID來提取vp8有效負載標頭。所以我認爲我可以找到每個框架的邊界。 – Ibrahim

回答

1

JanusGateway是有功能的RTP轉換(VP8/VP9/H264 /作品)到(webm/mp4)。它只會將RTP編碼到相應的容器(webm/mp4/opus),不包括代碼轉換器。

您可以使用ffmpeg將其轉碼爲任何其他格式。

簡而言之,janus將store通過在每個數據包中添加一個前綴頭文件在一個文件中。然後,我們可以使用後處理器將vp8 RTP數據包轉換爲webm。

https://github.com/meetecho/janus-gateway/blob/master/postprocessing/pp-webm.c

你可以看到現場demo & Documentation

+0

我可以得到原始VP8數據,不包括.VP8有效載荷描述符,標題和關鍵幀標題。然後根據ivf文件爲每個vp8原始幀添加ivf頭和幀頭。 https://wiki.multimedia.cx/index.php/IVF 但是當我想用ffmpeg的 的ffmpeg轉換我的IVF文件(輸出1)至output1.mp4 -i輸出1 -c:v VP8輸出1。 mp4 我收到錯誤 無效的同步代碼48c11d。並且無法在流#0中找到編解碼器vp8的標記,容器中當前不支持編解碼器 無法爲輸出文件#0編寫標頭(不正確的編解碼器參數 – Ibrahim

+0

任何人都可以提供有關必須爲每個vp8添加的前綴標頭詳細信息的信息框? – Ibrahim

+0

我可以將RTP(VP8數據包)從wireshark pcap轉換爲webm嗎?JanusGatway是否使用IVF頭? –