生娃了,斷斷續續補充完整
--------------------------------
項目需求,無法用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);
}
});