Как записать микрофон в более сжатый формат во время вызова WebRTC на Android?

У меня есть приложение, использующее WebRTC. Но во время разговора мне нужно записывать микрофон. WebRTC имеет объект WebRTCAudioRecord для записи звука, но аудиофайл такой большой (PCM_16bit). Я хочу записать, но в меньшем размере.

Я пробовал MediaRecorder, но это не работает, потому что WebRTC записывается, а MediaRecorder не имеет разрешения на запись во время звонка.

Кто-нибудь сделал это или есть идеи, которые могли бы мне помочь?


person Tan Pham    schedule 20.07.2018    source источник
comment
Привет, @Tan Pham. Не могли бы вы поделиться здесь своим классом WebRTCAudioRecord, чтобы он помог мне записывать звук во время вызова webrtc на Android?   -  person vasupujy    schedule 30.10.2019
comment
@vasupujy этот класс уже был в библиотеке WebRTC. Вы можете увидеть здесь: WebRtcAudioRecord   -  person Tan Pham    schedule 17.12.2019


Ответы (1)


Webrtc считается гораздо лучшим инструментом предварительной обработки для аудио и видео.

Собственная разработка Webrtc включает в себя полностью optimized native C and C++ классы, чтобы поддерживать прекрасное качество речи и разборчивость аудио и видео, что весьма интересно.

Посетите справочную ссылку: https://github.com/jitsi/webrtc/tree/master/examples регулярно.


Как говорится в проблеме;

Я хочу записать, но меньшего размера. Я пробовал MediaRecorder, и он не работает, потому что WebRtc записывается, а MediaRecorder не имеет разрешения на запись во время звонка.


Прежде всего, чтобы оценить reduce or minimize размер ваших записанных данных (байтов аудио), вам следует изучить различные типы речевых кодеков, которые в основном уменьшают размер записываемых данных за счет сохранения sound quality на уровне. Чтобы увидеть различные голосовые кодеки, воспользуйтесь следующими хорошо известными речевыми кодеками:

Что касается размера аудиоданных, он в основном зависит от частоты дискретизации и времени, для которых вы записываете фрагмент или аудиопакет. .

Supppose time = 40ms ---then---> Reocrded Data = 640 bytes (or 320 short)

Size of recorded data is **directly proportional** to both Time and Sample rate.

Sample Rate = 8000 or 16000 etc. (greater the sample rate, greater would be the size)

Чтобы увидеть более подробную информацию, посетите: представление данных. Но Webrtc в основном обрабатывают 10ms аудиоданные для предварительной обработки, при которой размер пакета уменьшается до 160 bytes.


Во-вторых, если вы хотите использовать несколько экземпляров AudioRecorder одновременно, это практически невозможно. Поскольку WebRtc уже записывает с микрофона, то практически экземпляр MediaRecorder не будет выполнять никаких функций, поскольку в этом ответе показано несколько аудиозаписей одновременно. Webrtc предлагает следующие методы для управления байтами аудио, например:

 1. Push input PCM data into `ProcessCaptureStream` to process in place.
 2. Get the processed PCM data from `ProcessCaptureStream` and send to far-end.
 3. The far end pushed the received data into `ProcessRenderStream`.

Я сохранил полное руководство, связанное с обработкой звука с помощью Webrtc, вы можете посетить его, чтобы увидеть более подробную информацию; Android-Audio-Processing-Using-Webrtc.

person Muhammad Usman    schedule 24.10.2019