Twilio Video API录制文件获取问题求助(C#后端)
解决Twilio Video API获取录制文件的问题
我之前也踩过这个文档和实际行为不符的坑!你碰到的情况是因为Twilio Video的/Recordings/{RecordingSid}/Media端点现在直接返回录制文件的二进制数据,而不是官方文档里描述的包含location字段的JSON响应——这确实是文档更新不及时导致的误解。
正确的获取方式(直接保存二进制文件)
你不需要再尝试解析JSON了,直接把API返回的二进制内容保存为MKV文件即可。修改你的代码如下:
const string apiKeySid = "SKXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"; const string apiKeySecret = "byt32MXXXXXXXXXXXXXXXXXXXXX"; TwilioClient.Init(apiKeySid, apiKeySecret); string recordingSid = sample.RecordingSid; var uri = $"https://video.twilio.com/v1/Recordings/{recordingSid}/Media"; // 发送GET请求获取二进制响应 var response = TwilioClient.GetRestClient().Request(new Request(HttpMethod.Get, uri)); // 校验响应状态并保存文件 if (response.StatusCode == System.Net.HttpStatusCode.OK) { // 将二进制内容写入MKV文件 File.WriteAllBytes("your-recording.mkv", response.ContentBytes); Console.WriteLine("录制文件已成功保存!"); } else { Console.WriteLine($"请求失败,状态码:{response.StatusCode},响应内容:{response.Content}"); }
为什么你之前的尝试失败?
- 用
WebClient.DownloadString()是错误的:MKV是二进制文件,当作字符串处理会破坏编码,导致文件损坏无法播放; - 浏览器直接访问URI需要认证:Twilio的API端点要求Basic Auth(用你的API Key Sid作为用户名,Secret作为密码),所以直接在浏览器打开会提示"Authentication Required";
- 解析JSON的步骤完全多余:现在端点直接返回文件内容,没有JSON结构可以解析。
额外需求:生成临时可访问的公开URL
如果你需要一个不需要认证就能访问的临时链接(比如分享给他人),可以用Twilio的RecordingResource生成签名URL:
var recording = RecordingResource.Fetch(new RecordingResource.FetchOptions(recordingSid)); // 生成有效期为1小时的签名URL(可根据需求调整ValidUntil) var signedMediaUrl = recording.GetMediaUrl(new RecordingResource.GetMediaUrlOptions { ValidUntil = DateTime.UtcNow.AddHours(1) }); // 这个URL可以直接在浏览器或第三方工具中访问 Console.WriteLine("临时访问链接:" + signedMediaUrl);
注意事项
确保你的API Key拥有video:recordings:read的权限,否则会返回权限不足的错误。你可以在Twilio控制台的API Key管理页面检查权限设置。
内容的提问来源于stack exchange,提问作者Umer Khalid
相关产品推荐
相关产品推荐

