Я работаю над музыкальным приложением VOD на iPhone, и, благодаря рекомендациям Apple, мне нужно запустить потоковое HTTP-потоковое, чтобы быть принятым в AppStore. Но, поскольку Apple не заботится о 98% серверов на земле, они не предоставляют свои столь волшебные HTTP-потоковые потоки для Linux-систем. И с этого момента начинается кошмар.
Моя цель проста: возьмите MP3, сегментируйте его и создайте простой файл индекса .m3u8. Я googled "HTTP Live Streaming Linux" и "О, отлично, многие люди уже это сделали!"
Сначала я посетил (настолько знаменитый) пост от Carson McDonald. Результат: svn segmentate.c был старым, багги и кошмаром для компиляции (никто в этом мире не может точно определить, какую версию ffmpeg они используют!). Затем я наткнулся на автопорт git repo, но слишком плохо, есть много раздражающих рубиновых вещей, а live_segmenter.c не может принимать mp3 файлы.
Затем я искал более глубоко. Я нашел qaru.site/info/259482/..., и это именно то, что я хочу сделать. Поэтому я пошел за советом от juuni, чтобы использовать этот script (httpsegmenter). Результат: Невозможно скомпилировать что-либо, 2 дня работы и, наконец, мне удалось скомпилировать его (ffmpeg 8.1 w/httpsegmenter rev17). И нет, это нехорошо script, он принимает mp3 файлы, но файлы ts сгенерированы и индексный файл не может быть прочитан игроком.
Тогда автор сообщения krisbulman пришел с решением и даже дал исправленную версию m3u8-segmenter своим собственным (git repo). Я тестирую его: не компилируется, ничего не делаю. Поэтому я взял оригинальную версию с johnf https://github.com/johnf/m3u8-segmenter. Мне удалось скомпилировать и чудо, что это работает (не совсем). Я использовал эту командную строку (ffmpeg 0.8.1):
ffmpeg -er 4 -i music.mp3 -f mpegts -acodec libmp3lame -ar 44100 -ab 128k -vn - | m3u8-segmenter -i - -d 10 -p outputdir/prefix -m outputdir/output.m3u8 -u http://test.com/
Этот script кодирует мой mp3 файл (он занимает 4 секунды, слишком длинный) и передает его в m3u8-сегмент, чтобы сегментировать его на 10 секунд .TS файлов.
Я тестировал этот поток с помощью Apple mediastreamvalidator на своем mac, и он сказал, что все в порядке. Так что я играл его в quicktime, но между каждыми файлами .TS осталось около 0.2 секунд.
Итак, вот моя ситуация, это кошмар, я не могу получить простой mp3-поток по протоколу HLS. Есть ли простое решение WORKING для сегментации mp3? Почему я не могу напрямую сегментировать mp3 файл в несколько mp3 файлов, например Apple mediafilesegmenter?