2014-11-27 6 views
4

WebRTC 스트림에서 오디오 및 비디오를 가져오고 우분투 서버에서 ffmpeg로 처리 (트랜스 코드 또는 덤프)하려고합니다. 나는 WebRTC가 제공 한 sdp를 간단히 해석 할 것을 순진하게 예상했지만 오해했습니다. 나는 ffmpeg가 대답 sdp를 다시 알릴 수 없다고 의심하고 수동으로해야만한다. 제안 sdp가 있습니다.서버에서 ffmpeg를 사용하여 WebRTC 스트림에서 오디오 및 비디오를 얻는 방법

v=0 
o=Mozilla-SIPUA-33.1 3662 0 IN IP4 0.0.0.0 
s=SIP Call 
t=0 0 
a=ice-ufrag:5e0a74d1 
a=ice-pwd:7446c0eb445117d0018ca2afc5f3ca54 
a=fingerprint:sha-256 76:1B:19:CE:3F:41:C5:4D:64:E6:FD:72:D2:FC:42:E1:98:D4:0F:2B:73:AE:C7:F4:2C:73:2C:E7:9E:DC:6A:EB 
m=audio 23063 RTP/SAVPF 109 0 8 101 
c=IN IP4 188.253.146.208 
a=rtpmap:109 opus/48000/2 
a=ptime:20 
a=rtpmap:0 PCMU/8000 
a=rtpmap:8 PCMA/8000 
a=rtpmap:101 telephone-event/8000 
a=fmtp:101 0-15 
a=sendrecv 
a=extmap:1 urn:ietf:params:rtp-hdrext:ssrc-audio-level 
a=setup:actpass 
a=candidate:0 1 UDP 2128609535 192.168.1.100 4130 typ host 
a=candidate:1 1 UDP 1692467199 188.253.146.208 23063 typ srflx raddr 192.168.1.100 rport 4130 
a=candidate:0 2 UDP 2128609534 192.168.1.100 4131 typ host 
a=candidate:1 2 UDP 1692467198 188.253.146.208 23064 typ srflx raddr 192.168.1.100 rport 4131 
a=rtcp-mux 
m=video 23065 RTP/SAVPF 120 126 97 
c=IN IP4 188.253.146.208 
a=rtpmap:120 VP8/90000 
a=rtpmap:126 H264/90000 
a=fmtp:126 profile-level-id=42e01f;packetization-mode=1 
a=rtpmap:97 H264/90000 
a=fmtp:97 profile-level-id=42e01f 
a=sendrecv 
a=rtcp-fb:120 nack 
a=rtcp-fb:120 nack pli 
a=rtcp-fb:120 ccm fir 
a=rtcp-fb:126 nack 
a=rtcp-fb:126 nack pli 
a=rtcp-fb:126 ccm fir 
a=rtcp-fb:97 nack 
a=rtcp-fb:97 nack pli 
a=rtcp-fb:97 ccm fir 
a=setup:actpass 
a=candidate:0 1 UDP 2128609535 192.168.1.100 4132 typ host 
a=candidate:1 1 UDP 1692467199 188.253.146.208 23065 typ srflx raddr 192.168.1.100 rport 4132 
a=candidate:0 2 UDP 2128609534 192.168.1.100 4133 typ host 
a=candidate:1 2 UDP 1692467198 188.253.146.208 23066 typ srflx raddr 192.168.1.100 rport 4133 
a=rtcp-mux 

아무도 성공하지 못 했습니까? 감사.

+1

SDP를 교환하는 것 외에도 더 많은 단계가 있으므로 webrtc 설정을 처리하기 위해 일종의 게이트웨이가 필요합니다. –

+1

나는 이해한다. 필자는 ffmpeg CLI 매개 변수를 입력 한 다음 수동으로 오퍼를 준비합니다. 필자는 WebRTC 스트림을 수신하는 ffmpeg의 개념을 증명할 필요가 있습니다. – elshnkhll

+2

내가 어떻게 알 수있는 유일한 방법은 게이트웨이를 사용하여 모든 대화를 한 다음 rtp를 파이핑하여 UDP 포트로 보내 FFMpeg 명령을 수신하는 것입니다. 나는 [Janus-gateway] (https://github.com/meetecho/janus-gateway)와 gstreamer의 libav 요소를 사용하여이 작업을 성공적으로 마쳤습니다. 따라서 FFMPeg를 사용하면 비슷한 과정을 거쳐야합니다. –

답변

4

스트림 소스 (피어)와 ffmpeg 사이에 "무언가"가 없으면 불가능합니다. until과 ffmpeg가 DTLS와 함께 작동하기 시작하고 피어에 대한 해시 정보를 알고있을 때까지 (분명히 이것은 SDP에있을 수 있습니다). 요약하면 ffmpeg에는 DTLS 및 ICE 지원이 필요합니다. 또 다른 방법은 플러그인에 GStreamer를 사용하는 것입니다.

관련 문제