FFmpeg (HLS) - разделять сегменты по размеру, а не по времени (или ограничивать размер сегмента) - PullRequest
0 голосов
/ 27 февраля 2019

Итак, у меня есть команда ffmpeg со следующими параметрами (в NodeJS, но это не имеет значения):

'-start_number 0',
'-hls_key_info_file ' + HLSKEY_PATH,
'-hls_time 5',
'-hls_playlist_type vod',
'-hls_segment_filename seg-%d.ts'

Все работает нормально, но есть проблема с размером каждого сегмента.Почему ffmpeg не может создавать сегменты по размеру, а не по времени?В этом случае -hls_time 5.Я надеялся сделать что-то вроде -hls_size 4096, но у меня нет выбора, по крайней мере из того, что я знаю.Или я могу хотя бы установить лимит?Например: «Не создавайте сегменты размером более 4 МБ, делите их снова, если это необходимо».

Я знаю, что могу снова закодировать файл, и тогда не будет сегментов, которые бы сильно различались по размеру, но этоДля меня это не вариант, а альтернатива.

Заранее спасибо!

1 Ответ

0 голосов
/ 28 февраля 2019

Не ВСЕ кадры содержат одинаковое количество информации.Сжатие видео работает таким образом, что некоторые кадры имеют МЕНЬШУЮ информацию, а другие - БОЛЬШЕ.Технически, тогда, если длительность сегмента в миллисекундах ВСЕГДА одинакова, размеры фрагмента не будут одинаковыми.

Я думаю, что нет никакой опции для того, что вы спрашиваете.1004 * Существует команда " -fs " (размер выходного файла), но я думаю, что она работает для ограничения размера всего вывода, а не только сегментов.

Вместо васЕсли размеры сегмента меня беспокоят, я бы просто уменьшил длительность на одну секунду, затем на два, и увидел бы.Удачи.

...