我们有一系列运行 OBS 的云服务器,我们代表我们的用户临时启动这些服务器,以便为他们制作直播流。
但是,在启动服务器之前,我们要确保他们提供给我们的 RTMP 端点和/或凭证有效。这是否可以在不实际初始化完整流的情况下完成?
RTMP 规范建议在流式传输之前有一个握手步骤和一个连接步骤,但 TCP/IP 超出了我的专业领域,我已经上下搜索了可能对此有帮助的库,但无济于事。
我曾尝试使用 ffmpeg 等 CLI 工具连接到 RTMP 端点,但这仅在我们实际上也流式传输数据时才有效,并且理想情况下希望在开始实际流之前停止。
任何提示将不胜感激。
您可以使用
rtmpdump
连接到您的 RTMP 服务器并检查响应,这是一个工作示例:
RTMP_URL="rtmp://server-url/live/stream-name"
RTMP_APP="live"
RTMP_USER="username"
RTMP_PASS="password"
# try to connect and check if the server is running
if rtmpdump -r $RTMP_URL -a $RTMP_APP -v -o /dev/null 2>&1 | grep -q "Connected..."; then
echo "server is running"
# check if the credentials are correct
if rtmpdump -r $RTMP_URL -a $RTMP_APP -u $RTMP_USER -p $RTMP_PASS -v -o /dev/null 2>&1 | grep -q "Connected..."; then
echo "credentials are valid"
else
echo "invalid credentials"
exit 1
fi
else
echo "server is not running"
exit 1
fi
exit 0
如果您想使用流密钥而不是用户/密码组合,您可以省略
-u
和 -p
参数并将密钥设置为 RTMP URL 中的路径。