Audio Media——使用MediaRecorder录制音视频文件

最近在研究Media相关类,看到了MediaRecorder,通过搜索CSDN,看到MediaRecorder可以同时录音音频和视频,也可以单独录制音频或者视频。

音频需要指定音频的来源和编码格式,音频来源包括:

音频来源说明

MediaRecorder.AudioSource.DEFAULT(0)

默认音频源

MediaRecorder.AudioSource.MIC(1)

设定录音来源为主麦克风。

MediaRecorder.AudioSource.VOICE_UPLINK(2)

上行声音,需要Manifest.permission.CAPTURE_AUDIO_OUTPUT权限,第三方应用无法申请

MediaRecorder.AudioSource.VOICE_DOWNLINK(3)

下行声音,需要Manifest.permission.CAPTURE_AUDIO_OUTPUT权限,第三方应用无法申请

MediaRecorder.AudioSource.VOICE_CALL(4)

设定录音来源为语音拨出的语音与对方说话的声音,需要Manifest.permission.CAPTURE_AUDIO_OUTPUT权限,第三方应用无法申请

MediaRecorder.AudioSource.CAMCORDER(5)

设定录音来源于同方向的相机麦克风相同,若相机无内置相机或无法识别,则使用预设的麦克风

MediaRecorder.AudioSource.VOICE_RECOGNITION(6)

语音识别

MediaRecorder.AudioSource.VOICE_COMMUNICATION(7)

摄像头旁边的麦克风

MediaRecorder.AudioSource.REMOTE_SUBMIX(8)

用于远程呈现的音频流的子混音的音频源,需要Manifest.permission.CAPTURE_AUDIO_OUTPUT权限,第三方应用无法申请

MediaRecorder.AudioSource.UNPROCESSED(9)

Microphone audio source tuned for unprocessed(raw) sound if available, behaves link DEFAULT otherwise.

麦克风音频源针对未处理(原始)声音进行了调谐(如果可用),否则行为为默认链接。

MediaRecorder.AudioSource.VOICE_PERFORMANCE(10)

Source for capturing audio meant to be processed in real time and played back for live performance(e.g baraoke).

The capture path will minimize latency and coupling with playback path.

用于捕获音频的源,旨在实时处理并播放以进行现场表演(例如baraoke)。

捕获路径将最大限度地减少延迟并与播放路径耦合。

对于非系统级应用,只能录制麦克风和语音识别的声音。

音频编码格式包括:

音频编码格式说明

MediaRecorder.AudioEncoder.DEFAULT(1)

默认

MediaRecorder.AudioEncoder.AMR_NB(1)

AMR(Narrowband) audio codec

MediaRecorder.AudioEncoder.AMR_WB(2)

AMR(Wideband) audio codec

MediaRecorder.AudioEncoder.AAC(3)

AAC Low Complexity(AAC-LC) audio codec

MediaRecorder.AudioEncoder.HE_AAC(4)

High Efficiency AAC(HE-AAC) audio codec

MediaRecorder.AudioEncoder.AAC_ELD(5)

Enhanced Low Delay AAC(AAC-ELD) audio codec

MediaRecorder.AudioEncoder.VORBIS(6)

Ogg Vorbis audio codec

MediaRecorder.AudioEncoder.OPUS(7)

Opus audio codec

录制的视频需要指定视频的来源和编码格式,视频来源包括:

视频来源说明

MediaRecorder.VideoSource.DEFAULT(0)

默认

MediaRecorder.VideoSource.CAMERA(1)

摄像头

MediaRecorder.VideoSource.SURFACE(2)

surface,可以理解为屏幕

视频编码格式包括:

视频编码格式说明

MediaRecorder.VideoEncoder.DEFAULT(0)

默认

MediaRecorder.VideoEncoder.H263(1)

H263

MediaRecorder.VideoEncoder.H264(2)

H264

MediaRecorder.VideoEncoder.MPEG_4_SP(3)

MPEG4

MediaRecorder.VideoEncoder.VP8(4)

VP8

MediaRecorder.VideoEncoder.HEVC(5)

HEVC

MediaRecorder.VideoEncoder.VP9(6)

VP9

MediaRecorder.VideoEncoder.DOLBY_VISION(7)

杜比

MediaRecorder.VideoEncoder.AVI(8)

AVI

不管是录制音频还是录制视频,都需要设置输出格式,输出格式包括:

输出格式说明

MediaRecorder.OutputFormat.DEFAULT(0)

默认

MediaRecorder.OutputFormat.THREE_GPP(1)

3GPP

MediaRecorder.OutputFormat.MPEG_4(2)

MPEG4

MediaRecorder.OutputFormat.AMR_NB(3)

AMR NB

MediaRecorder.OutputFormat.AMR_WB(4)

AMR WB

MediaRecorder.OutputFormat.AAC_ADIF(5)

AAC ADIF

MediaRecorder.OutputFormat.AAC_ADTS(6)

AAC ADTS

MediaRecorder.OutputFormat.OUTPUT_FORMAT_RTP_AVP(7)

RTP AVP

MediaRecorder.OutputFormat.MPEG_2_TS(8)

MPEG2

MediaRecorder.OutputFormat.WEBM(9)

WEBM

MediaRecorder.OutputFormat.HEIF(10)

HEIF

MediaRecorder.OutputFormat.OGG(11)

OGG

MediaRecorder主要方法如下:

方法描述

void prepar():

准备录制

void start():

开始录制

void stop():

停止录制

void reset():

重置

void release():

释放资源

void setAudioSource(int audio_source):

设置音频记录的音频源

void setAudioEncoder(int audio_encoder):

设置音频记录的编码格式

void setAudioChannels(int numChannels)

设置录制的音频通道数

setAudioEncodingBitRate(int bitRate)

设置录制的音频编码比特率

setAudioSamplingRate(int samplingRate)

设置录制的音频采样率

void setVideoSource(int video_source):

设置视频记录的音频源

void setVideoEncoder(int video_encoder):

设置视频记录的编码格式

setCaptureRate(double fps)

设置视频帧的捕获率

setVideoEncodingBitRate(int bitRate)

设置录制的视频编码比特率

setVideoFrameRate(int rate)

设置要捕获的视频帧速率

setVideoSize(int width, int height)

设置要捕获的视频的宽度和高度

void setOutoutFormat(int output_format):

设置记录的媒体文件的输出转换格式

void setOutputFile(String path):

媒体文件输出路径

扩展知识:

AudioRecord和MediaRecorder两种都可以录制音频,MediaRecorder已实现大量的封装,操作起来更加简单,而AudioRecord使用起来更加灵活,能实现更多的功能。

1.AudioRecord(基于字节流录音)

优点:可以实现语音的实时处理,进行边录边播,对音频的实时处理。

缺点:输出的是PCM的语音数据,如果保存成音频文件是不能被播放器播放的。要用到AudioTrack这个去进行处理。

2.MediaRecorder(基于文件录音)

已集成了录音,编码,压缩等,支持少量的音频格式文件。

优点:封装度很高,操作简单

缺点:无法实现实时处理音频,输出的音频格式少。

功能实现:MediaRecorder(这里需要注意,无论录制还是播放都是一个耗时操作,需要在非主线程中去操作)

如果需要录制屏幕,需要申请权限,与MediaProjectionManager类结合使用更方便一些。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值