Реалізація запису аудіо в мобільному додатку

Реалізація запису аудіо в мобільному додатку Диктофон, войс-повідомлення, запис інтерв'ю — кожна задача висуває свої вимоги до аудіо. Войс-повідомлення має бути маленьким (AAC, 32 кбіт/с), подкаст — без втрат (WAV або FLAC, 44100 Гц). Починаємо з аудіосесії: неправильна категорія — і звук іде не

Розробка та підтримка будь-яких видів мобільних додатків:

Інформаційні та розважальні мобільні програми
Новинки, ігри, довідники, онлайн-каталоги, погодні, фітнес та здоров'я, туристичні, освітні, соціальні мережі та месенджери, квіз, блоги та подкасти, форуми, агрегатори
Мобільні програми електронної комерції
Інтернет-магазини, B2B-додатки, маркетплейси, онлайн-обмінники, кешбек-сервіси, біржі, дропшиппінг-платформи, програми лояльності, доставка їжі та товарів, платіжні системи
Мобільні програми для управління бізнес-процесами
CRM-системи, ERP-системи, управління проектами, інструменти для команди продажів, облік фінансів, управління виробництвом, логістика та доставка, управління персоналом, системи моніторингу даних
Мобільні програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, платформи надання електронних послуг, платформи кешбеку, відеохостинги, тематичні портали, платформи онлайн-бронювання та запису, платформи онлайн-торгівлі

Це лише деякі з типів мобільних додатків, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1734 послуг
Реалізація запису аудіо в мобільному додатку
Середній
від 1 дня до 3 днів

Наші компетенції:

Часті запитання

Останні роботи

  • image_mobile-applications_feedme_467_0.webp
    Розробка мобільного додатка для компанії FEEDME
    895
  • image_mobile-applications_xoomer_471_0.webp
    Розробка мобільного додатку для компанії XOOMER
    782
  • image_mobile-applications_rhl_428_0.webp
    Розробка мобільного додатку для компанії RHL
    1216
  • image_mobile-applications_zippy_411_0.webp
    Розробка мобільного додатку для компанії ZIPPY
    1079
  • image_mobile-applications_affhome_429_0.webp
    Розробка мобільного додатку для компанії Affhome
    1002
  • image_mobile-applications_flavors_409_0.webp
    Розробка мобільного додатку для компанії FLAVORS
    597

Реалізація запису аудіо в мобільному додатку

Диктофон, войс-повідомлення, запис інтерв'ю — кожна задача висуває свої вимоги до аудіо. Войс-повідомлення має бути маленьким (AAC, 32 кбіт/с), подкаст — без втрат (WAV або FLAC, 44100 Гц). Починаємо з аудіосесії: неправильна категорія — і звук іде не в той динамік, а інший додаток перехоплює запис. Ми вирішуємо ці проблеми на iOS та Android, використовуючи перевірені патерни. Досвід нашої команди — 10+ років у мобільній розробці, реалізовано 50+ проектів з аудіозаписом. Ми реалізували аудіозапис у додатках для журналістів, музикантів та месенджерів. Гарантуємо стабільну роботу навіть у фоні. Неправильна конфігурація призводить до спотворення звуку, обривів запису при згортанні та конфліктів з іншими аудіододатками. Ми навчилися уникати цих проблем і готові поділитися досвідом. У цій статті ви дізнаєтеся, як правильно налаштувати аудіосесію, обрати оптимальний формат, реалізувати візуалізацію та фоновий запис. На практиці зустрічаються проєкти, де аудіозапис реалізований з помилками — наприклад, неправильно обрано бітрейт (у 3 рази більший файл) або не налаштовано обробку переривань. Ми пропонуємо готове рішення, яке враховує всі нюанси. З нами ви отримаєте стабільний та продуктивний модуль запису, який легко інтегрується у ваш додаток.

Аудіосесія та категорії

iOS. AVAudioSession — центральний об'єкт керування. Детальніше про нього — у документації Apple. Для запису:

let session = AVAudioSession.sharedInstance() try session.setCategory(.playAndRecord, mode: .default, options: [.defaultToSpeaker, .allowBluetooth]) try session.setActive(true) 

.playAndRecord дозволяє одночасно відтворювати та писати. .allowBluetooth включає запис з AirPods. Без .defaultToSpeaker — звук при відтворенні йде в ухо, не в динамік.

Проблема, яка зустрічається в продакшені: інший додаток (навігатор, музичний плеєр) перехоплює сесію. Підписуємося на AVAudioSession.interruptionNotification, при .began паузимо запис, при .ended з .shouldResume — відновлюємо.

Android. AudioRecord для прямого доступу до PCM-даних. MediaRecorder — простіше, але менше контролю над форматом. Для більшості завдань MediaRecorder достатній (див. документацію Android):

mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC) mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4) mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC) mediaRecorder.setAudioSamplingRate(44100) mediaRecorder.setAudioEncodingBitRate(128000) 

VOICE_COMMUNICATION замість MIC включає ехоподавлення та шумоподавлення на рівні системи — корисно для войс-повідомлень.

Параметр iOS (AVAudioSession) Android (MediaRecorder)
Категорія .playAndRecord AudioSource.MIC
Формат M4A (AAC) MPEG-4 (AAC)
Частота 44100 Гц 44100 Гц
Фоновий запис UIBackgroundModes ForegroundService

Як обрати формат аудіозапису?

Вибір формату залежить від призначення. Для войс-повідомлень оптимальний AAC — він дає хорошу якість при низькому бітрейті, стискаючи в 2 рази краще за MP3. Для подкастів краще FLAC — стиснення без втрат при меншому розмірі, ніж WAV (на 60% менше). MP3 — універсальний вибір, але поступається AAC за розміром при тій же якості (файл на 40% більше). У таблиці нижче наведено характеристики популярних форматів.

Формат Розмір 1 хв Сумісність Застосування
AAC (M4A) ~480 КБ iOS, Android, Web войс-повідомлення
MP3 ~960 КБ всюди загальний випадок
WAV (PCM) ~10 МБ всюди без втрат, диктофон
FLAC ~3–5 МБ Android native, iOS 11+ без втрат, компактніше WAV
OGG/Opus ~300 КБ Android, Web оптимальний для VoIP

AAC перевершує MP3 за ефективністю стиснення: при однаковому бітрейті звучить краще, а розмір файлу менше на 50%. Для iOS-додатків використовуйте M4A-контейнер, для Android — MPEG-4.

Візуалізація рівня звуку

Амплітудний хвильовий індикатор — користувач бачить, що запис іде. На iOS: AVAudioRecorder.averagePower(forChannel: 0) повертає дБ (від -160 до 0). Нормалізуємо в 0..1:

let power = recorder.averagePower(forChannel: 0) let level = pow(10, power / 20) // dBFS → linear 

Опитуємо через Timer.scheduledTimer(withTimeInterval: 0.05) — 20 fps для плавної анімації. Це в 2 рази плавніше, ніж при 10 fps.

На Android: MediaRecorder.getMaxAmplitude() — максимальна амплітуда з останнього виклику (0–32767). Робимо Handler.postDelayed кожні 50 мс. Для точнішої візуалізації можна використовувати AudioRecord та аналізувати PCM-буфер у реальному часі, що дає 60 fps.

Для Flutter: record (pub.dev) надає onAmplitudeChanged stream, що спрощує інтеграцію.

Waveform при відтворенні — реалізація запису аудіо

Записаний файл аналізуємо офлайн: читаємо PCM-семпли, розбиваємо на чанки по N семплів, беремо RMS кожного чанка. Отримуємо масив float-значень — малюємо через Canvas або Path. На iOS потрібен AVAssetReader + AVAssetReaderTrackOutput з kAudioFormatLinearPCM.

Як забезпечити фоновий запис?

Якщо користувач згортає додаток — запис повинен тривати. iOS: UIBackgroundModes: audio в Info.plist, AVAudioSession залишається активною. Android: ForegroundService з типом microphone (android:foregroundServiceType="microphone" у маніфесті, обов'язково з Android 10). Сповіщення з кнопкою «Зупинити» — стандарт.

Без ForegroundService на Android 9+ система вб'є процес через кілька хвилин у фоні (зазвичай за 5 хвилин). На iOS без UIBackgroundModes запис зупиниться через 3 секунди після згортання. Налаштування фонового запису займає 1 годину при правильному підході.

Процес оцінки та роботи

  1. Аналіз вимог — визначаємо сценарії використання, цільові платформи, необхідні формати та функції (візуалізація, фоновий запис).
  2. Проектування архітектури — обираємо стек (Native або Flutter), проектуємо модуль запису з урахуванням аудіосесії та обробки переривань.
  3. Реалізація ядра — пишемо код для iOS (Swift) та Android (Kotlin), інтегруємо візуалізацію та збереження файлів.
  4. Тестування — перевіряємо на реальних пристроях, включаючи фоновий режим та переривання від інших додатків.
  5. Інтеграція та деплой — вбудовуємо модуль у проєкт, готуємо документацію, публікуємо в сторах.

Що входить у роботу

При замовленні реалізації аудіозапису ми надаємо:

  • Готовий модуль запису з вибором формату та візуалізацією.
  • Інтеграцію в існуючий проєкт (iOS, Android, Flutter).
  • Документацію по API та налаштуванню.
  • Тестування на реальних пристроях (включаючи фоновий режим).
  • Підтримку при публікації в App Store та Google Play.
Типові помилки при реалізації запису - Неправильна категорія аудіосесії на iOS (використовуйте .playAndRecord) - Відсутність ForegroundService на Android (запис уб'ють) - Вибір непідходящого формату (занадто великий файл)

Орієнтири по термінах та вартості

Базовий запис з візуалізацією рівня та збереженням файлу — 1–2 дні, від 500$. Повноцінний диктофон з waveform, паузою, перейменуванням та фоновим записом — 3–4 дні, від 1200$. Вартість розраховується індивідуально під ваш проєкт. Оцінимо проект безкоштовно — пишіть!

Замовте реалізацію аудіозапису для вашого додатку вже сьогодні. Зв'яжіться з нами для консультації — ми допоможемо обрати оптимальне рішення та оцінити терміни. Реалізуємо під ключ за 3–5 днів залежно від складності.