azm_ezm_ivan
-
Постов
11 -
Зарегистрирован
-
Посещение
Сообщения, опубликованные azm_ezm_ivan
-
-
благодарю !! )))) это выход)
-
2 часа назад, Brovin Yaroslav сказал:
- А обычный TAudioCaptureDevice не подходит?
- И почему указан кодек MP4 для записи аудио?
в нем нет подобия getmaxamplitude !
-
нууу???? и никто не знает?
-
в том то и дело не функциклирует )))))))!!!!
-
18 минут назад, ZuBy сказал:
MediaRecorder recorder = new MediaRecorder();
там в документации первой строкой идет инициализация/создание объекта
вам нужно аналогично сделать
recorder := TJmediarecorder.JavaClass.init;
как-то так, писал на форуме, но должны понять суть
а где писал ? ссылку можно ?
-
sorry.....можно подробнее ?? я новичок!
-
В 17.09.2016 в 19:02, Pax Beach сказал:
Просьба код оформлять в специально предназначенном для этого
блоке код
1. Для чего здесь объявлены AudioMem и AudioStream, если они не используются?
2. для чего приведение типа в конструкциях
(AudioRecorder as JAudioRecord)
Без этого не вызываются методы?
3. Когда перестает работать таймер и что выполняется по его событию, как часто?
4. Вообще логику работы примера нельзя ли описать в комментариях над строчками кода? Пока не очень понятно, как это должно работать?
задача....снять голос с микрофона и определить dB(примерно)
Этот выриант закопипостил...пытался под себя отредактировать. Уже три дня сражаюсь ...решил посмотреть Android API. в итоге вышло вот:
unit Unit2; interface uses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, Androidapi.JNI.Media, Androidapi.JNIBridge, Androidapi.JNI.JavaTypes, FMX.Platform.Android, FMX.StdCtrls, FMX.Controls.Presentation, java.ioFile; type TForm2 = class(TForm) Button1: TButton; Timer1: TTimer; Label1: TLabel; procedure Button1Click(Sender: TObject); procedure Timer1Timer(Sender: TObject); private { Private declarations } public { Public declarations } recorder:Jmediarecorder; path:Jstring; end; var Form2: TForm2; implementation {$R *.fmx} procedure TForm2.Button1Click(Sender: TObject); begin recorder.setAudioSource(TJMediaRecorder_AudioSource.JavaClass.MIC);// назначение микрофона recorder.setAudioSamplingRate(44100); recorder.setAudioEncodingBitRate(96000); recorder.setOutputFormat(TJMediaRecorder_OutputFormat.JavaClass.MPEG_4); recorder.setAudioEncoder(tjMediaRecorder_AudioEncoder.JavaClass.AAC); path:=TJFile.JavaClass.getAbsolutePath; // узнаем путь сохранения recorder.setOutputFile(path); recorder.prepare; recorder.start; Timer1.Enabled:=true; //интервал 500 end; procedure TForm2.Timer1Timer(Sender: TObject); var amplit:integer; begin amplit:=recorder.getMaxAmplitude; //узнаем амплитуду Label1.Text:=inttostr(amplit);//выводим на лейбл end; end.
Но вот то и них...ра. Извините НЕ ФУНКЦИКЛИРУЕТ !!!! - acces violation at sdress 5490e0d6, accessing adress 00000000
Что за...?
-
помогите разобраться.... по идее должно проигрывать, но тишина.....?
unit Unit5; interface uses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs,FMX.Platform.Android, Androidapi.JNI.Net, Androidapi.JNIBridge, Androidapi.JNI.JavaTypes, Androidapi.JNI.Media, FMX.Controls.Presentation, FMX.StdCtrls; type TForm5 = class(TForm) Label1: TLabel; Timer1: TTimer; Button1: TButton; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); private { Private declarations } AudioRecorder: JAudioRecord; sampleRate: Integer; channelConfig: Integer; audioFormat: Integer; minBufSize: Integer; AudioMem: TMemoryStream; AudioStr: TJavaArray<SmallInt>; enable_audio:Boolean; AudioPlay: JAudioTrack; AudioStream: TJavaArray<SmallInt>; trackmin: Integer; public { Public declarations } end; var Form5: TForm5; implementation {$R *.fmx} procedure TForm5.Button1Click(Sender: TObject); begin (AudioRecorder as JAudioRecord).stop; (AudioRecorder as JAudioRecord).release; trackmin:= TJAudioTrack.JavaClass.getMinBufferSize(11025, TJAudioFormat.JavaClass.CHANNEL_OUT_MONO, TJAudioFormat.JavaClass.ENCODING_PCM_16BIT); AudioStream:= TJavaArray<SmallInt>.Create(trackmin); AudioPlay:= TJAudioTrack.JavaClass.init(TJAudioManager.JavaClass.STREAM_MUSIC, 11025, TJAudioFormat.JavaClass.CHANNEL_OUT_MONO, TJAudioFormat.JavaClass.ENCODING_PCM_16BIT, trackmin, TJAudioTrack.JavaClass.MODE_STREAM); (AudioPlay as JAudiotrack).play; end; procedure TForm5.FormCreate(Sender: TObject); begin enable_audio:=false; sampleRate:= 11025; channelConfig:= TJAudioFormat.JavaClass.CHANNEL_IN_MONO; audioFormat:= TJAudioFormat.JavaClass.ENCODING_PCM_16BIT; // minBufSize = 1024 Bytes minBufSize:= TJAudioRecord.JavaClass.getMinBufferSize(sampleRate, channelConfig, audioFormat); // AudioRecover = 1024*4 = 4096 AudioStr:= TJavaArray<SmallInt>.Create(minBufSize*4); AudioMem:= TMemoryStream.Create; AudioRecorder:= TJAudioRecord.JavaClass.init(TJMediaRecorder_AudioSource.JavaClass.MIC, sampleRate, channelConfig, audioFormat, minBufSize*4); (AudioRecorder as JAudioRecord).startRecording; Timer1.Enabled:= True; end; end.
-
вернеее ......можно ли при привышении определенного порога громкости от полученного сигнала получить событие ???
-
А не подскажите как узнать уровень громкости ?
Получить голос из микрофона потоками
в Использование Android API
Опубликовано
Подошло....спасибо