当我们接入阿里云的视频直播功能后,我们想让录制好的视频存储到oss上,并让阿里回调我们服务器写好的接口,获取存储到oss上的路径,存入数据库,以便用户查看回放记录。
如图:配置到该配置,官网上有自己搞就完了。
当阿里回调到我们服务器写好的接口的时候,有个小的处理细节是阿里返回的 request 中的格式是:
] call --> synLiveVideoUrl ==> {"domain":"livepull.jianlet.com","app":"jianlet","stream":"xxxa8ry","uri":"livexx/record/xxx/xxxx/2020-09-17-14-56-07_2020-09-17-14-56-47.mp4","duration":39.154,"start_time":1600325766,"stop_time":1600325807}
我们需要无法直接用request 对象提供的方法获取指定的值,需要转换成 JSONObject 类型然后获取需要的值,
小小工具类如下:
// 字符串读取
public static String ReadAsChars(HttpServletRequest request) {
BufferedReader br = null;
StringBuilder sb = new StringBuilder("");
try {
br = request.getReader();
String str;
while ((str = br.readLine()) != null) {
sb.append(str);
}
br.close();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (null != br) {
try {
br.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return sb.toString();
}
-------------------------------------------
回调方法中直接使用 :
String sr = ReadAsChars(req);
logger.info("call --> synLiveVideoUrl ==> {}", sr);
JSONObject jsStr = JSONObject.parseObject(sr);
转换成json后,再获取url路径等信息存储到我们自己数据库里面。