Ses kaydı için Android AudioRecord ve MediaRecorder


93

Android telefonuma insan sesini kaydetmek istiyorum. Android'in bunu yapmak için iki sınıfı olduğunu fark ettim: AudioRecord ve MediaRecorder . Biri bana ikisi arasındaki farkın ne olduğunu ve her biri için uygun kullanım durumlarının ne olduğunu söyleyebilir mi?

Genliği vb. Ölçmek için insan konuşmasını gerçek zamanlı olarak analiz edebilmek istiyorum. AudioRecord'un bu görev için daha uygun olduğunu anlamakta haklı mıyım?

Ses kaydı için resmi Android rehberi web sayfasında fark ettim, MediaRecorder'ı AudioRecord'dan bahsetmeden kullanıyorlar.

Yanıtlar:


84

Analizinizi kayıt devam ederken yapmak istiyorsanız AudioRecord, MediaRecorderotomatik olarak bir dosyaya kaydedeceği için kullanmanız gerekir . AudioRecorddezavantajı vardır, aradıktan sonra startRecording()verileri bulut sunucusundan kendiniz sorgulamanız gerekir AudioRecord. Ayrıca, verileri, dahili arabelleğin aşılmaması için yeterince hızlı okuyup işlemelisiniz (logcat çıktısına bakın, AudioRecordbunun ne zaman olacağını size söyleyecektir).


AudioRecord için örnek kodunuz var mı? Bulduğumların çoğu MediaRecorder ...
Rommel Paras

@RommelParas, android kaynağı için "telgrafta" bu sınıfa bakın. github.com/DrKLO/Telegram/blob/master/TMessagesProj/src/main/…
David,

@David Daha basit bir örnek biliyor musunuz? Kendi başına çalışan biri mi?
android geliştiricisi

@androiddeveloper maalesef hayır.
David

34

Anladığım kadarıyla MediaRecorder, çıktıda sıkıştırılmış ses dosyası AudioRecorderveren ve size sadece ham ses akışı veren ve kendiniz sıkıştırmanız gereken bir kara kutu var.

MediaRecordergetMaxAmplitude()örneğin bir ses görselleştiricisi uygulayabilmeniz için son yöntem çağrısından itibaren maksimum amptitude sağlar .

Bu nedenle, çoğu durumda MediaRecorder, bazı karmaşık ses işlemlerini yapmanız ve ham ses akışına erişmeniz gerekenler dışında en iyi seçimdir.


1
GetMaxAmplitude () yönteminden bahsettiğiniz için teşekkür ederiz. Büyük olasılıkla tek ihtiyacım olan bu.
Dheeraj Bhaskar

MediaRecorder kullanarak görselleştiriciyi nasıl uygulayabilirim?
OnePunchMan

1
GetMaxAmplitude tam olarak burada neye yardımcı olur? Görselleştirici için her an güncel olanı almanız gerekmiyor mu?
android geliştiricisi

18

AudioRecorderer önce verileri minBuffer'a kaydeder, ardından oradan geçici arabelleğe kopyalanır, MediaRecorder'da dosyalara kopyalanır. AudioRecorder'da kaydedilen verileri gerekli konuma kopyalamak için api setRecordPosition () 'a ihtiyacımız var, oysa MediaRecorder'da dosya işaretçisi bu işi işaretleyicinin konumunu ayarlamak için yapıyor. AudioRecorder, bir emülatörde çalışan uygulamalar için kullanılabilir, bu 8000 gibi düşük örnekleme oranı sağlanarak yapılabilir, MediaRecorder kullanılırken ses emülatör kullanılarak kaydedilemez. AudioRecorder'da ekran bir süre sonra uykuya dalarken MediaRecorder'da ekran uykuya dalmaz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.