【发布时间】:2018-04-03 23:52:58
【问题描述】:
借助 MediaRecorder,我正在录制我的网络摄像头的短视频大约 1 秒。录制视频后,我将其推入桌子。最后,当我将一些视频推送到表格中时,我会尝试一个接一个地阅读每个视频(就像只有一个大视频)。但是我在每个视频之间都有某种黑框。就好像视频之间的过渡并不完美,阅读时断断续续。有人能告诉我它发生的原因吗?
这是我用来录制小视频的部分代码:
navigator.mediaDevices.getUserMedia().then(function(media_stream) {
var recorder = new MediaRecorder(media_stream);
recorder.start();
recorder.onstart = function(event) {
setTimeout(function(){ recorder.stop(); }, 1000);
};
recorder.ondataavailable = event => {
tableau_rondelle.push(event.data);
};
recorder.onstop = function(event) {
recorder.start();
};
})
.catch(function(error) {});
这是我用来阅读大视频的部分代码:
document.getElementById("video_output").onended = function(event) {
document.getElementById("video_output").src = URL.createObjectURL(tableau_rondelle.shift());
};
document.getElementById("video_output").src = URL.createObjectURL(tableau_rondelle.shift());
谢谢。
【问题讨论】:
-
解码器正在视频之间重新初始化。自定义格式可能需要不会重置解码器的自定义播放器。
-
在 Szatmary:感谢您的帮助!好的,那么您是在告诉我更改录音的格式吗?目前我正在使用 mimeType: "video/webm" 录制视频。我必须更改此信息吗?
-
你需要告诉玩家这是一个碎片化的格式。像 HLS 或 DASH。
-
我是全新的 html 5 自适应流媒体。假设我想在服务器上设置一个自适应流媒体源,以便在 HTML5 媒体元素中使用。应使用 MPEG-DASH。但这就是我想要的吗?我想从客户端 A 录制短视频,然后通过 websocket 将视频发送到客户端 B。然后,从客户端 B 的目标是一个接一个地播放该文件,每个视频之间没有黑帧(即没有重置解码器)。我不想将文件保存在服务器上,然后将其流式传输到客户端。您认为 MPEG-DASH 仍然是解决方案吗?
-
堆栈溢出不是本次讨论的正确位置。你应该做一些研究并自己决定什么是你项目的最佳解决方案,讨论应该在另一个论坛上进行。堆栈溢出最好作为一个问题,每页一个答案。祝你好运。
标签: video blob mediarecorder chunks mediastream