2016-04-22 76 views
2

我無法弄清楚如何合併2個UDP源(1音頻,1個用於視頻),seperately這是很容易的,但不知道如何將它們合併爲一個小白,我知道我非常接近Gstreamer管道合併2 udp源到rtmp?

gst-launch-1.0 rtpbin name=rtpbin rtpbin.recv_rtp_sink_ \ 
! udpsrc port=6004 caps="application/x-rtp, media=(string)video,clock-rate=(int)90000,payload=(int)96,encoding-name=VP8-DRAFT-IETF-01" \ 
! rtpvp8depay \ 
! queue \ 
! mux. rtpbin.recv_rtp_sink_ \ 
! udpsrc port=6005 caps="application/x-rtp, media=audio, clock-rate=48000, encoding-name=X-GST-OPUS-DRAFT-SPITTKA-00, payload=111,channels=2" \ 
! rtpopusdepay \ 
! queue \ 

...?

回答

1

我不知道確切的答案,但我會走這條路(我們可以協商通過評論一些解決方案:)):

gst-launch-1.0 flvmux name=mux ! rtmpsink udpsrc port=6004 caps="application/x-rtp, media=(string)video,clock-rate=(int)90000,payload=(int)96,encoding-name=VP8-DRAFT-IETF-01" ! rtpvp8depay ! vp8dec ! queue ! x264enc ! mux. udpsrc port=6005 caps="application/x-rtp, media=audio, clock-rate=48000, encoding-name=X-GST-OPUS-DRAFT-SPITTKA-00, payload=111,channels=2" ! rtpopusdepay ! queue ! opusdec ! voaacenc ! aacparse ! queue ! mux. 

爲什麼這條管道:

  • 有三個後來連接在一起的管線部分,

1,首先是flvmux鏈接到rtmpsink,注意沒有!簽署此部分和明年udpsrc部分

2之間 ,udpsrc 首先需要從VP8解碼的視頻部分,然後再編碼成H264作爲 flvmux確實明白只有H264(我猜對VP8的支持,你可以 檢查)

它是從原始的PCM音頻導致 鉅著解碼,然後在AAC編碼爲flvmux似乎並不理解原始音頻

  • MUX在此之後可以去rtpmsink 3,udpsrc音頻部分這將會它傳輸到指定位置(我不是很熟悉這個格式)

請記住,在其中元素出現的順序是創造的只是順序,它不聯動的順序..但是我認爲如果你想鏈接它們,那麼首先必須存在這些元素,因此我在開始時就使用了flvmux來使用mux。名稱稍後(這是別名)。 我創建了這3個管道部分,然後將它們與多路複用器的使用關聯起來。別名..

+0

我欣賞努力,但不工作只是錯誤的錯誤語法錯誤,我認爲命令必須按順序,並有最後的水槽? – user6238466

+0

不,他們不需要按順序..元素的正確鏈接必須是正確的,它是..我沒有得到錯誤的語法錯誤..但它不是爲我工作,所以我重寫了它,現在它應該正在工作(我更新了答案) – nayana

+0

@ user6238466我更新了答案.. – nayana