Я настроил поток данных с моей веб-камеры с помощью API MediaSource
и настроил его отправку данных с моей веб-камеры в веб-формате каждые 4 секунды. Затем я получаю это на сервере узла, использую createWriteStream
, чтобы установить канал и начать потоковую передачу!
Я застрял при преобразовании медиа из webm в live m3u8. Ниже приведена команда ffmpeg, которую я выполняю (она прошла через многочисленные итерации, когда я пробовал что-то из документации).
const cmd = `ffmpeg
-i ${filepath}
-profile:v baseline
-level 3.0
-s 640x360 -start_number 0
-hls_time 10
-hls_list_size 0
-hls_flags append_list
-hls_playlist_type event
-f hls ${directory}playlist.m3u8`
const ls = exec(cmd.replace(/(\r\n|\n|\r)/gm," "), (err, stdout, stderr) => {
if(err) {
console.log(error);
}
})
Я не могу удалить #EXT-X-ENDLIST
в конце списка воспроизведения, чтобы сохранить потоковую трансляцию для моих веб-плееров, поэтому, когда я нажимаю кнопку воспроизведения, видео воспроизводит список воспроизведения в его текущем состоянии. и останавливается в конце.
Спасибо
ОБНОВЛЕНИЕ
Это может быть проблема качества / скорости. Когда я снизил качество до;
const cmd = `ffmpeg
-i ${filepath}
-vf scale=w=640:h=360:force_original_aspect_ratio=decrease
-profile:v main
-crf 51
-g 48 -keyint_min 48
-sc_threshold 0
-hls_time 4
-hls_playlist_type event
-hls_segment_filename ${directory}720p_%03d.ts
${directory}playlist.m3u8
Мне удалось получить пиксельное живое видео. Тем не менее, он быстро упал ... Может быть, это пока невозможно в Node / Web Browser?