Создать файл m3u8 из списка файлов ts - PullRequest
0 голосов
/ 28 августа 2018

Я хочу создать файл 'm3u8' из списка файлов ts. Как я могу это сделать?

Я выполнил поиск в google и прочитал документацию по ffmpeg, но ничего не нашел.

Ответы [ 2 ]

0 голосов
/ 01 сентября 2018

Не ясно, о каком из следующих случаев вы спрашиваете, поэтому вот быстрый ответ для обоих:

1) Если вы начинаете с одного файла, который содержит ваш контент Это самый распространенный случай. В общем, есть три шага для создания воспроизводимого потока HLS из исходного материала.

  • для каждого желаемого уровня вывода (скажем, битрейт для простоты), вам нужно создать коллекцию сегментированных файлов .ts.
  • Для каждого выходного уровня необходим манифест плейлиста (m3u8), который содержит список файлов сегментов, составляющих содержимое.
  • Для всего потока вам нужен один главный манифест (другой m3u8), в котором перечислены списки воспроизведения.

FFMpeg может выполнить все три из них.

2) Если вы начинаете с коллекции .ts файлов Если вы действительно начинаете с набора файлов .ts, вы можете либо вручную собрать файл m3u8, как описано в предыдущем ответе, либо написать скрипт для этого.

В любом случае для файлов .ts есть несколько соображений:

  • Если файлы сегментов не принадлежат непрерывной последовательности (как если бы они были перекодированы из одного исходного клипа для использования в HLS), вам необходимо вставить теги EXT-X-DISCONTINUITY между сегментами которые не имеют одинаковых характеристик кодирования или не имеют монотонно увеличивающихся значений PTS (метка времени представления).

  • Хотя все сегменты не обязательно должны быть одинаковой длины, самый длинный не должен превышать (целое) количество секунд, указанное в теге EXT-X-TARGETDURATION.

  • Максимальный битрейт для всех сегментов не должен превышать значение, указанное в теге EXT-X-TARGETDURATION.

Когда вы создали свой файл m3u8, это помогает запустить его через валидатор, чтобы найти какие-либо проблемы. Это гораздо проще, чем почесать голову, задаваясь вопросом, почему поток HLS проигрывается плохо или непоследовательно во всех проигрывателях / браузерах.

0 голосов
/ 28 августа 2018

Возможно, вам нужна структура HLS . В Apple имеется много документации (IIRC была изобретена Apple, а затем получила широкое распространение), например, черновик RFC и страница с примерами потоков .

HLS состоит из двух уровней: мастер M3U8, который ссылается на другие M3U8, которые, в свою очередь, ссылаются на файлы .ts. Вы можете опустить мастер M3U8 и просто предоставить «второй уровень».

В качестве отправной точки, может выглядеть примерно так :

#EXTM3U
#EXT-X-TARGETDURATION:10
#EXT-X-MEDIA-SEQUENCE:1
#EXTINF:10, no desc
media-000001.ts
#EXTINF:10, no desc
media-000002.ts
#EXTINF:10, no desc
media-000003.ts

EXT-X-TARGETDURATION указывает длину каждого файла .ts (все они должны быть одинаковой длины). Это может быть относительный или абсолютный путь.

...