RTMP воспроизведение с низкой задержкой с video.js - PullRequest
0 голосов
/ 12 июня 2019

Я пытаюсь воспроизвести RTMP-поток с низкой задержкой, используя HTML5, vido.js и videojs-flash. На данный момент я могу заставить поток отображаться с задержкой 3-4 секунды, но воспроизведение того же потока с помощью ffplay дает задержку менее секунды.

Глядя на более старую версию videojs, кажется, что некоторый код, который позволял указывать flashvars для передачи объекту swf, никогда не объединялся. В более новой версии video.js можно использовать плагин videojs-flash для воспроизведения флэш-видео, и этот плагин поддерживает flashVars в настройках проигрывателя, и эти переменные передаются объекту swf.

Кто-нибудь использовал эту функцию и как я могу предоставить опцию flashVars для объекта videojs.

Это код, который я пробовал до сих пор:

var player = videojs('my-video', {
 autoplay: true,
 muted: true,
 preload: "auto",
 sources: [{
    type: "rtmp/flv",
 }],
 flashVars: {
    buffertime: 0
 }
});

1 Ответ

0 голосов
/ 15 июня 2019

, если нашел ответ на свой вопрос, который значительно уменьшает время ожидания. Пока он не очень стабилен, так как иногда у меня задержка ~ 1 с, но может доходить до 3 с. Решение заключается в использовании исправленного SWF, который будет интерпретировать с учетом параметров буферизации. Теперь инициализация игрока становится:

var player = videojs('my-video', {
  techOrder: ['flash'],
  autoplay: true,
  sources: [{
  type: "rtmp/flv",
}],
bufferTime: 0,
flash: {
  swf: "js/video-js.swf",
  flashVars: {
    bufferTime: 0,
    autoPlay: true,
    bufferTimeMax: 0.25
  }
}
});

video-js.swf скомпилирован из исправленной версии по адресу:

https://github.com/sea-kg/video-js-swf.git

Просто скомпилируйте эту версию и используйте опцию "swf:" flash, чтобы указать путь к этому SWF.

Это значительно уменьшает задержку, но, по моему опыту, задержка может варьироваться в зависимости от соединения.

...