Я использую следующую команду FFMPEG для создания списков воспроизведения и мастер-списка воспроизведения для последующей вставки в проигрыватель с поддержкой HLS:
ffmpeg/ffmpeg.exe -i input/test.mp4
-preset fast
-g 150
-sc_threshold 0
-threads 4
-map 0:v:0 -map 0:a:0 -map 0:v:0 -map 0:a:0 -map 0:v:0 -map 0:a:0 -map 0:v:0 -map 0:a:0
-filter:v:0 scale=h=240:w=-2 -minrate:v:0 75k -maxrate:v:0 218k -bufsize:v:0 300k -b:v:0 150k
-filter:v:1 scale=h=360:w=-2 -minrate:v:1 138k -maxrate:v:1 400k -bufsize:v:1 552k -b:v:1 276k
-filter:v:2 scale=h=480:w=-2 -minrate:v:2 375k -maxrate:v:2 1088k -bufsize:v:2 1500k -b:v:2 750k
-filter:v:3 scale=h=720:w=-2 -minrate:v:3 512k -maxrate:v:3 1485k -bufsize:v:3 2048k -b:v:3 1024k
-var_stream_map "v:0,a:0 v:1,a:1 v:2,a:2 v:3,a:3"
-master_pl_name master.m3u8
-f hls -hls_time 6 -segment_time 6 -hls_list_size 0 -segment_format mpegts
-hls_playlist_type vod -hls_segment_filename "output/conversion/K8eYn1X1/res-%v/segment-%d.ts" output/conversion/K8eYn1X1/res-%v/playlist.m3u8
Основываясь на информации из различных источников, эта командная строка должна выполнить следующее:
взять видеопоток из входного файла,
применить фильтры с различными настройками четыре раза,
объединить его в один поток,
разрезать на фрагменты TS на 6 секунд,
записать информацию о каждом разрешении вplaylist.m3u8,
создать мастер-плейлист и записать в него информацию о будущих плейлистах
Все работает правильно, НО: фрагменты созданыплейлисты созданы, но мастер-файл пуст
Если вы играете с командной строкой, точнее, оставляете только один фильтр, то все работает нормально: фрагменты обрезаются, плейлисты создаются и мастер-файлыplayliТакже создается st
Кроме того, я заметил, что если я смотрел папку, в которой хранятся все файлы, я заметил одну вещь: при использовании команды, приведенной выше, создается файл 7 КБ, а затем вв ту же секунду, кажется, очищается. Почему так происходит, я не понимаю
По завершении обработки в журнале последняя строка:
[hls @ 000001ff73b87200] Opening 'output/conversion/K8eYn1X1/master.m3u8' for writing
Может я что-то не так делаю? Может быть, команды в неправильном порядке? Подскажите, кто знает?
Спасибо