android之多媒体篇-录像
来源:互联网 发布:java string 添加空格 编辑:程序博客网 时间:2024/06/08 17:17
Android提供了2种方案去录像。
方案一:
最简单的方式就是使用Intents去启动App来帮助你完成。这个方案使你能够指定输出的位置和视频的质量。这方案通常是最好的方法,应该可以用在多种情形下。
MediaStore.EXTRA_OUTPUT 指定输出的位置。
MediaStore.EXTRA_VIDEO_QUALITY 0-1之间, 1 质量最高,默认的话是1.
MediaStore.EXTRA_DURATION_LIMIT 指定最大的录像长度。(秒单位)
private
static
final
int
RECORD_VIDEO =
0
;
private
void
startRecording() {
// Generate the Intent.
Intent intent =
new
Intent(MediaStore.ACTION_VIDEO_CAPTURE);
// Launch the camera app.
startActivityForResult(intent, RECORD_VIDEO);
}
@Override
protected
void
onActivityResult(
int
requestCode,
int
resultCode, Intent data) {
if
(requestCode == RECORD_VIDEO) {
VideoView videoView = (VideoView)findViewById(R.id.videoView);
videoView.setVideoURI(data.getData());
videoView.start()
}
}
方案二:
使用MediaRecorder类去录音频或者视频。
你可能需要以下权限:
<
uses-permission
android:name=”android.permission.RECORD_AUDIO”/>
<
uses-permission
android:name=”android.permission.RECORD_VIDEO”/>
<
uses-permission
android:name=”android.permission.CAMERA”/>
MediaRecorder可以让你指定音频和视频资源,输出文件格式,还指定视频、音频编码器。
Android 2.2引入配置文件,可以预先定义这些属性配置。
很像MediaPlayer,MediaRecorder管理录制,作为其状态机。这就意味着配置的顺序和管理变得尤为重要。最简单的:
1.创建一个MediaRecorder
2.解锁照相机,然后使其与MediaRecorder关联。
3.指定输入源
4.选择一个配置文件,或者定义输出格式和指定音频和视频编码器,帧率,输出大小。
5.选择输出文件
6.分配一个预览Surface.
7.准备MediaRecorder录制。
8.录制
9.结束录制。
当你结束录制的时候,记得mediaRecorder.release();
配置VideoRecorder
setAudioSource和setVideoSource方法,可以分别让你指定一个MediaRecorder.AudioSource.*和MediaRecorder.VideoSource.*静态常量,来定音频或者视频资源。
当你选择你的输入源后,你需要去指定要使用的录制配置文件。Android 2.2引入setProfile方法,使用CamcorderProfile类的get方法创建profile,使用CamcorderProfile.Quality_*常量指定录制质量。不是每个设备都支持所有的配置文件,你可以用CamcorderProfile.hasProfile方法去确认可用性:
if
(CamcorderProfile.hasProfile(CamcorderProfile.QUALITY_1080P)) {
CamcorderProfile profile = CamcorderProfile.get(CamcorderProfile.QUALITY_1080P);
mediaRecorder.setProfile(profile);
}
作为选择,你可以手动指定录制文件,通过选择输出格式,使用setOutputFormat方法去指定一个MediaRecorder.OutputFormat常量和使用set[audio/video]Encoder方法去指定一个音频或者视频编码,通过MediaPlayer.[Audio/Video]Encoder类。
例子:
// Unlock the Camera to allow the Media Recorder to own it.
camera.unlock();
// Assign the Camera to the Media Recorder.
mediaRecorder.setCamera(camera);
// Configure the input sources.
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.CAMCORDER);
mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);
// Set the recording profile.
CamcorderProfile profile =
null
;
if
(CamcorderProfile.hasProfile(CamcorderProfile.QUALITY_1080P))
profile = CamcorderProfile.get(CamcorderProfile.QUALITY_1080P);
else
if
(CamcorderProfile.hasProfile(CamcorderProfile.QUALITY_720P))
profile = CamcorderProfile.get(CamcorderProfile.QUALITY_720P);
else
if
(CamcorderProfile.hasProfile(CamcorderProfile.QUALITY_480P))
profile = CamcorderProfile.get(CamcorderProfile.QUALITY_480P);
else
if
(CamcorderProfile.hasProfile(CamcorderProfile.QUALITY_HIGH))
profile = CamcorderProfile.get(CamcorderProfile.QUALITY_HIGH);
if
(profile !=
null
)
mediaRecorder.setProfile(profile);
// Specify the output file
mediaRecorder.setOutputFile(“/sdcard/myvideorecording.mp4”);
// Prepare to record
mediaRecorder.prepare();
注意:setOutputFile方法必须在prepare之前和setOutputFormat之后。否则,会抛出异常。
Android 4.0引入一个新的技术去改善MediaRecoder的表现,通过减少其启动时间。当你的Activity准备只是去录音频或者视频,你可以使用Camera.Parameters.setRecordingHint方法去告诉照相机你只是想去录音或者录像:
Camera.Parameters parameters = camera.getParameters();
parameters.setRecordingHint(
true
);
camera.setParameters(parameters);
控制录制
mediaRecorder.start();
当你录完后:
mediaRecorder.stop();
// Reset and release the media recorder.
mediaRecorder.reset();
mediaRecorder.release();
camera.lock();
Android 4.0.3引入可以使图像稳定化,通过修改参数:
Camera.Parameters parameters = camera.getParameters();
if
(parameters.isVideoStabilizationSupported())
parameters.setVideoStabilization(
true
);
camera.setParameters(parameters);
注意:不是所有的照相机设备都支持图像稳定化,所以程序中你可能要先检查下(上例)。
创建一个延时的视频
// Capture an image every 30 seconds.
mediaRecorder.setCaptureRate(
0.03
);
MediaRecorder也必须设置一系列预定义的配置优化。使用setProfile方法,使用QUALITY_TIME_LAPSE_*中的一个配置:
CamcorderProfile profile =
CamcorderProfile.get(CamcorderProfile.QUALITY_TIME_LAPSE_HIGH);
mediaRecorder.setProfile(profile);
- android之多媒体篇-录像
- android之多媒体篇(一)
- Android之多媒体基础
- 【Android应用开发技术:媒体开发】录像
- Android-mediaRecorder(媒体录像器)实例
- android典型用户之多媒体播放
- android典型用户之多媒体播放
- Android之多媒体--使用MediaPlayer播放音频
- Android之多媒体--使用SoundPool播放音频
- Android之多媒体--使用MediaRecorder录制音频
- Android之多媒体--使用VideoView播放视频
- android开发笔记之多媒体—SurfaceView
- Android知识点之多媒体应用开发
- Android基础知识(十)之多媒体
- iOS开发之多媒体篇-音效
- iOS开发之多媒体篇-音乐
- iOS开发之多媒体篇-录音
- 24、从头学Android之多媒体--使用MediaPlayer播放音频
- Android视图绘制流程完全解析,带你一步步深入了解View(二)
- 博弈_总结
- Activity生命周期
- ubuntu桌面登录不上的故障解决:unable to connect to X server
- linux下获取cpu信息
- android之多媒体篇-录像
- java Desktop 使用样例
- 如何在XML中使用nbsp
- linux硬盘性能检测
- PD转换成PPT转换器的下载和使用
- 线段树_模板
- c:if 和c:when 的区别
- linux下log日志文件
- Android视图状态及重绘流程分析,带你一步步深入了解View(三)