Android MediaRecorder

一、MediaRecorder介绍

MediaRecorder是Android平台上的一个多媒体录制类,它可以用于录制音频和视频数据流。它的整体架构包括录制数据流框架和StagefrightRecorder。使用MediaRecorder可以通过设置一些参数来控制录制的音频和视频的质量、格式、编码等。以下是一个简单的使用MediaRecorder录制音频的例子:

// 创建MediaRecorder对象
MediaRecorder recorder = new MediaRecorder();
// 设置音频来源为麦克风
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
// 设置音频输出格式为MP3
recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
// 设置音频编码格式为AAC
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
// 设置音频输出文件路径
recorder.setOutputFile("/sdcard/test.mp3");
// 准备录制
recorder.prepare();
// 开始录制
recorder.start();
// 停止录制
recorder.stop();
// 释放资源
recorder.release();

二、MediaRecorder相关类

MediaRecorder(JAVA)

MediaRecorder代码位于:

frameworks/base/media/java/android/media/MediaRecorder.java

MediaRecorder的定义:

public class MediaRecorder implements AudioRouting, AudioRecordingMonitor, AudioRecordingMonitorClient, MicrophoneDirection {
    public final class AudioSource {}
    public final class VideoSource {}
    public final class AudioEncoder {}
    public final class VideoEncoder {}
    public final class OutputFormat {}
    public static interface OnErrorListener {}
    public static interface OnInfoListener {}
}

MediaRecorder(C++)

MediaRecorder代码位于:

frameworks/av/media/libmedia/MediaRecorder.cpp

frameworks/av/media/libmedia/include/media/MediaRecorder.h

frameworks/av/media/libmedia/include/media/MediaRecorderBase.h

MediaRecorder的定义:

class MediaRecorderListener: virtual public RefBase {}
class MediaRecorder : public BnMediaRecorderClient, public virtual IMediaDeathNotifier {}

MediaRecorderClient

MediaRecorderClient代码位于:

frameworks/av/media/libmedia/MediaRecorderClient.cpp

frameworks/av/media/libmedia/include/media/MediaRecorderClient.h

MediaRecorderClient的定义:

class MediaRecorderClient : public BnMediaRecorder {
    class AudioDeviceUpdatedNotifier: public AudioSystem::AudioDeviceCallback
}

 三、MediaRecorder API 

static final int getAudioSourceMax():获取音频源的最大值。
int getMaxAmplitude():返回自上次调用此方法以来采样的最大绝对幅度。
Surface getSurface():从使用SURFACE视频源时获取表面进行记录。
void pause():暂停录制。
void prepare():准备录音机开始捕捉和编码数据。
void release():释放与此MediaRecorder对象关联的资源。
void reset():将MediaRecorder重新启动到其闲置状态。
void resume():恢复录制。
void setAudioChannels(int numChannels):设置录制的音频通道数量。
void setAudioEncoder(int audio_encoder):设置要用于录制的音频编码器。
void setAudioEncodingBitRate(int bitRate):设置录制的音频编码比特率。
void setAudioSamplingRate(int samplingRate):设置录制的音频采样率。
void setAudioSource(int audio_source):设置要用于录制的音频源。
void setCaptureRate(double fps):设置视频帧捕获率。
void setInputSurface(Surface surface):使用SURFACE视频源时,配置录像机以使用持久表面。
void setMaxDuration(int max_duration_ms):设置记录会话的最大持续时间(以毫秒为单位)。
void setMaxFileSize(long max_filesize_bytes):设置记录会话的最大文件大小(以字节为单位)。
void setOnErrorListener(MediaRecorder.OnErrorListener l):录制时发生错误时注册要调用的回调。
void setOnInfoListener(MediaRecorder.OnInfoListener listener):记录时发生信息事件时注册要调用的回调。
void setOutputFile(String path):设置要生成的输出文件的路径。
void setOutputFile(FileDescriptor fd):传入要写入的文件的文件描述符。
void setOutputFormat(int output_format):设置录制过程中输出文件的格式。
void setPreviewDisplay(Surface sv):设置Surface以显示录制媒体(视频)的预览。
void setVideoEncoder(int video_encoder):设置要用于录制的视频编码器。
void setVideoEncodingBitRate(int bitRate):设置录制的视频编码比特率。
void setVideoFrameRate(int rate):设置要捕获的视频的帧速率。
void setVideoSize(int width, int height):设置要捕捉的视频的宽度和高度。
void setVideoSource(int video_source):设置要用于录制的视频源。
void start():开始捕获数据并将其编码到setOutputFile()指定的文件中。
void stop():停止录制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值