Вопрос или проблема
<MPD xmlns="urn:mpeg:dash:schema:mpd:2011"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="urn:mpeg:dash:schema:mpd:2011 DASH-MPD.xsd"
profiles="urn:mpeg:dash:profile:isoff-live:2011,http://dashif.org/guidelines/dash-if-simple"
type="dynamic"
availabilityStartTime="1970-01-01T00:00:00Z"
publishTime="1970-01-01T00:00:00Z"
minimumUpdatePeriod="PT30S"
minBufferTime="PT2S"
timeShiftBufferDepth="PT1M"
maxSegmentDuration="PT2S">
Я попробовал все, что у меня было
-init_seg_name "init-$RepresentationID$.$ext$"
-media_seg_name "sg-$RepresentationID$-$Number%05d$.$ext$"
-dash_segment_type webm
-use_template 1 -use_timeline 1 -seg_duration 9
-adaptation_sets "id=0, streams=v id=1, streams=a"
-live 1
-chunk_start_index 1
-time_shift_buffer_depth 60
-f dash {pathfilm}manifest.mpd
При конвертации файла, в манифесте
type="dynamic"
Когда конвертация видео завершена
type="statick"
Вопрос в том, как заставить ffmpeg. Когда конвертация видео завершена, сохранить манифест с параметром
type="dynamic"
??
Ответ или решение
Как сохранить манифест с параметром type="dynamic" при использовании FFmpeg
В данной статье мы рассмотрим, как правильно сохранить манифест в формате DASH с параметром type="dynamic"
при помощи FFmpeg. Этот вопрос актуален для потокового видео и динамического потокового вещания, где важно поддерживать спецификации MEPG-DASH.
Понимание параметра type="dynamic"
При создании DASH манифеста, параметр type
определяет характер манифеста:
- dynamic: используется для потокового вещания и позволяет обновлять контент в режиме реального времени.
- static: манифест создается один раз и не изменяется после завершения обработки видео.
Для настройки манифеста, чтобы он создавался с параметром type="dynamic"
, необходимо тщательно выбрать параметры командной строки в FFmpeg при его использовании.
Проблемы с сохранением манифеста
Ваша команда, предназначенная для создания манифеста, выглядит следующим образом:
-init_seg_name "init-$RepresentationID$.$ext$" \
-media_seg_name "sg-$RepresentationID$-$Number%05d$.$ext$" \
-dash_segment_type webm \
-use_template 1 -use_timeline 1 -seg_duration 9 \
-adaptation_sets "id=0, streams=v id=1, streams=a" \
-live 1 \
-chunk_start_index 1 \
-time_shift_buffer_depth 60 \
-f dash {pathfilm}manifest.mpd
Проблема, с которой вы столкнулись, заключается в том, что результатом выполнения является манифест с type="static"
, несмотря на то, что параметры для создания динамического манифеста указаны.
Решение проблемы
Для обеспечения того, чтобы ваш манифест создавался именно в формате type="dynamic"
, вам следует выполнить следующие шаги:
-
Параметры команды: Убедитесь, что у вас указаны правильные параметры. Ключи
-live 1
и-time_shift_buffer_depth
должны позволить FFmpeg понимать, что вы хотите создать динамический манифест, однако, важно убедиться, что другие настройки также соответствуют этому требованию. -
Используйте правильные версии FFmpeg: Проверьте, используете ли вы последнюю стабильную версию FFmpeg, так как обновления могут содержать исправления и улучшения, касающиеся поддержки спецификаций DASH.
-
Настройки для сегментов: Попробуйте изменить параметры
-seg_duration
и-minimumUpdatePeriod
, чтобы лучше соответствует требованиям для динамического манифеста. -
Динамическое обновление: Возможно, вам потребуется установить соответствующий желаемый формат потокового видео и режим вывода, чтобы гарантировать, что сегменты создаются как динамические.
Вот переработанная команда, которую вы можете попробовать:
ffmpeg -i {input_file} \
-init_seg_name "init-$RepresentationID$.$ext$" \
-media_seg_name "sg-$RepresentationID$-$Number%05d$.$ext$" \
-dash_segment_type webm \
-use_template 1 -use_timeline 1 -seg_duration 9 \
-adaptation_sets "id=0, streams=v id=1, streams=a" \
-live 1 \
-minimum_update_period PT1S \
-time_shift_buffer_depth 60 \
-f dash {pathfilm}/manifest.mpd
Заключение
Создание DASH манифеста с параметром type="dynamic"
требует чёткого соблюдения спецификаций и параметров командной строки в FFmpeg. Убедитесь, что используете актуальную версию инструментов и регулярно проверяете обновления функционала.
Если у вас возникнут дополнительные вопросы или потребуется дальнейшая помощь, не стесняйтесь обращаться за поддержкой.