如何使用服务器上的ffmpeg从WebRTC流中获取音频和视频

时间:2014-11-27 12:41:50

标签: ffmpeg webrtc sdp

我正在尝试从WebRTC流中获取音频和视频,并在ubuntu服务器上使用ffmpeg处理它(转码或转储)。我天真地期望它只是解释WebRTC提供的sdp,但是错了。我怀疑ffmpeg无法回复sdp的回复信号,必须手动完成。这是一个报价sdp:

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 个答案:

答案 0 :(得分:4)

没有"某事"是不可能的在流源(peer)和ffmpeg之间;直到和除非ffmpeg开始使用DTLS并且您知道对等体的哈希信息(显然这可能在SDP中)。总而言之,ffmpeg需要DTLS和ICE支持。另一种方法是使用GStreamer和插件。