将WebRTC流转储到文件

时间:2014-09-09 14:03:19

标签: ffmpeg webrtc rtp avconv

如果音频和视频需要各自的文件,我想将WebRTC流中的音频和视频捕获到文件或文件对。音频和视频没有多路复用,并且已知可在一组服务器udp端口上使用:

Port   Encoding
5000 - VP8 video
5001 - RTCP (for video)
5002 - Opus audio @48kHz 2 channels
5003 - RTCP (for audio)

SDP文件/数据不可用,可能会使用DTLS。

我宁愿使用avconv或ffmpeg来捕获流,除非建议使用更好的工具。

编辑:我发现这个被查询的内容很可能无效。除非另有说明,否则这些工具都不支持初始DTLS握手,而是通过SRTP进行数据传输。

1 个答案:

答案 0 :(得分:1)

Gstreamer-1.0管道可以正常工作。我不是100%肯定将两个流重新组合在一起,但我相信它是可能的(可能是oggmux)。我测试了类似的东西,并能够在Linux设备上解码和播放流,通过网关接收解密/解复用的rtp流(我使用Janus-Gateway)。

gst-launch-1.0 rtpbin name=rtpbin udpsrc name=videoRTP port=5000 \
    caps="application/x-rtp, media=video, encoding-name=VP8-DRAFT-IETF-01, payload=100" ! \
    rtpbin.recv_rtp_sink_0 rtpbin. ! rtpvp8depay ! webmmux ! queue ! filesink location=video.webm sync=false async=false \
    udpsrc name=videoRTCP port=5001 ! rtpbin.recv_rtcp_sink_0 \
    udpsrc name=audioRTP port=5002 \
    caps="application/x-rtp, media=audio, clock-rate=48000, encoding-name=X-GST-OPUS-DRAFT-SPITTKA-00, payload=96" ! \
    rtpbin.recv_rtp_sink_0 rtpbin. ! rtpopusdepay ! oggmux ! filesink location=audio.ogg sync=false async=false \
    udpsrc name=audioRTCP port=5003