Модераторы: javastic, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не воспроизводится звуковой файл из потока(Stream) 
:(
    Опции темы
OlegJ
Дата 19.1.2006, 12:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 15.12.2005

Репутация: нет
Всего: нет



Не получается считать и воспроизвести звуковой файл из потока(InputStream)
Вообщем на сервере рабоатет простой сокетный сервер и он по потоку через сокеты высылает побайтово весь файл

PrintStream out = new PrintStream( new BufferedOutputStream(socket.getOutputStream(), 1024), false);
inputFile = new File("a.amr");
inFile = new FileReader(inputFile);
while ((c = inFile.read()) != -1){
out.write©;
}
inFile.close();


Клиент - мидлет соедененыый с этим сокетом серверным и считывающий этот файл в поток,а поток является данными для
проигывателя(используется MMAPI на Siemens c65)

InputStream sc = (SocketConnection) Connector.open("socket://localhost:5190");
is = sc.openInputStream();
Player p = Manager.createPlayer(is, "audio/amr");
p.realize();
p.prefetch();
p.start();

В момент старта проигрывателяон подвисает и дальше уже программа не работает.
В эмуляторе Siemens выдается

** Audio doRealize **
-- End doRealize --
** Audio doPrefetch **
Filename: 26922701.amr
Calling Connector.open with: file:///0:/System/java/57133/26922701.amr
The file did not exist
File was created

При чем,если просто считывать входящий поток следующимобразом,то файл приходит,проверял.
int s;
while ( (s=is.read()) != -1 ){
System.out.println(s);
}
И так же проверил просто проигрывание amr-файла звукового из jar файла локального на телефоне
проигрывателем проходит успешно.А вот получить и воспроизвестиего из потока не получается.
Есть мысли какие-нибудь?




PM MAIL   Вверх
Dancer
Дата 19.1.2006, 14:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 537
Регистрация: 29.4.2005
Где: Nizhniy Novgorod

Репутация: 33
Всего: 37



если тебе хватит Heap или есть доступ к файловой системе телефона из Java и хватит места для хранения файлика, то я в принципе делал так:
у меня звуковые файлики маленькие, я их сохраняю в памяти телефона.
причём проверь у себя настройку в симуляторе, скорее всего у тебя маленькая скорость эмуляции обмена данными по сети стоит

И проверь настройки своего симулятора, он же тебе ругается, что файла который он пытается проиграть не находит: file:///0:/System/java/57133/26922701.amr

Код

            try {
                System.out.println("read file from server as InputStream");

                InputStream sc = (SocketConnection) Connector.open("socket://localhost:5190");
                InputStream is = sc.openInputStream();

                System.out.println("is = "+is);
                System.out.println("is.avaliable() = "+is.available());

                int offset = 0;
                int readBytes = is.available();
                byte [] buf = new byte[readBytes];
                while (is.read(buf,offset,readBytes) != -1) {
                    System.out.println("can read bytes from server: "+ readBytes);
                    readBytes = is.available();
                    if (readBytes ==  0) {
                        readBytes = 1;
                    }
                    if(readBytes < 0) {
                        System.out.println("Error. readBytes < 0: readBytes = "+readBytes);
                    } else {
                        byte [] tmp = new byte[buf.length];
                        System.arraycopy(buf,0,tmp,0,buf.length);
                        buf = new byte [buf.length + readBytes];
                        System.arraycopy(tmp,0,buf,0,tmp.length);
                        offset = tmp.length;
                    }
                }
                System.out.println("buf.len = "+buf.length);
                System.out.println("create ByteArrayInputStream from file server InputStream: "+buf);

                System.out.println("create Player as (Player)Manager.createPlayer((InputStream) new ByteArrayInputStream(buf),\"audio/x-wav\")");
                pl = (Player)Manager.createPlayer((InputStream) new ByteArrayInputStream(buf),"audio/x-wav");

                System.out.println("Player created: "+pl);
                pl.addPlayerListener(this);

                System.out.println("start realize player");
                pl.realize();
                System.out.println("Player realized()");
                pl.prefetch();
                System.out.println("Player prefetched()");
                pl.start();
            } catch (IOException e) {
                e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
                System.out.println("IOException during create Player: "+e.toString());
                pl = null;
            } catch (MediaException e) {
                System.out.println("MediaException during create Player: "+e.toString());
                e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
                pl = null;
            } catch(Exception e) {
                System.out.println("Not occured exception: "+e.toString());
                e.printStackTrace();
                pl = null;
            }



Это сообщение отредактировал(а) Dancer - 19.1.2006, 14:39


--------------------
У программистов есть великая тайна: всё, что только можно, было давно кем-то когда-то написано. Разработчику только нужно знать в какое место кода какие строчки вставить! smile
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса

  • Прежде чем задать вопрос прочтите это!
  • Литература по Java находится здесь.
  • Литературу по Java обсуждаем здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда

  • FAQ раздела лежит здесь!
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java ME (J2ME) | Следующая тема »


 




[ Время генерации скрипта: 0.0713 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.