我想做的是录制一个用户和另一个用户之间正在进行的视频通话。一旦用户单击录制按钮,视频录制就会开始。但是,我遇到以下问题
Unable to fetch record↵Invalid RecordingSid parameter
我使用rails作为api,使用reactjs作为前端。在 Rails 方面,我做了以下工作
def record
@client = client_authenticate()
puts params["room_sid"]
# RM5XXXXXXX
recording = @client.video.recordings(params["room_sid"]).fetch
puts recording.track_name
end
前端侧
const Controls = ({ handleLeaveRoom, handleMute, handleRecord, mute }) => (
<Wrapper>
<Icon icon={mute ? faMicrophoneSlash : faMicrophone} size="2x" onClick={handleMute} />
<HangCall icon={faPhone} size="2x" onClick={handleLeaveRoom} />
<Icon icon={faDesktop} size="2x" />
<Icon icon={faCloud} size="2x" onClick={handleRecord} />
</Wrapper>
);
const handleRecord = async () => {
try {
const response = await fetch(`${API_BASE}/twilio/record`, {
method: "POST",
body: JSON.stringify({ room_sid: room.activeRoom.sid }),
headers: {
"Content-Type": "application/json"
}
});
console.log("requested");
const jsonResponse = await response.json();
console.log("jsonResponse", jsonResponse);
} catch (e) {
console.error("e", e);
}
}
简而言之,我想在用户按下云端录制按钮时录制正在进行的视频通话,但遇到了上述问题。我发送我们加入房间时收到的 sid。
这里是 Twilio 开发者布道者。
我在文档中找不到任何内容表明您可以在视频中途开始录制。据我所知,您需要 通过 REST API 创建房间并将
recordParticipantsOnConnect
参数设置为 true
,一旦参与者加入,就会记录他们。
在 Rails 端的代码中,您尝试使用房间 SID 请求尚不存在的录音,该房间 SID 是房间的标识符,不适用于录音。这就是该请求失败的原因。
没有 API 端点可以中途开始录制。
我认为现在可以通过录制规则 API 实现这一点:https://www.twilio.com/docs/video/api/recording-rules
我对此进行了实验,发现当我这样做时录音就会开始:
curl -XPOST 'https://video.twilio.com/v1/Rooms/RMxxx/RecordingRules' --data-urlencode Rules='[{"type": "include", "all": true}]' -u 'xxx:xxx'
当我执行相同的命令并将
include
替换为 exclude
时停止。