загрузка...
загрузка...
загрузка...

Детализация по запросу

загрузка...
загрузка...

Блог о пеленгации

Тема поста:

Запись звука на Android

Здравствуйте, наши пользователи.
Данная статья про такую тему, как запись звука в программах для Android и в частности в нашем продукте. Крайняя необходимость такого описания возникла с выходом версии пеленгатора номер 23. В текущей статье мы напишем почему все-таки мы "вынесли" все параметры записи на выбор пользователя и порекомендуем что можно, а что нельзя.


1. Источник записи
"Устройство" с которого будет "сниматься" весь аудио трафик.
Источники записи для звонков Источники записи для окружающей среды
Источники записи звонков Источники записи окружающей среды
Список доступных источников представлен ниже:

Название в программе Описание
Microphone Запись непосредственно с микрофона телефона
Call line Трафик снимается непосредственно с линии звонка
Down link Аудио-данные в телефонном звонке от собеседника (Rx - данные)
Up link Аудио-данные в телефонном звонке от абонента (Tx - данные)
Camcorder Запись с микрофона, встроенного в камеру телефона
Recognition По сути микрофон, только настроенный на распознавание голоса

Что использовать для записи окружающей среды?
Для записи окружающей среды использовать надо Microphone либо Camcorder либо Recognition. Бывали случаи (но это не закономерность!), что при наличии микрофона в камере, с него по качеству записи и по амплитуде звук получался лучше. По умолчанию в нашей программе стоит источник записи - микрофон, тк он по факту всегда есть в android аппаратах. Далее все предложенные варианты - вы тестирует на свой страх и риск.

Что использовать для записи звонков?
Тут дело обстоит очень интересно... В теории способов записи звонков "много" можно и линию записать можно и отдельно абонента можно отдельно и собеседника. Но это может os android, а не само устройство. Сама операционная система общается с железом устройства через такую связку: jni->lib->unix->device. Не вдавайтесь в подробности последнего предложения). Android "не напрямую" взаимодействует с любым периферийным устройством, а через библиотеки, драйвера, написанные программистами производителей мобильных телефонов. Смысл прост: большинство производителей телефонов в стоках своих прошивках, сборках запрещают запись непосредственно самого телефонного разговора. Делается это потому, что в странах производителей это запрещено законом.

Решений тут несколько:

  • Надеяться на удачу и пробовать различные опции по записи звонка в программе.
  • Искать пачти на библиотеки, ядро вашей марки телефона, где ограничение на запись снята.
  • Найти исходники своей версии операционной системы для вашего устройства и поменять пару мест.
  • Написать библиотеку на си и отдать нам), а мы уже в свою очередь обещаем включить данный патч в программу.
После небольшого вышеизложенного объяснения я думаю нам не стоит оправдываться, почему на запись звонка мы тоже поставили источник: микрофон. А для тех, кто не понял - данная опция сделана по умолчанию для того, чтобы хоть что-то записать и показать работоспособность программы в дефолтовых настройках, тк большиство людей просто напросто никогда не меняют настройки при первом запуске программы.

Не забываем!
Если вы поменяли какую-то настройку записи, то удосужтесь проверить её на работоспособность. Сделайте звонок или запрос на запись окружающей среды и посмотрите в личный кабинет, есть ли там вообще запись и проигрывается ли она, если есть!


2. Кодеки, выходной формат звукового файла и другие связанные настройки записи.

Кодек - это механизм/алгоритм сжатия данных.
Формат файла - это механизм/алгоритм/контейнер хранения данных в файле.
Сначала расскажу о всех возможных значениях, потом опишу что и как использовать.


Название в программе Минимальная версия Android Описание
AMR_NB 1 (BASE) Adaptive multi rate narrow band. Кодирование звука специально предназначенное сжатия сигнала в речевом диапазоне частот. Узкополосный вариант AMR кодека. Судя по опыту и по статистике тестирования и по документам - есть различные варианты реализации кодека с различными скоростями потока данных (битрейт). Значит оно неизменяемое для устройства, то есть какое есть такое есть и любое изменение битрейта/частоты дискретизации для указанного кодека не имеет значения.
AMR_WB 2.3.3 (GINGERBREAD) Adaptive multi rate wide band. Кодирование звука специально предназначенное сжатия сигнала в речевом диапазоне частот. Широкополосный вариант AMR. Изначально специально создано было для передачи речи в передачах по Voip. Не тестировалось, но есть предположение, что скорость потока данных так же неизменяема программно. Но изначально запись будет качественне по битррейту и частоте.
AAC 2.3.3 (GINGERBREAD) Advanced Audio Coding. Широкополосный алгоритм кодирования аудио данных. Лучше mp3. Программно можно менять частоту/битрейт/количество каналов.
AAC_ELD 4.1 (JELLY_BEAN) Enhanced Low Delay AAC.
HE_AAC 4.1 (JELLY_BEAN) High-Efficiency Advanced Audio Codin. Высокоэффективное усовершенствованное аудиокодирование. Требует больше вычислительных затрат по сравнению с вернхи кодеком: AAC_ELD. По сути доработанная версия AAC_ELD.

При описании верхней таблицы вскользь упоминались такие дополнительные параметры как: битрейт/частота/количество каналов. Эти настройки являются дополнительми, тк их изменение не может влиять на качество звучания, если сам кодек это не позволяет. И поэтому очередная таблицы, которая покажет для каких кодеков можно изменять дополнительные параметры и следовательно можно получить изменения качества в звучании.


Кодек Влияние изменения доп. настроек Тестировалось?
AMR_NB Нет Да
AMR_WB Нет Да
AAC Да Да
AAC_ELD Да Нет
HE_AAC Да Нет

Разрешенные в программе форматы хранения аудио данных:


Название Минимальная версия Android Описание
AMR_NB 2.3.3 (GINGERBREAD) Неофицальное расширение файла *.amr
AMR_WB 2.3.3 (GINGERBREAD) Неофицальное расширение файла *.amr
MPEG_4 1 (BASE) Неофицальное расширение файла *.mp4
THREE_GPP 1 (BASE) Неофицальное расширение *.3gp
AAC_ADTS 4.1 (JELLY_BEAN) Неофицальное расширение файла *.mp4, *.m4a, *.aac

Если говорить "по правде", то эти расширения файлов ничего и не значат, тк все современные плееры проигрывают аудио данные по тому алгоритму, который заложем в самом содержимом файла. Это проблема файловых менеджеров и операционной системы, что именно назначить на обработку того или иного файла в системе. Что-то отвлеклись)
Имея на руках такое описание вы можете настроить запись звонка или запись окружающей среды для себя как вам угодно. Но:

Не забываем!
Если вы поменяли какую-то настройку записи, то удосужтесь проверить её на работоспособность. Сделайте звонок или запрос на запись окружающей среды и посмотрите в личный кабинет, есть ли там вообще запись и проигрывается ли она, если есть!

Что поменяется при проигрывании файлов в личном кабинете MbLoc?
Действительно с такими новвоведениями изменится проигрывание записи в личном кабинете. Наш сервер преобразует только аудио данные от клиентских программ, записанные кодеком AMR_NB. Следовательно другие испольуемые кодеки сервером обрабатываться не будут, но они никуда не потеряеются! У вас вместо проигрывателя записи будет просто ссылка на файл. Вы смело щелкаете на неё (сслыку) и скачиваете (файл) на свой компьютер. Далее средствами программного обеспечения своего ЭВМ проигрываете скаченный файл. Файл всегда будет с расширением AMR, но вы на это не ведитесь, тк я вам выше писал это просто нелегитимное ( да да мы в трендах текущего сезона )) ) расширение, которое ничего не обозначает (это сделано для удобства просто напросто).

А не проще бы написать искусственный интеллект, который бы определял поддерживаемые варианты записи и выбирал оптимальные?
Не проще по нескольким причинам:

  1. Сейчас на современных телефонах очень большой выбор поддерживаемых настроек записи звука. И мы не знаем как себя "поведет" качество звучания аудио потока при определенных параметрах. В поддержку данного факта служат два наблюдения, основанных на опыте: 1. При выборе даже "слабых" кодеков записи можно добиться качества выше, чем если бы мы выбрали кодеки современнее. 2. Глупо писать анализатор всех вариантов записей. При текущем положении получается множетсво вариантов, которые надо проверить с различными параметрами записи.
  2. Что считается оптимальным? Может для кого-то в условиях использования на телефоне только GPRS интернета важен мобильный трафик, для кого-то высокое качество записи. И золотой середины, как кто-то бы не говорил, что надо сделать что-то среднее, НЕТ. Если сделать среднее, то и программа будет средняя). А так есть круг - кому нравится и круг - кто просто пишет, что мы "дебилы с мозгами")
  3. Программа сделана для людей, а не для извлечения сверхприбылей!
  4. Программа на первоначальных настройках расчитана на гарантированную работу, чтобы у пользователя не возникло паники и отвращения, что "нефига не работает".
  5. Сколько людей - столько мнений.

Заключение
Мы думаем, что данная статья поможет вам разобраться с новыми параметрами записи. Всем спасибо за внимание. Если что-то не так пшием не стесняеся.

Вставить карту яндекс на сайт

Работа с сетью из мидлета средствами JavaMe

Использование библиотеки Bouncy Castle в JavaMe (Часть 1)

Использование библиотеки Bouncy Castle в JavaMe (Часть 2)

Запись звонков

Найти человека по номеру телефона

Файловая система Android

Запись звука на Android

Локация в JavaCard

Философия прослушки

MBLOC.RU
Copyright © MBLOC.RU Все права защищены от взлома и подделки данного сайта. Распространение информации без разрешения владельца данного сайта запрещается и карается всей строгостью закона.