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

Программирование Android

Войти
Регистрация
Восстановить пароль
 
 
yura91
30 / 28 / 2
Регистрация: 23.10.2013
Сообщений: 2,274
#1

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

08.10.2015, 19:47. Просмотров 650. Ответов 22
Метки нет (Все метки)

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 почему?? Можно ли содержимое буфера в котором звук отобразить в логах или нужно писать только в звуковой файл??
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.10.2015, 19:47
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Отображение содержимого звукового буфера в логах (Программирование Android):

Не могу разобраться в логах, где ошибка? - Программирование Android
Приложение не запускается на Андроид устройствах Помогите пожалуйста разобраться в этом!! 06-07 10:35:51.829:...

Генератор звукового сигнала - Программирование Android
Здравствуйте, кто может помочь написать простенький генератор сигнала, синус. Важна любая помощь. По интернетам смотрел информации мало....

Передача звукового потока в микрофон - Программирование Android
Здравствуйте все форумчане! Хотел бы узнать в какую мне сторону двигаться. Задача такова: Есть сгенерированный звуковой поток. Необходимо...

Как заполнить заголовок звукового файла? - Программирование Android
public class AudioRecord { byte header = new byte; byte channels ; void run() { channels = 1;

Отображение в логах неправильных путей в HTML - Apache, htaccess
Всем доброго времени суток! Есть стандартный Apache 2, простой HTML c CSS. Если внутри HTML путь до CSS неправильный, то сайт/страница...

Удаление содержимого звукового файла - Delphi
у меня есть файл (wav или mp3). мне нужно при нажатии на кнопку удалить содержимое этого файла так , чтобы ни один аудио-проигрыватель не...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
YuraAAA
1574 / 1316 / 271
Регистрация: 25.10.2009
Сообщений: 3,438
Записей в блоге: 2
08.10.2015, 20:16 #2
yura91, буфер содержит байты. Что Вы хотите увидеть там? Писать в файл конечно же. Или Вы хотите чтобы логи звуки воспроизводили???
0
yura91
30 / 28 / 2
Регистрация: 23.10.2013
Сообщений: 2,274
08.10.2015, 21:48  [ТС] #3
а буфер звука можно в JSON запихнуть и передать на сервер по TCP??
0
vxg
Модератор
3163 / 1966 / 221
Регистрация: 13.01.2012
Сообщений: 7,526
09.10.2015, 10:43 #4
Цитата Сообщение от yura91 Посмотреть сообщение
а буфер звука можно в JSON запихнуть и передать на сервер по TCP??
можно запихнуть в любую обложку которая способна донести байтовый поток - хоть чистыми байтами посылайте. только не забудьте послать характеристики потока (количество каналов, частота, количество бит на отсчет). приложение Audio Control так и делает - перекидывает звук с одного телефона или пк (выступает в роли сервера) на другой телефон (выступает в роли клиента)
0
yura91
30 / 28 / 2
Регистрация: 23.10.2013
Сообщений: 2,274
09.10.2015, 12:57  [ТС] #5
а как получить эти все характеристики??

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

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

Добавлено через 1 минуту
Да верно через AudioRecord но на сервере чтобы воспроизвести звук мне тоже нужно знать эти характеристики??
0
vxg
Модератор
3163 / 1966 / 221
Регистрация: 13.01.2012
Сообщений: 7,526
09.10.2015, 13:51 #8
вот у вас поток бит... откуда сервер узнает что у вас там звук 5.1 16 бит 44100 гц?
0
Spelcrawler
526 / 496 / 111
Регистрация: 12.03.2014
Сообщений: 1,649
Завершенные тесты: 1
09.10.2015, 14:08 #9
vxg, а оно разве не записано в начале этого потока? Т.е. если знать формат файла, который должен получиться из этого потока и иметь обработчик этого формата - никакая доп. информация не нужна же вроде? Или я ошибаюсь?
0
yura91
30 / 28 / 2
Регистрация: 23.10.2013
Сообщений: 2,274
09.10.2015, 15:03  [ТС] #10
А как записать байты звука из приложения просто в файл ??

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

Добавлено через 10 минут
ну или как его можно проиграть этот звук который пришел на сервер??
0
Valakin
431 / 97 / 15
Регистрация: 21.02.2015
Сообщений: 731
09.10.2015, 15:09 #11
Цитата Сообщение от yura91 Посмотреть сообщение
ну или как его можно проиграть этот звук который пришел на сервер??
проиграть просто - отправить обратно на телефон и проиграть
0
vxg
Модератор
3163 / 1966 / 221
Регистрация: 13.01.2012
Сообщений: 7,526
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 Посмотреть сообщение
а оно разве не записано в начале этого потока?
если вы ее туда не записали то откуда она там?
1
yura91
30 / 28 / 2
Регистрация: 23.10.2013
Сообщений: 2,274
09.10.2015, 16:00  [ТС] #13
а что в этом заголовке содержится??что за инфа??и где путь к самому файлу куда этот заголовок будет записан??
0
vxg
Модератор
3163 / 1966 / 221
Регистрация: 13.01.2012
Сообщений: 7,526
09.10.2015, 16:09 #14
Цитата Сообщение от yura91 Посмотреть сообщение
а что в этом заголовке содержится??
это заголовок обычного wav файла, что в нем лежит можно почитать в описании формата или чисто ради любознательности приблизительно на глаз прикинуть по коду
Цитата Сообщение от yura91 Посмотреть сообщение
и где путь к самому файлу куда этот заголовок будет записан??
создание файла и запись в него данных вам придется реализовать самому - эта задача не является ключевой судя по вашему вопросу
0
yura91
30 / 28 / 2
Регистрация: 23.10.2013
Сообщений: 2,274
09.10.2015, 17:06  [ТС] #15
recordOs.write(ByteBuffer.allocate(4).order(ByteOrder.LITTLE_ENDIAN).putInt(0x46464952).array());

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

Добавлено через 2 минуты
мне же нужно знать какую переменную записывать в файл?? я его создам в файловой системе а дальше в него же надо сначала заголовок записать. Приведенный выше код только генерирует заголовок?? Он же никуда его не записывает??
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.10.2015, 17:06
Привет! Вот еще темы с ответами:

Получение содержимого буфера обмена - C++ WinAPI
Добрый день. Подскажите пожалуйста, как извлечь текст из буфера обмена средствами WinAPI?

Вставка содержимого буфера обмена в textbox - C#
DllImport("user32.dll", SetLastError = true)] private static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, int...

Вставка содержимого буфера в Замещающий текст - VBA
Добрый день. Есть макрос в Ворде, который копирует подпись под рисунком и вставляет его в Замещающий/альтернативный текст. Код: ...

Сохранение и восстановление содержимого буфера обмена - Delphi
В буфере обмена содержится некая информация (неизвестно какая) в нескольких различных форматах. Как можно сохранить полностью все...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
09.10.2015, 17:06
Ответ Создать тему
Опции темы

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