реализовав музыка потокового приложения, я могу поделиться немного с вами.
Если вы хотите использовать поток и использовать класс MediaPlayer для Android, MP3 или OGG - ваш лучший выбор для формата.
Если ваша архитектура является клиент-сервером, то есть реальным сервером в потоках интернет-обслуживания на устройствах Android, а затем просто передавайте MP3 или OGG-байты через HTTP. Просто укажите MediaPlayer на URL-адрес на вашем сервере.
Если ваша архитектура является одноранговой с вашим собственным кодом сокета, вы можете создать «прокси-сервер», который будет прослушивать локальный хост по выделенному потоку. Вы указываете свой экземпляр MediaPlayer на локальный сервер сокетов в процессе (например, http://localhost:54321/MyStream.mp3). Затем вам нужно реализовать код для разбора формы запроса HTTP-получения MediaPlayer, затем проксировать байты потока между вашим пользовательским протоколом сокетов P2P и слушателями, подключенными к вашему локальному HTTP-серверу. Многие приложения для радиопотока делают именно это, чтобы анализировать метаданные ICECAST из потока MP3. Here's the code I use for my radio streaming app это делает.
Для сценария «начать в середине файла» вы можете найти полезный мой MP3 Stream Reader class. Он обертывает InputStream (файл, поток сокетов и т. Д.) И синхронизируется со следующим допустимым фреймом, откуда вы начали. Просто позвоните read_next_chunk
, чтобы получить следующий блок аудио и его формат. MediaPlayer может сделать большую часть этого тяжелого подъема для вас, поэтому это может и не понадобиться.
Если вам нужна потоковая передача p2p, я действительно советую вам рассмотреть WebRTC. –