Используйте FFMPEG для генерации файлов MPD для адаптивной потоковой передачи MPEG-DASH.

Поэтому я пытаюсь настроить адаптивную потоковую передачу, и у меня есть, как мне кажется, 80-90% проблемы. Прямо сейчас я принимаю исходное видео, транскодирую его в 5 разрешений, каждое с 3 битрейтами (низкий, средний, высокий), а затем я разделяю все эти видео на 5-секундные фрагменты, чтобы пользователь всегда мог иметь наилучший возможный просмотр. Сейчас я нахожусь в точке, где мне нужно сгенерировать / создать мой файл манифеста MPD, и мне трудно понять, как это сделать. Почти все говорят, что используют MP4Box, но их лицензия слишком ограничена для моего проекта.

Есть ли способ создать файл MPD с помощью FFMPEG, когда я сегментирую свое видео? или, может быть, генерировать HLS, который я могу затем преобразовать в манифест MPD? Любая информация была бы потрясающей, это моя текущая команда FFMPEG (работает)

-помните, что переменные $ являются входными данными для скрипта bash, который устанавливает входной файл, битрейт и масштаб. /usr/bin/ffmpeg -re -i $1 -an -c:v libx264 -b:v $7 -b:a 196k -strict -2 -movflags faststart -pix_fmt yuv420p -vf "scale='$4:trunc(ow/a/2)*2'" -flags -global_header -map 0 -f segment -segment_time 5 -segment_list test.m3u8 -segment_format mpegts $2%05d.mp4

3 ответа

ffmpeg \
  -f webm_dash_manifest -live 1 \
  -i /var/www/webm_live/glass_360.hdr \
  -f webm_dash_manifest -live 1 \
  -i /var/www/webm_live/glass_171.hdr \
  -c copy \
  -map 0 -map 1 \
  -f webm_dash_manifest -live 1 \
    -adaptation_sets "id=0,streams=0 id=1,streams=1" \
    -chunk_start_index 1 \
    -chunk_duration_ms 2000 \
    -time_shift_buffer_depth 7200 \
    -minimum_update_period 7200 \
  /var/www/webm_live/glass_live_manifest.mpd

Попробуйте это из официальных документов (это не совсем тот сценарий, который вам нужен, но вы поняли):

ffmpeg -re -i <input> -map 0 -map 0 -c:a libfdk_aac -c:v libx264 \
-b:v:0 800k -b:v:1 300k -s:v:1 320x170 -profile:v:1 baseline \
-profile:v:0 main -bf 1 -keyint_min 120 -g 120 -sc_threshold 0 \
-b_strategy 0 -ar:a:1 22050 -use_timeline 1 -use_template 1 \
-window_size 5 -adaptation_sets "id=0,streams=v id=1,streams=a" \
-f dash /path/to/out.mpd

тестовый код:

      ffmpeg -i video.mp4 -vcodec copy -acodec copy output.mpd
Другие вопросы по тегам