У меня последняя версия Chrome:
var options = { mimeType: "video/webm;codecs=vp8" };
internalMediaRecorder = new MediaRecorder(internalStream, options);
internalMediaRecorder.ondataavailable = function (blob) {
// put blob.data into an array
var src = URL.createObjectURL(blobData.segment);
const $container = $("body");
const $video = $("<video id='" + blobData.ts + "-" + blob.data.size + "' controls src='" + src + "'></video>").css("max-width", "100%");
$container.prepend($video);
// if I stop/start the recorder, I get playable segments here, separated by unplayable mini-segments from onDataAvailable because I call stop right after processing a video. I can "approximate" desired behavior by doing this and then ignoring blobs that are less than some threshhold to ignore the "dead gap" segments.
}
internalMediaRecorder.start(segmentLengthInMs); // every 5s
Затем я составляю массив из 5 сегментов - данные blob доступны. Однако когда я создаю URL-адрес для каждого из этих сегментов:
URL.createObjectURL(videoSegment)
Воспроизводится только первое видео. Почему это?
ОБНОВЛЕНИЕ
Если я останавливаю / запускаю рекордер в onDataAvailable
, я получаю здесь воспроизводимые сегменты, разделенные невоспроизводимыми мини-сегментами из onDataAvailable, потому что я вызываю остановку сразу после обработки видео. Я могу «приблизить» желаемое поведение, сделав это, а затем игнорируя капли, размер которых меньше некоторого порогового значения, чтобы игнорировать сегменты «мертвого промежутка». Это пахнет ногами, и я бы хотел, чтобы работала правильная сегментация, если это возможно.