Articles of mediarecorder

需要一个简单的录音例子

我需要在Android中使用AudioRecorder进行简单的录音和播放示例。 我尝试使用MediaRecorder,它工作正常。

Android MediaRecorder stop()未被调用

我有一个非常奇怪的错误,我的一些代码没有被调用,但看起来没有任何理由为什么它不会被调用。 onFinishedRecording并标记”Finished recording.” 被注销,但之后的代码根本没有被调用。 当mMediaRecorder.stop();时,所有代码都停止被调用mMediaRecorder.stop(); 叫做。 它也没有进入catch块。 为什么会这样? 我认为它可能与不同的线程有关,但我检查了所有的线程名称,它们都在同一个主线程上运行。 另外,我的相机预览设置可能有问题吗? 当我尝试播放video时,它已损坏且无法播放。 除了上述问题,我的后退按钮在应用程序中没有任何作用。 不完全说明为什么或如何与我实现的代码相关。 MyLibrary类(库模块类) public class MyLibrary implements PreciseCountdownTimer.PreciseCountdownTimerCallback { private static final String TAG = AngryOtter.class.getSimpleName(); private static final long MAX_RECORD_TIME_MILLIS = 3000; private static final long INTERVAL_MILLIS = 1000; private static MyLibrary mInstance; private Activity mActivity; private CameraInitListener mCallback; private int mCameraId = […]

android MediaRecorder setVideoSize()的问题

android MediaRecorder捕获分辨率高于320*240video吗? 当我使用MediaRecorder::setVideoSize()来设置video大小时,捕获的video的分辨率都是320*240 。 更糟糕的是,较高的人无法得到一个清晰的video,他们在某种程度上是绿色的。 (编码器使用的是h263 ,格式为mpeg4 ) 这里使用的Android版本是1.6 你能帮助我吗?

使用android MediaRecorder

以下是我录制video和音频的工作代码的结构: 问题:1)为什么需要CamcorderProfile ? setProfile(…)似乎将尺寸设置为QUALITY_HIGH给出的尺寸,但稍后我用setVideoSize(…)设置我想要的尺寸,这将覆盖它。 但是,当我删除两个CamcorderProfile行时,应用程序使用LogCat E/MediaRecorder(19526): setVideoSize called in an invalid state: 2在setVideoSize(…)崩溃E/MediaRecorder(19526): setVideoSize called in an invalid state: 2 。 2)我怎么不录音? 该文档指出,如果未调用setAudioSource(…) ,则不会有音轨。 但是,当我删除该行时,应用程序在setProfile(…)使用LogCat E/MediaRecorder(19946): try to set the audio encoder without setting the audio source first setProfile(…)崩溃E/MediaRecorder(19946): try to set the audio encoder without setting the audio source first 。 3)如果我删除了CamcorderProfile行和setAudioSource(…)行,它会像1)中一样崩溃。 4)我也试过添加线 recorder.setOutputFormat(OutputFormat.DEFAULT); […]

如何将Android上的video录制到Stream中

Android MediaRecorder允许将video保存到文件(文件或套接字): setOutputFile(FileDescriptor fd); setOutputFile(String path) 如何将video数据保存到OutputStream? 它将用于流式video录制。

如何使用TextureView上的相机预览录制video

我在一些Android 4.0设备上玩过TextureView。 例如,我尝试开发一个简单的应用程序,它可以录制video并使用TextureView进行预览。 但是,就我阅读Android API文档而言,标准的MediaRecorder需要某些表面来执行video录制,但另一方面,TextureView不再具有自己的表面,因此看起来TextureView和MediaRecorder之间存在不兼容性。 MediaRecorder.setPreviewDisplay TextureView 有没有人知道如何使用带有TextureView的标准MediaRecorder作为相机预览来录制video? 或者有没有办法录制MediaRecorder以外的video? 非常感谢你。

AudioSource.VOICE_CALL无法在Android 4.0中运行,但在android 2.3中工作

VOICE_CALL, VOICE_DOWNLINK ,VOICE_UPLINK 我没有在Android 4.0上工作,但在Android 2.3(实际设备)上工作,我已经上传了一个虚拟项目来记录所有传出呼叫,以便您可以看到它为您自己 http://www.mediafire.com/?img6dg5y9ri5c7rrtcajwc5ycgpo2nf 你只需要改变audioSource = MediaRecorder.AudioSource.MIC; 到audioSource = MediaRecorder.AudioSource.VOICE_CALL; 在TService.java第118 TService.java 如果您遇到任何错误,请告诉我。 任何与之相关的建议都将被接受。

如何知道MediaRecorder何时完成将数据写入文件

在进行实际录制之前,我们使用MediaRecorder使用setOutputFile()将video录制到外部存储上的文件中。 一切正常,但主要问题是录音一完成,我们就想开始在VideoView中播放录制的video。 如何知道文件何时可以读取和播放?

Android Mediarecorder录制的video时长与预期持续时间不同

我用android Mediarecorder录制了一个video。 (主要问题:我需要知道video的确切startTime [系统时间]和endTime [系统时间],[endTime – startTime]必须与实际video的持续时间相匹配) MediaRecorder.start startTime = System.currentTimeMillis() then on stop MediaRecorder.stop endTime = System.currentTimeMillis() 我期待video有这段时间 expected_duration =(endTime – startTime) 但是,那 expected_duration总是超过video的实际持续时间。 我怀疑MediaRecorder.start很慢,它实际上开始将帧写入video需要一些时间。 那么现在,当MediaRecorder开始将第一帧写入video时,是否有通知? 或者有什么方法可以找出video实际开始录制时的确切系统开始时间。 感谢阅读,并感谢任何意见,建议或意见。 ^^

Android的MediaRecorder的getMaxAmplitude()函数实际上给了我什么?

Android MediaRecorder具有一项function .getMaxAmplitude(); 正如API告诉我的那样, “返回自上次调用此方法以来采样的最大绝对振幅。” 但我找不到这是什么幅度的? 它是帕斯卡还是瓦特? 我在网上的几个页面上发现,您可以使用(如此处所示 )计算与分贝密切相关的值。 double db = (20 * Math.log10(amplitude / REFERENCE)); 这会让我假设返回值是一些线性范围(可能像milipascal ……) REFERENCE = 0.1(我知道这应该是2 * 10 ^( – 5)Pascal((20 uPascal)),但是返回奇怪的值… 0.1奇怪地效果更好。) 现在我使用了测量MaxAmplitude() getMaxAmplitude() 并把它放入可变幅度 。 这是方法: public double getNoiseLevel() { //Log.d(“SPLService”, “getNoiseLevel() “); int x = mRecorder.getMaxAmplitude(); double x2 = x; Log.d(“SPLService”, “x=”+x); double db = (20 […]