生娃了,断断续续补充完整
--------------------------------
项目需求,无法用webrtc方式播放视频流,考虑采用定时获取视频图像的方式,达到类似的效果。
即网络环境不允许服务端推送视频流给客户端,只能客户端自己来获取(视频或者图片),获取视频的方式(RTMP,HLS)都是保存小视频段的方式,延迟比较明显,3-5s,可能也是技术积累有限吧。获取图片的方式,其实延迟倒还好,但是丢帧比较严重,而且没声音,看项目需要吧,暂时先用这种方式来。之前在unity的webgl方式在三维里面显示视频其实就是把Html的Video的视频图像转换并保存到Unity中,Unity里面刷新显示一帧一帧的图片,刷新率太高会影响Unity性能,太低则丢帧严重。100ms似乎还算平衡。
具体来说,Kurento有个RecorderEndPoint,将PlayerEndPoint连接上RecorderEndPoint后,就能将视频保存到本地了,理论上。
总之使用代码是:
实际操作中碰到一些问题。第一个问题是权限,保存的目录必须是tmp文件夹下面的,为创建的目录,kurento会自己创建相应的目录和文件。如果保存到其他目录下,则创建失败,而且没有任何错误提示。
recorder.record(new Continuation<Void>() {
@Override
public void onSuccess(Void aVoid) throws Exception {
//log.info("recordonSuccess");
//无论是否保存都会进入这里
//目录没有权限无法保存的情况下也会进入这里。
}
@Override
public void onError(Throwable throwable) throws Exception {
log.info("recordonError:"+throwable);
}
});