#android #audio-recording #video-recording
#Android #запись звука #запись видео
Вопрос:
Я разрабатываю приложение для Android на основе звуковых и видеозаписей. Я хотел бы получить воспроизведение звука с микрофона в наушниках в режиме реального времени при предварительном просмотре и записи видео и звука.
То, что у меня есть сейчас, отлично работает в одиночку:
1) используйте мощную библиотеку для записи звука и его воспроизведения в режиме реального времени (во время предварительного просмотра и записи). За сценой он выполняет непосредственно с C работу AudioRecord, передавая буфер на выход (наушники). Цель состоит в том, чтобы применять звуковые эффекты к необработанному звуку в режиме реального времени.
2) захват видео с помощью MediaRecorder
Когда воспроизведение звука запущено, я пытаюсь запустить видеозапись, она вылетает при запуске :
E/MediaRecorder: start failed: -2147483648
Я полагаю, что я не могу запустить два процесса записи одновременно. Я думаю, что использование AudioRecord или сверхмощной библиотеки — хороший способ обработки необработанного звука, но я не могу понять, как записывать видео, не конфликтуя с текущей аудиозаписью.
Итак, есть ли способ реализовать мою функцию?
(minSdk 16)
Комментарии:
1. Мне удается записывать оба одновременно, используя MediaRecorder без AudioSource для видео (и избегая сложности MediaCodec без MediaMuxer как api16) и мою мощную библиотеку для аудио. После этого я объединяю свои два файла с помощью ffmpeg.
Ответ №1:
Согласно bigflake
Класс MediaCodec впервые стал доступен в Android 4.1 (API 16). Это было добавлено, чтобы разрешить прямой доступ к медиа-кодекам на устройстве.
В Android 4.3 (API 18) MediaCodec был расширен, чтобы включить способ обеспечения ввода через поверхность (с помощью метода createInputSurface). Это позволяет вводить данные из предварительного просмотра камеры или рендеринга OpenGL ES.
Поэтому, если это возможно, пожалуйста, подумайте об увеличении minSdk до 18 и используйте AudioVideoRecordingSample или HWEncoderExperiments в качестве примеров.
Комментарии:
1. Мне удается получить предварительный просмотр камеры на SurfaceView с помощью MediaCodec, это хорошее начало. Для записи я, безусловно, буду записывать в файл одновременно. Обычно моя звуковая часть может записываться одновременно.
2. Существует задержка между аудио и видео
3. Не лучший ответ, но принятый ответ: довольно хорошо работает с MediaCodec и API 18. Но мне нужно было сделать на API 16. Как я уже говорил в предыдущем комментарии, я отключил аудиоисточник со своего рекордера, уменьшил задержку между аудио и видео, производящими вычисления, и хорошее слияние с ffmpeg. Приветствую, ребята.