#EXTINF — поле в плейлисте Apple HLS имеет десятичную продолжительность — сгенерировано mediafilesegmenter

Я использую mediafilesegmenter для создания списков воспроизведения HLS для фильмов в формате mp4. Моя команда выглядит следующим образом:

mediafilesegmenter movieName.mp4 -I -f /Library/WebServer/Documents/vod/movieName/ -t 10 -l movie.log -k /Library/WebServer/Documents/vod/movieName/keys/ -K http://KEYSERVER/keys/ -key-rotation-period 10 -encrypt-rotate-iv-mbytes=1024 -J random

С помощью этой команды я получаю список воспроизведения, сгенерированный нормально, но продолжительность в #EXTINF: десятичная. Я проверил черновик HLS, там написано

Тег EXTINF указывает продолжительность медиасегмента. Он применяется только к URI носителя, который следует за ним. Каждому URI медиасегмента ДОЛЖЕН предшествовать тег EXTINF. Его формат:

#EXTINF:<duration>,<title> >

«длительность» — это целое число или число с плавающей запятой в десятичной позиционной записи, указывающее продолжительность медиасегмента в секундах. Длительности, указанные как целые числа, СЛЕДУЕТ округлять до ближайшего целого числа. Продолжительность ДОЛЖНА быть целым числом, если версия протокола файла списка воспроизведения меньше 3.

Мой вопрос: как я могу сделать #EXTINF целым числом? Я использовал вариант -t 10 и -t 15 и несколько номеров, но в моем плейлисте есть
#EXTINF:14.792, и т. д.

Может ли кто-нибудь указать мне, какие изменения в команде нужно внести, чтобы я получил целое число на основе #EXTINF?

Моя версия медиасегментера mediafilesegmenter: Beta Version 1.1(111116)

Я использую Darwin Kernel Version 10.8.0 with x86_64 mac.


person cb24    schedule 29.02.2012    source источник
comment
Есть ли способ указать, какая версия протокола используется в mediafilesegmenter? У меня недостаточно денег, чтобы получить доступ к справочной странице. Но если вы можете установить его на версию 2, он должен выводить только целые числа для длительности. Но проще всего просто изменить сгенерированный плейлист с помощью простого регулярного выражения в скрипте.   -  person vipw    schedule 02.03.2012
comment
Спасибо за ответ, у меня все работает с reg-ex, вот reg-ex, который я использовал perl -pi -e 's/#EXTINF:(\d{1,2})\.(.*),/#EXTINF:10,/g' prog_index.m3u8   -  person cb24    schedule 13.04.2012
comment
Вы заменяете все длительности на 10? Это кажется неправильным и может иметь последствия для клиентов, когда они пытаются использовать панель поиска. Если клиент попытается найти то, что, по его мнению, составляет 100 секунд, он пропустит 10 сегментов, которые могут или не могут быть близки к 100 секундам. Я бы рекомендовал обновить код, чтобы округлить значение. В идеале вы могли бы сохранить промежуточную сумму дробных частей, чтобы избежать кумулятивной ошибки округления.   -  person vipw    schedule 13.04.2012
comment
Спасибо за ответ. Я изменил свой подход с поиска и замены на округление. Похоже, проблема с поиском решена :)   -  person cb24    schedule 20.04.2012


Ответы (1)


Теперь Apple предлагает правильное решение. Вы должны использовать этот флаг для инструмента mediafilesegmenter.

-нет-длительность-с плавающей запятой

person vipw    schedule 21.05.2012
comment
Спасибо за ответ. Попробую так же в будущем. - person cb24; 02.08.2012