Форум программистов, компьютерный форум CyberForum.ru

Отображение содержимого звукового буфера в логах - Android

Восстановить пароль Регистрация
 
 
yura91
28 / 26 / 2
Регистрация: 23.10.2013
Сообщений: 2,136
08.10.2015, 19:47     Отображение содержимого звукового буфера в логах #1
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
while(!stopped)
            {
                
                short[] buffer = buffers[ix++ % buffers.length];
                //short[] buffer = new short[160];
                int n = recorder.read(buffer, 0, buffer.length);
 
                track.write(buffer, 0, buffer.length);
                Log.d("Func", " " + buffer); здесь выводится белеберда
            }
            }
       catch(Throwable x)
        {
            Log.d("Func", "Error reading voice audio", x);
        }
Я считываю звук с микрофона в буфер. Звук приложение воспроизводит нормально, но когда я вывожу содержимое буфера в лог то выводятся вот такие символы [S@418982c8 почему?? Можно ли содержимое буфера в котором звук отобразить в логах или нужно писать только в звуковой файл??
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
YuraAAA
 Аватар для YuraAAA
1563 / 1305 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
08.10.2015, 20:16     Отображение содержимого звукового буфера в логах #2
yura91, буфер содержит байты. Что Вы хотите увидеть там? Писать в файл конечно же. Или Вы хотите чтобы логи звуки воспроизводили???
yura91
28 / 26 / 2
Регистрация: 23.10.2013
Сообщений: 2,136
08.10.2015, 21:48  [ТС]     Отображение содержимого звукового буфера в логах #3
а буфер звука можно в JSON запихнуть и передать на сервер по TCP??
vxg
Модератор
 Аватар для vxg
2722 / 1733 / 172
Регистрация: 13.01.2012
Сообщений: 6,489
09.10.2015, 10:43     Отображение содержимого звукового буфера в логах #4
Цитата Сообщение от yura91 Посмотреть сообщение
а буфер звука можно в JSON запихнуть и передать на сервер по TCP??
можно запихнуть в любую обложку которая способна донести байтовый поток - хоть чистыми байтами посылайте. только не забудьте послать характеристики потока (количество каналов, частота, количество бит на отсчет). приложение Audio Control так и делает - перекидывает звук с одного телефона или пк (выступает в роли сервера) на другой телефон (выступает в роли клиента)
yura91
28 / 26 / 2
Регистрация: 23.10.2013
Сообщений: 2,136
09.10.2015, 12:57  [ТС]     Отображение содержимого звукового буфера в логах #5
а как получить эти все характеристики??

Добавлено через 1 минуту
и что понимается под любой обложкой??
vxg
Модератор
 Аватар для vxg
2722 / 1733 / 172
Регистрация: 13.01.2012
Сообщений: 6,489
09.10.2015, 13:04     Отображение содержимого звукового буфера в логах #6
Цитата Сообщение от yura91 Посмотреть сообщение
а как получить эти все характеристики?
ну вы же считываете звук с микрофона и даже как то его воспроизводите в приложении? все это возможно только если вы их знаете... или вы не через AudioRecord/AudioTrack работаете?

Добавлено через 58 секунд
Цитата Сообщение от yura91 Посмотреть сообщение
и что понимается под любой обложкой?
ну вот вы хотите в JSON запихнуть. потом захотите в SOAP. или почтовый протокол или POST запрос... это и есть обложка
yura91
28 / 26 / 2
Регистрация: 23.10.2013
Сообщений: 2,136
09.10.2015, 13:17  [ТС]     Отображение содержимого звукового буфера в логах #7
только не забудьте послать характеристики потока (количество каналов, частота, количество бит на отсчет)
А для чего эти характеристики нужны на сервере??

Добавлено через 1 минуту
Да верно через AudioRecord но на сервере чтобы воспроизвести звук мне тоже нужно знать эти характеристики??
vxg
Модератор
 Аватар для vxg
2722 / 1733 / 172
Регистрация: 13.01.2012
Сообщений: 6,489
09.10.2015, 13:51     Отображение содержимого звукового буфера в логах #8
вот у вас поток бит... откуда сервер узнает что у вас там звук 5.1 16 бит 44100 гц?
Spelcrawler
521 / 491 / 110
Регистрация: 12.03.2014
Сообщений: 1,641
Завершенные тесты: 1
09.10.2015, 14:08     Отображение содержимого звукового буфера в логах #9
vxg, а оно разве не записано в начале этого потока? Т.е. если знать формат файла, который должен получиться из этого потока и иметь обработчик этого формата - никакая доп. информация не нужна же вроде? Или я ошибаюсь?
yura91
28 / 26 / 2
Регистрация: 23.10.2013
Сообщений: 2,136
09.10.2015, 15:03  [ТС]     Отображение содержимого звукового буфера в логах #10
А как записать байты звука из приложения просто в файл ??

Добавлено через 5 минут
у меня есть буфер звуковых байт в приложении и как этот буфер записать в звуковой файл?? можно ли это вообще?

Добавлено через 10 минут
ну или как его можно проиграть этот звук который пришел на сервер??
Valakin
 Аватар для Valakin
430 / 96 / 15
Регистрация: 21.02.2015
Сообщений: 714
09.10.2015, 15:09     Отображение содержимого звукового буфера в логах #11
Цитата Сообщение от yura91 Посмотреть сообщение
ну или как его можно проиграть этот звук который пришел на сервер??
проиграть просто - отправить обратно на телефон и проиграть
vxg
Модератор
 Аватар для vxg
2722 / 1733 / 172
Регистрация: 13.01.2012
Сообщений: 6,489
09.10.2015, 15:54     Отображение содержимого звукового буфера в логах #12
Цитата Сообщение от yura91 Посмотреть сообщение
А как записать байты звука из приложения просто в файл ??
вот так можно записать заголовок. ну а после него пойдут ваши данные
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
    private void writeWavHeader(int recorded) throws IOException {
        /*
        DWORD rId; //"RIFF" = 0x46464952
        DWORD rLen; //36 + dLen
        DWORD wId; //"WAVE" = 0x45564157
        DWORD fId; //"fmt " = 0x20746D66
        DWORD fLen; //16
        WORD wFormatTag; /1 (WAVE_FORMAT_PCM)
        WORD nChannels;
        DWORD nSamplesPerSec;
        DWORD nAvgBytesPerSec;
        WORD nBlockAlign;
        WORD wBitsPerSample;
        DWORD dId; //"data" = 0x61746164
        DWORD dLen;
        */
        
        recordOs.write(ByteBuffer.allocate(4).order(ByteOrder.LITTLE_ENDIAN).putInt(0x46464952).array());
        recordOs.write(ByteBuffer.allocate(4).order(ByteOrder.LITTLE_ENDIAN).putInt(36 + recorded).array());
        recordOs.write(ByteBuffer.allocate(4).order(ByteOrder.LITTLE_ENDIAN).putInt(0x45564157).array());
        recordOs.write(ByteBuffer.allocate(4).order(ByteOrder.LITTLE_ENDIAN).putInt(0x20746D66).array());
        recordOs.write(ByteBuffer.allocate(4).order(ByteOrder.LITTLE_ENDIAN).putInt(16).array());
        recordOs.write(ByteBuffer.allocate(2).order(ByteOrder.LITTLE_ENDIAN).putShort((short)1).array());
        recordOs.write(ByteBuffer.allocate(2).order(ByteOrder.LITTLE_ENDIAN).putShort((short)nChannels).array());
        recordOs.write(ByteBuffer.allocate(4).order(ByteOrder.LITTLE_ENDIAN).putInt(nSamplesPerSec).array());
        recordOs.write(ByteBuffer.allocate(4).order(ByteOrder.LITTLE_ENDIAN).putInt(nSamplesPerSec * nChannels * bitsPerSample / 8).array());
        recordOs.write(ByteBuffer.allocate(2).order(ByteOrder.LITTLE_ENDIAN).putShort((short)(nChannels * bitsPerSample / 8)).array());
        recordOs.write(ByteBuffer.allocate(2).order(ByteOrder.LITTLE_ENDIAN).putShort((short)bitsPerSample).array());
        recordOs.write(ByteBuffer.allocate(4).order(ByteOrder.LITTLE_ENDIAN).putInt(0x61746164).array());
        recordOs.write(ByteBuffer.allocate(4).order(ByteOrder.LITTLE_ENDIAN).putInt(recorded).array());
    }
Добавлено через 4 минуты
Цитата Сообщение от Spelcrawler Посмотреть сообщение
а оно разве не записано в начале этого потока?
если вы ее туда не записали то откуда она там?
yura91
28 / 26 / 2
Регистрация: 23.10.2013
Сообщений: 2,136
09.10.2015, 16:00  [ТС]     Отображение содержимого звукового буфера в логах #13
а что в этом заголовке содержится??что за инфа??и где путь к самому файлу куда этот заголовок будет записан??
vxg
Модератор
 Аватар для vxg
2722 / 1733 / 172
Регистрация: 13.01.2012
Сообщений: 6,489
09.10.2015, 16:09     Отображение содержимого звукового буфера в логах #14
Цитата Сообщение от yura91 Посмотреть сообщение
а что в этом заголовке содержится??
это заголовок обычного wav файла, что в нем лежит можно почитать в описании формата или чисто ради любознательности приблизительно на глаз прикинуть по коду
Цитата Сообщение от yura91 Посмотреть сообщение
и где путь к самому файлу куда этот заголовок будет записан??
создание файла и запись в него данных вам придется реализовать самому - эта задача не является ключевой судя по вашему вопросу
yura91
28 / 26 / 2
Регистрация: 23.10.2013
Сообщений: 2,136
09.10.2015, 17:06  [ТС]     Отображение содержимого звукового буфера в логах #15
recordOs.write(ByteBuffer.allocate(4).order(ByteOrder.LITTLE_ENDIAN).putInt(0x46464952).array());

в какую переменную сохранит результат данная операция?

Добавлено через 2 минуты
мне же нужно знать какую переменную записывать в файл?? я его создам в файловой системе а дальше в него же надо сначала заголовок записать. Приведенный выше код только генерирует заголовок?? Он же никуда его не записывает??
Spelcrawler
521 / 491 / 110
Регистрация: 12.03.2014
Сообщений: 1,641
Завершенные тесты: 1
09.10.2015, 17:17     Отображение содержимого звукового буфера в логах #16
Цитата Сообщение от vxg Посмотреть сообщение
если вы ее туда не записали то откуда она там?
А при старте записи (через диктофон) оно туда не запишется?
vxg
Модератор
 Аватар для vxg
2722 / 1733 / 172
Регистрация: 13.01.2012
Сообщений: 6,489
09.10.2015, 17:25     Отображение содержимого звукового буфера в логах #17
Цитата Сообщение от yura91 Посмотреть сообщение
в какую переменную сохранит результат данная операция?
Java
1
2
3
4
5
6
7
8
9
10
11
try {
    File recordFile = new File(folder, fileName); //тут на самом деле должны быть папка и имя файла
    FileOutputStream recordOs = new FileOutputStream(recordFile);
    int recorded = 123; //тут на самом деле должно быть сколько вы байт записали
    writeWavHeader(recorded); //в оригинале recordOs была глобальной статической поэтому решите вопрос как ее отдать в функцию формирующую заголовок сами
    byte[] buffer = new byte[recorded]; //тут на самом деле должны быть ваши байты
    recordOs.write(buffer, 0, recorded);
    recordOs.flush();
    recordOs.close();
} catch (Exception e) {
}
Добавлено через 1 минуту
Цитата Сообщение от Spelcrawler Посмотреть сообщение
А при старте записи (через диктофон) оно туда не запишется?
нет если вы имеете ввиду диктофон=AudioRecord
yura91
28 / 26 / 2
Регистрация: 23.10.2013
Сообщений: 2,136
14.10.2015, 00:56  [ТС]     Отображение содержимого звукового буфера в логах #18
recordOs.write(ByteBuffer.allocate(4).order(ByteOrder.LITTLE_ENDIAN).putInt(0x46464952).array());

что записывает в заголовок эта строчка кода??
vxg
Модератор
 Аватар для vxg
2722 / 1733 / 172
Регистрация: 13.01.2012
Сообщений: 6,489
14.10.2015, 16:40     Отображение содержимого звукового буфера в логах #19
Цитата Сообщение от yura91 Посмотреть сообщение
что записывает в заголовок эта строчка кода??
ну конечно же она записывает в заголовок CCV вашей банковской карты!! вы не можете поглядеть что ли на функцию записи заголовка? "RIFF" = 0x46464952
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.10.2015, 14:37     Отображение содержимого звукового буфера в логах
Еще ссылки по теме:

Как заполнить заголовок звукового файла? Android
Обновление содержимого Recyclerview Android
Android Обновление содержимого экрана
Android Не могу разобраться в логах, где ошибка?
Генератор звукового сигнала Android

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
yura91
28 / 26 / 2
Регистрация: 23.10.2013
Сообщений: 2,136
15.10.2015, 14:37  [ТС]     Отображение содержимого звукового буфера в логах #20
"RIFF" = 0x46464952 я просто не знаю что это за значение?? зачем оно записывается??

Добавлено через 35 секунд
0x46464952 это шестнадцатиричный вид насколько я понимаю??
Yandex
Объявления
15.10.2015, 14:37     Отображение содержимого звукового буфера в логах
Ответ Создать тему
Опции темы

Текущее время: 22:35. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru