我已经为音频呼叫构建了一个不错的应用程序,非常感谢 MediaSoup !
为了更上一层楼,我需要记录我的一些电话。我使用了这个教程作为参考: mediasoup 录制演示
我遵循了 FFmpeg 的方式,并且已经达到了创建一个 plainTransport 的地步
router.createPlainTransport({
// No RTP will be received from the remote side
comedia: false,
// FFmpeg and GStreamer don't support RTP/RTCP multiplexing ("a=rtcp-mux" in SDP)
rtcpMux: false,
listenIp: {ip:"0.0.0.0", announcedIp:"MY_PUBLIC_IP"},
});
然后我连接到这个传输:
rtpPlainTransport.connect({
ip: 127.0.0.1,
port: "port1",
rtcpPort: "port2",
});
我的第一个疑问:上面提供的 .connect({}) 参数中的 IP 地址是否正确?
其次,FFMPEG 命令需要一个 SDP 标头。这是我的:
v=0
o=- 0 0 IN IP4 127.0.0.1
s=-
c=IN IP4 127.0.0.1
t=0 0
m=audio port1 RTP/AVPF 111
a=rtcp:port2
a=rtpmap:111 opus/48000/2
a=fmtp:111 minptime=10;useinbandfec=1
当我开始录制时,FFMPEG 进程没有收到任何数据。此外,在停止时,我收到以下消息
输出文件为空,未编码(检查 -ss / -t / -frames 参数是否使用) 正常退出,收到信号 2. 录制过程退出,代码:255,信号:null
当服务器本身在本地主机上运行时,我能够使用 127.0.0.1 将录音保存在本地主机上。
但是,使用 Nginx 托管的实际服务器,我无法弄清楚出了什么问题。
我可以看到正在我的音频端口上发送的数据:
1 0.000000000 127.0.0.1 → 127.0.0.1 UDP 117 10183 → 5004 Len=75
2 0.020787740 127.0.0.1 → 127.0.0.1 UDP 108 10183 → 5004 Len=66
3 0.043201757 127.0.0.1 → 127.0.0.1 UDP 118 10183 → 5004 Len=76
我该如何处理 FFmpeg 以便它开始录制!?
有人可以帮忙吗?