MediaSource API - перезагрузка записываемого видео MP4

У меня есть видеоклип MP4/H264, который записывается так, что он увеличивается каждые 4 секунды, а его метаданные динамически обновляются. Поскольку это не фрагментированный MP4, я не могу использовать API MediaSource для управления фрагментами.

Я ищу способ обновить/обновить продолжительность видео во время воспроизведения без необходимости перезагрузки всего клипа.

Короче говоря, я ищу способ сделать следующее более удобным для пользователя.

setInterval(function() {
   video.src = video.src;
}, 4000);

Я бы не хотел иметь 2 тега видео и переключаться с одного на другой с помощью описанного выше метода. Я также безуспешно пытался использовать popcorn.js.

Использую Chrome и... только Chrome, поэтому не беспокоюсь о других браузерах.

Любой совет будет принят с благодарностью!


person WooDzu    schedule 02.04.2014    source источник


Ответы (1)


Я не уверен, что это возможно. Согласно характеристики:

Если атрибут src медиа-элемента установлен или изменен, пользовательский агент должен вызвать алгоритм загрузки медиа-элемента медиа-элемента. (Удаление атрибута src этого не делает, даже если присутствуют исходные элементы.)

Поэтому, если вы коснетесь video.src, браузер должен неявно вызвать video.load(). В вашем случае (setInterval) Chrome делает это.

Я думаю, вы уже пошли по пути сохранения currentTime видео перед изменением src и применения его после изменения src (в этом случае дождитесь события canplay и вызовите video.play() для возобновления воспроизведения)? Я предполагаю, что в вашем случае у вас будет некоторое заикание в течение 4 секунд обновления.

Похоже, вы пытаетесь эмулировать прямую трансляцию как канал по запросу, и я не знаю, как это сделать с прогрессивной загрузкой mp4 (читай с нефрагментированным MP4).

Связанная статья.

Спасибо

person Arnaud Leyder    schedule 02.04.2014
comment
Да, подражание — правильный мир здесь. Чтобы было ясно, я действительно не хочу, чтобы видео перезагружалось только с обновленной продолжительностью из обновленных метаданных. Я понимаю, что я не могу просто установить новую продолжительность (даже если бы это было возможно), а скорее способ каким-то образом передать метаданные в MediaElement. Я считаю, что 2 тега видео и перезагрузка всего клипа в фоновом режиме были бы единственным неуклюжим способом сделать это. - person WooDzu; 02.04.2014