2016-02-13 5 views
0

Я пытаюсь реализовать свою собственную версию потоковой передачи. Я посылаю массивы байтов через websocket. Как только я получу первое сообщение, я напишу его во временное и с помощью файла android MediaPlayer, чтобы воспроизвести файл. Для первого сообщения все работает отлично, я превращаю массив байтов в mp3 и аудио. Однако я не уверен, как писать в файл каждый раз, когда приходит сообщение.Выполнение пользовательской потоковой передачи

несколько примеров кода

Everytime сообщение приходит через этот код получает бежать.

   try { 
        if (fos == null) { 
         test = File.createTempFile("TCL", "mp3", getCacheDir()); 
         fos = new FileOutputStream(test); 
         fos.write(bytearray); 

         mediaPlayer = new MediaPlayer(); 
         MyFile = new FileInputStream(test); 
         mediaPlayer.setDataSource(MyFile.getFD()); 
         mediaPlayer.prepare(); 
         if(!mediaPlayer.isPlaying()){ 
          mediaPlayer.start(); 
         } 

        }else{ 
         fos.write(bytearray); 

        } 
       } catch (IOException ex) { 
        ex.printStackTrace(); 
       } 

Я думал, что могу просто писать входящий байт [] в файл, но это, похоже, не работает. Любой совет будет принят во внимание.

ответ

1

Что вы пытаетесь сделать (воспроизводить звук в файле, который постоянно растет бесконечно) не поддерживается MediaPlayer. Вместо этого загляните в декодирование звука самостоятельно и отправьте необработанные данные PCM в AudioTrack. Это намного больше работы, но AudioTrack - это самый простой способ постепенного воспроизведения потока аудиоданных.

+0

Я даю это попробовать, я уже пробовал на реализацию, и это не сработало для меня, оно сыграло первый байт [], и я услышал звук, затем он остановился, любые ссылки на примеры, которые я мог бы взять посмотри на? – user3298823

+0

Я не могу рекомендовать конкретный пример, поскольку весь код, который я написал для создания потоковой передачи AudioTrack, является закрытым исходным кодом. Но вам нужно поместить AudioTrack в режим потока, и вам нужно продолжать писать. Я уверен, что здесь есть достаточно ключевых слов для поиска некоторых образцов. :-) –

+0

Спасибо, у меня он работает, он читает все байты [], но возвращается только как статичный. Я это выясню, спасибо! – user3298823

Смежные вопросы