2015-12-20 50 views
0

我必須處理傳入和傳出流的rtp媒體。輸入流來自不同的軟件電話,輸出流輸入到差異電話。所以它是一個媒體轉播。對於這兩個流,我需要將它們放入抖動緩衝區,然後以恆定的比特率播放它們。 該框架令我困惑。我在on_rx_rtp處理程序中添加代碼。我首先將有效載荷分解爲幀,並將每幀放入抖動緩衝區。 現在我何時何地獲得框架? 在不同的線程?或者一個事件或者在緩衝區滿了70%之後的同一個線程中? 即使我這樣做,我如何將幀組合成一個有效載荷然後發送出去?我必須使用transport_send_rtp發送數據包,而不是內在的pjmedia流或端口框架? 任何幫助將被認可。如何處理pjsip/pjmedia框架中的抖動緩衝區?

回答

1

對於媒體中繼,您可能根本不需要抖動緩衝。從發件人(A)收到信息後立即將信息包發送給收件人(B)。您可以假設A正在以正確的速率發送數據包,而B具有自己的抖動緩衝區,並且立即轉發數據包不會增加任何明顯的延遲(這也是任何緩衝的缺點)。

如果您需要轉碼功能或能夠修改通過的音頻,但您希望使用pjmedia流和會議橋,而不是手動處理每個數據包,則可能需要使用抖動緩衝區。

+0

如果我收到來自發件人A的數據包並需要重新排序,那該怎麼辦?我在想,一旦我收到來自發件人A的數據包,我就會緩衝它,然後就是當我感到困惑時,以及什麼時候得到它。所以我想,當我填充了70%的緩衝區時,我會做一個get_frame調用,但後來我不知道如何將幀組合成一個有效載荷併發送給它,因爲有一個pjemdia_port_put_frame可以使用,但由於我沒有使用我無法使用該API的pjmedia流框架。 :( – Hooli

+0

另外,我會接收來自發送者B的數據包,它是A的接收者,而A是發送者B的接收者。所以,它的一種RTP使用中繼代理轉發。我不認爲我可以使用流框架因爲它在轉發時是嚴格的,它有自己的on_rx_rtp處理程序,但我需要修改這個非常處理程序以便中繼數據包 – Hooli

+0

我應該使用pjmedia_port_create創建一個手動端口來放置一個幀嗎? – Hooli

相關問題