2016-09-09 76 views
0

我想要兩個合併兩個MP3輸入RTP流在一起,並將它們保存爲MP3文件,使用下面的命令:如何在ffmpeg中合併兩個輸入rtp流?

ffmpeg -i rtp://127.0.0.1:5004?listen -i rtp://127.0.0.1:5005?listen -filter_complex amerge -ac 2 -c 2 -c:a libmp3lame q:a 4 output.mp3 

其中返回的錯誤綁定失敗:錯誤號-10048發生RTP://127.0。 0.1:5005聽:I/O錯誤

我想在這之前,我第一次嘗試用下面,工作,命令同時合併兩個MP3文件:

ffmpeg -i input01.mp3 -i input02.mp3 -filter_complex amerge -ac 2 -c 2 -c:a libmp3lame -q:a 4 output.mp3 

我人所以試圖單獨獲取每個rtp流並創建一個.wav文件輸出。

ffmpeg -i rtp://127.0.0.1:5004?listen output.wav 

使用UDP我可以合併到流在一起,並創建一個MP3輸出:這還用下面的命令工作

ffmpeg -i udp://127.0.0.1:5004?listen -i udp://127.0.0.1:5005 -filter_complex amerge -ac 2 -c 2 -c:a libmp3lame -q:a 4 output.mp3 

有誰知道兩個RTP流如何被grabed,合併和書面到ffmpeg中的mp3文件?或者這仍然只有一個像2012年支持的rtp流?

回答

0

上述命令的問題是端口號。如果您在某個端口上接收到rtp(通常位於大於1024的偶數端口上),則下一個較大的端口將用於rtcp。

如果您使用第二個流的端口,而其他端口(如rtcp)尚未使用該端口,則該命令可用。

ffmpeg -i rtp://127.0.0.1:5004?listen -i rtp://127.0.0.1:5006?listen -filter_complex amerge -ac 2 -c 2 -c:a libmp3lame -q:a 4 output.mp3 

如果你想要做同樣的原始音頻,它你會得到這樣的錯誤是可能的:

Unable to receive RTP payload type 96 without an SDP file describing it. 

爲了解決這個問題,你必須創建一個RTP有效載荷類型,編解碼器的SDP文件和採樣率並將它們用作ffmpeg輸入。

SDP例如:

v=0 
c=IN IP4 127.0.0.1 
m=audio 2002 RTP/AVP 96 
a=rtpmap:96 L16/16000 

的SDP文件作爲輸入的FFmpeg:

ffmpeg -i a.sdp -i b.sdp -filter_complex ...