【问题标题】:Dump WebRTC stream to a file将 WebRTC 流转储到文件中
【发布时间】:2014-09-09 14:03:18
【问题描述】:

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

端口编码 5000 - VP8 视频 5001 - RTCP(用于视频) 5002 - Opus 音频@48kHz 2 通道 5003 - RTCP(用于音频)

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

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

编辑:我发现这很可能不起作用。除非我听到其他消息,否则这些工具都不支持初始 DTLS 握手,然后是通过 SRTP 传输数据。

【问题讨论】:

  • WebRTC 的问题是所有内容都使用 DTLS 加密,因此如果不构建/使用整个中间层就对其进行解码,那么你就不走运了。据我所知,没有一种方法可以关闭 DTLS 以检查所有内容。

标签: ffmpeg webrtc rtp avconv


【解决方案1】:

Gstreamer-1.0 管道可以正常工作。我不是 100% 确定将两个流重新混合在一起,但我相信这是可能的(可能是 oggmux)。我已经测试了类似的东西,并且能够在通过网关接收解密/解复用的 rtp 流的 linux 设备上解码和播放流(我使用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

【讨论】:

  • 这是否处理 DTLS 握手和 SRTP 数据?
  • Janus-Gateway 确实处理 DTLS 握手并允许访问未加密和解复用的 RTP/RTCP 数据包。爱立信研究部为他们的 OpenWebRTC 平台开发的 custom Gstreamer plugins 我没有弄乱,但我还没有尝试过那个框架。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-05-25
  • 2013-04-21
  • 1970-01-01
  • 2018-10-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多