У меня есть альбом, хранящийся в виде списка файлов m4a без пробелов, скопированных с компакт-диска. Мне нужно непрерывно транслировать альбом через HTTP Live Streaming, и пользователь должен иметь возможность «прыгать» в начале любой дорожки. На данный момент мой единственный клиент — это AVPlayer для iOS.
Я могу сегментировать дорожки по отдельности, используя Инструмент Apple для сегментации медиафайлов. Для каждой дорожки создается один файл списка воспроизведения .m3u8 и несколько файлов сегментов .aac, каждый продолжительностью ~10 секунд, кроме последнего.
Плейлист m3u8 для трека 1 выглядит так:
#EXTM3U
#EXT-X-TARGETDURATION:11
#EXT-X-VERSION:3
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-PLAYLIST-TYPE:VOD
#EXTINF:10.001,
segment0.aac
#EXTINF:9.983,
segment1.aac
...
#EXTINF:3.231,
segment23.aac
#EXT-X-ENDLIST
Я могу объединить эти файлы списка воспроизведения m3u8 в один основной файл m3u8 для альбома:
#EXTM3U
#EXT-X-TARGETDURATION:11
#EXT-X-VERSION:3
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-PLAYLIST-TYPE:VOD
#EXTINF:10.001, // begin track 1
segment0.aac
#EXTINF:9.983,
segment1.aac
...
#EXTINF:3.231,
segment23.aac
#EXT-X-DISCONTINUITY
#EXTINF:10.001, // begin track 2
segment24.aac
#EXTINF:9.983,
segment25.aac
...
#EXTINF:6.845,
segment46.aac
#EXT-X-DISCONTINUITY
#EXTINF:10.001, // begin track 3
segment47.aac
#EXTINF:9.983,
segment48.aac
...
#EXTINF:8.012,
segment80.aac
#EXT-X-ENDLIST
Он будет проигрываться на протяжении всего альбома, но не без пауз. Обратите внимание на тег DISCONTINUITY между каждым треком (без него плеер зависает навсегда). Это вводит небольшой промежуток между дорожками, может быть, 300 миллисекунд.
Как я могу создать сегменты, которые плавно перетекают друг в друга?