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

MediaCodec - декодирование сжатого звука - Программирование Android

Войти
Регистрация
Восстановить пароль
Другие темы раздела
Программирование Android Не удается подключиться к БД http://www.cyberforum.ru/android-dev/thread1691972.html
Здравствуйте. Помогите решить проблему с подключением к БД. package com.example.s.park; import android.os.Handler; import android.support.v7.app.AppCompatActivity; import android.os.Bundle;...
Программирование Android Мобильная версия сайта в виде приложения Доброго времени суток, уважаемые форумчане! У меня задача - приложение под Android - мобильная версия сайта, причем основной функционал должен быть доступным в режиме офф-лайн, при наличии интернета... http://www.cyberforum.ru/android-dev/thread1691908.html
Хранение обьектов в SQLite Программирование Android
У меня есть класс Document который содержит следующие поля - Номер: строка, Дата: дата, Пользователь: строка, Сумма: вещественное, Валюта: строка, Курс Валюты: вещественное, Товар: строка,...
Free for non-commercial use icons? Программирование Android
Доброе утро! Недавно нашел в сети иконки, где по поводу лицензии было написано: Free for non-commercial use. Могу ли я использовать их в своем бесплатном приложении и выложить его на Гугл Плей?
Программирование Android Принципы разработки интерфейса приложения http://www.cyberforum.ru/android-dev/thread1691378.html
Здравствуйте, хочу создать приложение с большим количеством окон, и чтобы ориентировано было на планшеты и телефоны ( смена ориентации и размер экрана). Создавать layout под экраны считаю не...
Программирование Android Работа со SQLite. При обращение к таблице выдаёт сообщение о её отсутствии Всем доброго времени суток! Товарищи, пожалуйста подскажите где я не прав, уже начинаю чувствовать себя идиотом... Создаю базу данных, заполняю её, затем получаю список того, что запомнил и... подробнее

Показать сообщение отдельно
Mike1991
3 / 3 / 0
Регистрация: 26.08.2013
Сообщений: 13

MediaCodec - декодирование сжатого звука - Программирование Android

22.03.2016, 20:10. Просмотров 243. Ответов 1
Метки (Все метки)

Здравствуйте, уважаемые форумчане.

Пытаюсь при помощи MediaCodec из сжатых звуковых файлов формата MPEG Layer-3 получить исходные звуковые сэмплы.

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
//Фреймы из mp3-файла достаю при помощи MediaExtractor:
MediaExtractor me = new MediaExtractor();
me.setDataSource(srcFileName); //srcFileName - исходный mp3-файл
me.selectTrack(0);
MediaFormat mf = me.getTrackFormat(0);
 
//Затем, создаю экземпляр MediaCodec, настраиваю его, после чего вызываю метод start():
 
MediaCodec mc = MediaCodec.createDecoderByType(mf.getString(MediaFormat.KEY_MIME));
mc.configure(mf, null, null, 0);
mc.start();
 
//Создаю 2 ссылки на массивы входного и выходного буферов
ByteBuffer[] inputBuffers = mc.getInputBuffers();
ByteBuffer[] outputBuffers = mc.getOutputBuffers();
 
//Далее запрашиваем входной буфер и получаем его индекс
int ib_ind = mc.dequeueInputBuffer(10000);
if(ib_ind>=0){
    ByteBuffer ib = inputBuffers[ib_ind];
    int sampleSize = me.readSampleData(ib, 0);
    mc.queueInputBuffer(ib_ind, 0, sampleSize, me.getSampleTime(), MediaCodec.BUFFER_FLAG_END_OF_STREAM);
}
//Приведённый выше код работает нормально, данные из mp3-фрейма записываются в inputbuffer и он возвращается обратно в очередь
 
//Далее создаём экземпляр BufferInfo и пытаемся получить output-буфер
MediaCodec.BufferInfo b_info = new MediaCodec.BufferInfo();
int ob_ind = mc.dequeueOutputBuffer(b_info, 10000);
Но в ob_ind у нас в итоге всё время выходит значение -2 (INFO_OUTPUT_FORMAT_CHANGED). При помощи метода getOutputFormat получаем выходной формат - audio/raw, вроде бы как раз то, что мне нужно.

Вызываю повторно метод mc.dequeueOutputBuffer(...) с теми же параметрами, получаю индекс буфера - 0. Однако работать с этим буфером невозможно, поскольку limit у него выставлен в 0.

Может, я что-то делаю неправильно? Объясните, если не трудно. Официальную документацию по MediaCodec перечитал раз 10, на разных форумах искал примеры, вроде всё верно делаю, но то ли лыжи не едут, то ли я не совсем адекватный человек. Тестирую код на эмуляторе.

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