Как преобразовать дорожки m4a без пауз в поток HLS без пауз

У меня есть альбом, хранящийся в виде списка файлов 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 миллисекунд.

Как я могу создать сегменты, которые плавно перетекают друг в друга?


person Neal Ehardt    schedule 17.03.2014    source источник
comment
Вы когда-нибудь находили решение для этого? Я пытаюсь сделать что-то очень похожее, но с видео.   -  person shreddish    schedule 24.02.2018
comment
Нет, к сожалению нет. Эта компания закрылась.   -  person Neal Ehardt    schedule 25.02.2018


Ответы (1)


Вы можете объединить файлы AAC, прежде чем использовать инструмент mediafilesegmenter для объединенного файла AAC.

Следующая команда ffmpeg может создать выходной файл.

ffmpeg -i "concat:input1.aac|input2.aac|input3.aac" -c копировать output.aac

Возможно, вам потребуется повторно преобразовать файлы aac в файлы mpeg2ts перед конкатенацией, а затем повторно преобразовать файл mpeg2ts в AAC.

person vipw    schedule 17.03.2014