我正在开展一个医疗项目,该应用程序可以记录医生和患者之间的对话并将其发送以进行转录。
作业:基本上应用程序用于录制和播放录制的音频。
问题: 当记录开始时,它会在 LogCat 显示 10-20 秒后记录:
05-07 11:42:52.502: W/MediaProfiles(6321): could not find media config xml file
05-07 11:42:52.522: I/MPEG4Writer(6321): limits: 2147483647/0 bytes/us, bit rate: 12200 bps and the estimated moov size 3072 bytes
05-07 11:42:52.532: E/AudioFlinger(6321): Error reading audio input
05-07 11:42:58.432: W/AudioRecord(6321): obtainBuffer timed out (is the CPU pegged?) user=00000000, server=00000000
05-07 11:42:58.432: E/AudioFlinger(6321): Error reading audio input
05-07 11:43:03.403: W/AudioRecord(6321): obtainBuffer timed out (is the CPU pegged?) user=00000000, server=00000000
05-07 11:43:03.403: E/AudioFlinger(6321): Error reading audio …Run Code Online (Sandbox Code Playgroud) android android-mediaplayer android-mediarecorder android-audiorecord
我正在尝试在 android 上录制语音通话。我正在使用 android 的 AudioRecord 类/api 来执行此操作。但是由于某种原因,AudioRecord 无法在某些设备上录制语音通话(尤其是在最新的 OS 6.0、7.0 中)。每当我将 AudioRecord 对象的 AudioSource 参数设置为“VOICE_CALL”即(MediaRecorder.AudioSource.VOICE_CALL)时,它都会给我这个异常
java.lang.IllegalStateException: startRecording() 在未初始化的 AudioRecord 上调用
但是当我将音频源设置为“MIC”时,它工作正常,但当然不会记录语音通话。
我尝试使用 android 的 MediaRecord 类,但遇到了同样的问题,即适用于“MIC”但缺乏“VOICE_CALL”。我也在多个论坛上尝试了许多可用的解决方案,但仍然没有运气。
下面我分享了我的一小段代码。对此的任何帮助将不胜感激。谢谢
recorder = new AudioRecord(MediaRecorder.AudioSource.VOICE_CALL,
44100, AudioFormat.CHANNEL_IN_MONO,
AudioFormat.ENCODING_PCM_16BIT, AudioRecord.getMinBufferSize(44100,AudioFormat.CHANNEL_IN_MONO,AudioFormat.ENCODING_PCM_16BIT));
recorder.startRecording();
Run Code Online (Sandbox Code Playgroud) java android audiorecord android-mediarecorder call-recording
在我的(java)应用程序上运行 Xlint:deprecated in android studio 告诉我
mediaRecorder = new MediaRecorder();
Run Code Online (Sandbox Code Playgroud)
已弃用!
我应该怎么办?
我MediaRecorder在android中使用for audio录音.我录制时收到的音质很差.我检查了iPhone录音,这是非常好的,但在Android中我收到可怕的声音.
对于录音,我使用:
recorder = new MediaRecorder();
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT);
recorder.setAudioEncoder(MediaRecorder.AudioSource.DEFAULT);
recorder.setOutputFile(path);
recorder.prepare();
recorder.start();
Run Code Online (Sandbox Code Playgroud)
如何提高录音质量?
我正在开发一个低数据速率 VoIP 类型的项目。我需要以低数据速率捕获音频并将其存储在内部缓冲区或 FIFO 中(而不是文件中)。
我想使用低数据速率 .AMR 编码器,这意味着 AudioRecord 已经过时了。MediaRecorder 看起来完全符合我的要求,只是它似乎写入文件。
MediaRecorder 采用 FileDescriptor...有什么方法可以编写一个实现 FileDescriptor 接口的类...充当字节同步...但不是将它们发送到文件,而是将它们存储在缓冲区中?FileDescriptor 上的文档明确指出应用程序不应该编写自己的应用程序,但为什么不呢?无论如何都可能吗?
http://docs.oracle.com/javase/1.4.2/docs/api/java/io/FileDescriptor.html
简而言之,我想开发自己的流,并欺骗 MediaRecorder 向其发送数据。也许会做一些棘手的事情,在同一个 APK 中打开套接字的两端并为 MediaRecorder 提供要写入的套接字?使用套接字作为我的 FIFO?我对此有点陌生,因此非常感谢任何帮助/建议。
我有一个关于 RX 方面的相关问题。我想要一个为 MediaPlayer 提供数据的缓冲区/fifo。我可以欺骗 MediaPlayer 接受来自我自己的专有流提供的缓冲区的数据吗?
audio android media-player mediarecorder android-mediarecorder
我正在尝试在我的Android应用程序中录制音频,但我希望音频文件采用.mp4格式和AAC LC编码; 在我的桌面上播放.所以,使用下面的代码,我试着记录,我能够在我的机器人上播放它.
mRecorder = new MediaRecorder();
mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
mRecorder.setOutputFile("/mnt/sdcard/abcapp/test.mp4");
mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
Run Code Online (Sandbox Code Playgroud)
但是,当我试图在我的电脑上播放它时,我无法播放mp4文件.我尝试使用所有媒体播放器,包括VLC,KMPlayer等,但无法播放.
最令人恼火的一点是,Play商店中的应用程序就像"Easy Voice Recorder"一样,可以在.mp4中录制,并且可以使用Windows Media Player播放.
请帮忙.
谢谢
我在想,是否可以取消媒体录制.取消我的意思是不保存它.目前我开始录制这样做:
protected void startRecording() throws IOException
{
mrec = new MediaRecorder(); // Works well
mCamera.unlock();
mrec.setCamera(mCamera);
mrec.setPreviewDisplay(surfaceHolder.getSurface());
mrec.setVideoSource(MediaRecorder.VideoSource.CAMERA);
mrec.setAudioSource(MediaRecorder.AudioSource.MIC);
mrec.setProfile(CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH));
mrec.setPreviewDisplay(surfaceHolder.getSurface());
File picDirectory = new File(Environment.getExternalStorageDirectory() +"/TrouwApp");
picDirectory.mkdirs();
mrec.setOutputFile( Environment.getExternalStorageDirectory() +"/TrouwApp/" + date + "_" + videonr+ ".3gp");
mrec.prepare();
mrec.start();
Log.d(TAG, "Recording started!!");
}
Run Code Online (Sandbox Code Playgroud)
并保存并停止:
protected void stopRecording() {
mrec.stop();
mrec.release();
mCamera.release();
}
Run Code Online (Sandbox Code Playgroud)
我想制作两个按钮.一个保存媒体文件(调用stopRecording()).并且第二个取消和删除媒体录制.这甚至可能吗?如果有,怎么样?
我正在学习如何使用http://developer.android.com/guide/topics/media/audio-capture.html#example录制音频
一切正常,但我想切换:
mFileName = Environment.getExternalStorageDirectory().getAbsolutePath();
mFileName += "/audiorecordtest.3gp";
Run Code Online (Sandbox Code Playgroud)
至
mFileName = getFilesDir().getAbsolutePath();
mFileName += "/audiorecordtest.3gp";
Run Code Online (Sandbox Code Playgroud)
但是我得到了这个错误
08-19 15:51:44.212: E/MediaPlayer(6654): error (1, -2147483648)
08-19 15:51:44.212: E/AudioRecordTest(6654): prepare() failed
Run Code Online (Sandbox Code Playgroud)
我试着记录我的新代码(以确保我使用的是有效路径).
这适用于我的三星Galaxy,但不适用于我的Nexus One.我希望这适用于2.x,3.x和4.x.
更新: 我在startRecording()中添加了一个日志:
mRecorder.setOutputFile(mFileName);
Log.e("LOG", mFileName);
Run Code Online (Sandbox Code Playgroud)
该日志的输出是:
08-22 12:28:40.112: E/LOG(9666): /data/data/com.example.testrecorder/files/audiorecordtest.3gp
Run Code Online (Sandbox Code Playgroud)
尝试记录异常:
private void startPlaying() {
mPlayer = new MediaPlayer();
try {
mPlayer.setDataSource(mFileName);
mPlayer.prepare();
mPlayer.start();
} catch (IOException e) {
Log.e(LOG_TAG, "prepare() failed", e);
}
}
08-22 13:08:03.158: E/MediaPlayer(10093): error (1, -2147483648)
08-22 13:08:03.168: …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用MediaRecorder在Android中创建视频录像机,用户可以选择录制静音视频,即录制没有音频的视频.我检查了是否有任何选项来记录Android中的静音视频和经过大量搜索我没有得到任何完美的方法来做到这一点,我尝试了下面的AudioManager方法:
audioManager.setStreamMute(AudioManager.STREAM_SYSTEM, true);
audioManager.setMicrophoneMute(true);
audioManager.setStreamVolume(AudioManager.STREAM_SYSTEM, 0, AudioManager.FLAG_REMOVE_SOUND_AND_VIBRATE)
Run Code Online (Sandbox Code Playgroud)
但他们都没有为我工作.
任何人都可以帮助我解决这个问题.
谢谢 !!!
有没有办法使用Camera API实现慢动作和延时录音?
我尝试过使用MediaRecorder设置VideoFrameRate,VideoBitRate VideoCaptureRate但对我来说没什么用.
我已成功使用JNI实现,但我发现它花费了太多时间而且没有进行优化.
如果您找到任何其他解决方案,请帮助我.
video android frame-rate android-camera android-mediarecorder
android ×10
aac ×1
audio ×1
audiorecord ×1
frame-rate ×1
java ×1
media-player ×1
mp4 ×1
video ×1