http://my.oschina.net/chengliqun/blog/62150
最近客户有一个视频录制的需求,于是,我就整理下可行的方案。
启动系统视频录制的代码:
1
2
3
4
|
Intent mIntent =
new
Intent(MediaStore.ACTION_VIDEO_CAPTURE);
mIntent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY,
0.5
);
//画质0.5
mIntent.putExtra(MediaStore.EXTRA_DURATION_LIMIT,
70000
);
//70s
startActivityForResult(mIntent, CAMERA_ACTIVITY);
//CAMERA_ACTIVITY = 1
|
系统返回后,在onActivityResult处理视频文件:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
protected
void
onActivityResult(
int
requestCode,
int
resultCode,
Intent intent) {
super
.onActivityResult(requestCode, resultCode, intent);
if
(resultCode != RESULT_OK)
return
;
try
{
AssetFileDescriptor videoAsset = getContentResolver()
.openAssetFileDescriptor(intent.getData(),
"r"
);
FileInputStream fis = videoAsset.createInputStream();
File tmpFile =
new
File(Environment.getExternalStorageDirectory(),
"recordVideo_0_5.3gp"
);
FileOutputStream fos =
new
FileOutputStream(tmpFile);
byte
[] buf =
new
byte
[
1024
];
int
len;
while
((len = fis.read(buf)) >
0
) {
fos.write(buf,
0
, len);
}
fis.close();
fos.close();
}
catch
(IOException io_e) {
// TODO: handle error
}
}
|
就这样,就可以调用系统的视频录制了,但别忘了必要的权限声明:
1
2
|
<
uses-permission
android:name
=
"android.permission.WRITE_EXTERNAL_STORAGE"
/>
<
uses-permission
android:name
=
"android.permission.CAMERA"
/>
|
播放代码:
Uri uri = Uri.parse(Environment.getExternalStorageDirectory().getPath()+"/recordVideo_0_5.3gp"); Intent intent = new Intent(Intent.ACTION_VIEW);
//Log.v("URI:::::::::", uri.toString());
intent.setDataAndType(uri, "video/*");
startActivity(intent);
获取缩略图:
/**
* 获取视频的缩略图
* 先通过ThumbnailUtils来创建一个视频的缩略图,然后再利用ThumbnailUtils来生成指定大小的缩略图。
* 如果想要的缩略图的宽和高都小于MICRO_KIND,则类型要使用MICRO_KIND作为kind的值,这样会节省内存。
*
* @param videoPath 视频的路径
* @param width 指定输出视频缩略图的宽度
* @param height 指定输出视频缩略图的高度度
* @param kind 参照MediaStore.Images.Thumbnails类中的常量MINI_KIND和MICRO_KIND。
* 其中,MINI_KIND: 512 x 384,MICRO_KIND: 96 x 96
* @return 指定大小的视频缩略图
*/
static public Bitmap getVideoThumbnail(String videoPath, int width, int height, int kind) {
Bitmap bitmap = null;
// 获取视频的缩略图
bitmap = ThumbnailUtils.createVideoThumbnail(videoPath, kind);
System.out.println("w" + bitmap.getWidth());
System.out.println("h" + bitmap.getHeight());
bitmap = ThumbnailUtils.extractThumbnail(bitmap, width, height, ThumbnailUtils.OPTIONS_RECYCLE_INPUT);
return bitmap;
}