В рамках одного из моих проектов я планирую разработать аудиоархив для интернет-радиостанций.Этот архив будет проиндексирован и адресуем по дате / времени.
Например, сервер будет подключаться к потоку (обычно закодированному в MP3) и сохранять данные потока.Клиент может подключиться к этому серверу и запросить аудио от 2011-07-05 15:58:30
до 2011-07-05 15:59:37
.Сервер возвращал аудиоданные клиенту для воспроизведения.
Сначала я хотел сохранить данные в виде 1-минутных фрагментов необработанных данных MP3 на диск и сослаться на эти файлы из базы данных.Сервер был бы туп к формату потока / файла и не понимал бы фреймы mpeg.Он просто передал бы данные клиенту, разделив их по частям для линейной отправки.Это было бы до клиента, чтобы синхронизировать с потоком.Это мало чем отличается от того, как серверы интернет-радио работают в целом.Серверы SHOUTcast просто выводят данные, байты за байтом, которые отправляются им из кодировщика.Когда клиент подключается, данные отправляются независимо от того, заканчивается ли это на кадре MP3.Это зависит от клиента для синхронизации.
Мне интересно, может ли быть лучший подход, обеспечивающий максимальную совместимость с клиентами и аудиоформатами .Есть какие-нибудь мысли о том, как это сделать?
Единственное, о чем я могу подумать, это декодировать MP3 в необработанный звук PCM и перекодировать по мере необходимости по запросу.Я бы предпочел не идти по этому пути из-за необходимого дискового пространства и потери качества при перекодировании.
Этот вопрос не зависит от языка, но если он будет полезен, я, скорее всего, реализую решениев PHP с MySQL в качестве базы данных.