Моя первоначальная задача состояла в том, чтобы найти сегмент для Windows, который разбивает файл h264 \ aac без изменения его кодеков и делает его воспроизводимым через HLS.HLS varianplaylistcreator для Windows
Лучший способ, который работал для меня, чтобы использовать FFmpeg, как это:
ffmpeg -i encoded.mp4 -c copy -map 0 -vbsf h264_mp4toannexb -flags -global_header -f segment -segment_time 10 -segment_format mpegts stream%d.ts
Теперь это разбивает файл более или менее правильно, хотя mediastreamvalidator
бросил пару предупреждений, я все еще был в состоянии играть видео.
Но вот сложная часть: ffmpeg не может создавать файлы .m3u8 для вас. Это не проблема, если вам не нужно создавать файл списка воспроизведения, в котором я нуждаюсь. Так что теперь мне нужно найти или написать приложение для Windows, которая имитирует varianplaylistcreator
Итак, у вас есть такое же видео, закодированное для каждой отдельной полосы пропускания: 64, 150, 300, 500, 800, 1200 и 2400. В настоящее время после сегментации каждого видео, вы, вероятно, хотели бы поместить эти сегменты в отдельные папки, включая файлы списка воспроизведения для каждого воспроизведения.
Теперь мы можем создать вариант файла списка воспроизведения, в котором мы перечислим все параметры с инструкциями о том, какой сервер полосы пропускания автоматически должен переключать обслуживание различного исполнения.
Обычно вариант воспроизведения выглядеть следующим образом:
#EXTM3U
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=512376
500/500k_512x384_x264_372_quicktime_128.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=68795
64/64k_256x192_x264_32_quicktime_32.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=155580
150/150k_256x192_x264_118_quicktime_32.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=308895
300/300k_512x384_x264_172_quicktime_128.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=811310
800/800k_512x384_x264_672_quicktime_128.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1210182
1200/1200k_1024x768_x264_1072_quicktime_128.m3u8
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=2408106
2400/2400k_1024x768_x264_2272_quicktime_128.m3u8
Обратите внимание на значения атрибутов Bandwith. Я подозреваю, что это значения, рассчитанные на varinatplaylistcreator
.
И я не знаю, как это делается. Я думаю, что так или иначе требуется средний битрейт видео (сегментов) для каждого изложения и на основе этого.
Так что мой вопрос: как они рассчитываются. Или, возможно, кто-то уже создал инструмент, который может работать в Windows и создавать переменные плейлисты.
Атрибут BANDWIDTH не средняя пропускная способность, но на самом деле максимальная пропускная способность. – vipw
Еще одна вещь, о которой вам нужно беспокоиться, - это то, что каждое воспроизведение сегментируется точно в тех же позициях. Как правило, это означает, что вам понадобится фиксированная «GOP» (группа изображений - как часто происходит I-кадр). – vipw
@vipw ... можете ли вы объяснить это более подробно? спасибо – Agzam