Отображение пустых ts сегментов в видео
Я делаю видео плеер, который отображает видео записи по ts файлам. Для этого я использую hls.js
. Но возникла проблема, что некоторые ts файлы приходят пустыми, когда видео не записывалось. Из-за этого hls останавливает подгрузку сегментов и не может запустить видео. Я бы хотел чтобы вместо остановки, можно было запустить видео, но отобразиться просто пустой (черный) экран, при этом плеер будет идти.
Если я преобразовываю видео из ts файлов в mp4 с помощью ffmpeg, то видео работает как я бы хотел, а именно на пустых ts файлах отображается просто пустое (черное) видео.
Подробности:
Мне приходит массив ts файлов с их длительностью и временем записи. Я по нему создаю m3u файл и передаю в hls.js
. Далее отображаю видео к которому присоединяю hls.
const tsList = [
{start: someDate, duration: 2 , tsUrl: 'https://examples/exmpty.ts' },
{start: someDate, duration: 2 , tsUrl: 'https://examples/empty2.ts' },
{start: someDate, duration: 2 , tsUrl: 'https://examples/file1.ts' }
...
]
const m3u8Data = `#EXTM3U
${tsList .map(({tsUrl}) => (`#EXTINF:${tsUrl}\n`))}
EXT-X-ENDLIST
`
В файле плеера:
const hls = new Hls()
const m3uBlob = URL.createObjectURL(new Blob([m3u8Data]))
hls.loadSource(m3uBlob)
hls.attachMedia(htmlVideo)
При отображении подгружаются первые два сегмента, а дальше бросает евент - emptied
. А я бы хотел запустить видео и чтобы оно действительно отображалось по тем промежуткам которые указаны в duration
.
Я пытался искать в нескольких направлениях:
- конфигурация
hls.js
- использовать
video.js
(но оно под капотом все равно используетhls.js
) - настраивать m3u (но не нашел нужных аттрибутов)