android调用系统录制视频教程,Android开发之使用MediaRecorder录制视频,android视频录制...
Android开发之使用MediaRecorder录制视频,android视频录制
MediaRecorder除了可以用于录制音频,还可用于录制视频。关于MediaRecorder的详解大家可以参考《Android开发之MediaRecorder类详解》。使用MediaRecorder录制视频与录制音频的步骤基本相同。只是录制视频时不仅需要采集声音,还需要采集图像。为了让MediaRecorder录制时采集图像,应该在调用setAudioSource(int
audio source)方法时再调用setVideoSource(int video source)方法来设置图像来源。
除此之外,还需在调用setOutputFormat()设置输出文件格式之后进行如下步骤:
1)调用MediaRecorder 对象的setVideoEncoder()、setVideoEncodingBitRate(intbitRate)、setVideoFrameRate设置所录制的视频的编码格式、编码位率、每秒多少帧等,这些参数将可以控制所录制的视频的品质、文件的大小。一般来说,视频品质越好,视频文件越大。
2)
调用 MediaRecorder的setPreviewDisplay(Surfacesv)方法设置使用哪个SurfaceView来显示视频预览。
剩下的代码则与录制音频的代码基本相同:
实例使用MediaRecorder录制视频:
1.RecordVideo类:
package com.jph.recordvideo;
import java.io.File;
import android.app.Activity;
import android.content.pm.ActivityInfo;
import android.graphics.PixelFormat;
import android.media.MediaRecorder;
import android.os.Bundle;
import android.os.Environment;
import android.view.SurfaceView;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.Window;
import android.view.WindowManager;
import android.widget.ImageButton;
import android.widget.Toast;
/**
* Description:
* 使用MediaRecorder录制视频
* @author jph
* Date:2014.08.14
*
*/
public class RecordVideo extends Activity
implements OnClickListener
{
// 程序中的两个按钮
ImageButton record , stop;
// 系统的视频文件
File videoFile ;
MediaRecorder mRecorder;
// 显示视频预览的SurfaceView
SurfaceView sView;
// 记录是否正在进行录制
private boolean isRecording = false;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
// 去掉标题栏 ,必须放在setContentView之前
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.main);
// 设置横屏显示
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
// 设置全屏
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
// 选择支持半透明模式,在有surfaceview的activity中使用。
getWindow().setFormat(PixelFormat.TRANSLUCENT);
// 获取程序界面中的两个按钮
record = (ImageButton) findViewById(R.id.record);
stop = (ImageButton) findViewById(R.id.stop);
// 让stop按钮不可用。
stop.setEnabled(false);
// 为两个按钮的单击事件绑定监听器
record.setOnClickListener(this);
stop.setOnClickListener(this);
// 获取程序界面中的SurfaceView
sView = (SurfaceView) this.findViewById(R.id.sView);
// 设置分辨率
sView.getHolder().setFixedSize(1280, 720);
// 设置该组件让屏幕不会自动关闭
sView.getHolder().setKeepScreenOn(true);
}
@Override
public void onClick(View source)
{
switch (source.getId())
{
// 单击录制按钮
case R.id.record:
if (!Environment.getExternalStorageState().equals(
android.os.Environment.MEDIA_MOUNTED))
{
Toast.makeText(RecordVideo.this
, "SD卡不存在,请插入SD卡!"
, Toast.LENGTH_SHORT).show();
return;
}
try
{
// 创建保存录制视频的视频文件
videoFile = new File(Environment
.getExternalStorageDirectory()
.getCanonicalFile() + "/testvideo.3gp");
// 创建MediaPlayer对象
mRecorder = new MediaRecorder();
mRecorder.reset();
// 设置从麦克风采集声音(或来自录像机的声音AudioSource.CAMCORDER)
mRecorder.setAudioSource(MediaRecorder
.AudioSource.MIC);
// 设置从摄像头采集图像
mRecorder.setVideoSource(MediaRecorder
.VideoSource.CAMERA);
// 设置视频文件的输出格式
// 必须在设置声音编码格式、图像编码格式之前设置
mRecorder.setOutputFormat(MediaRecorder
.OutputFormat.THREE_GPP);
// 设置声音编码的格式
mRecorder.setAudioEncoder(MediaRecorder
.AudioEncoder.AMR_NB);
// 设置图像编码的格式
mRecorder.setVideoEncoder(MediaRecorder
.VideoEncoder.H264);
mRecorder.setVideoSize(1280, 720);
// 每秒 4帧
mRecorder.setVideoFrameRate(20);
mRecorder.setOutputFile(videoFile.getAbsolutePath());
// 指定使用SurfaceView来预览视频
mRecorder.setPreviewDisplay(sView
.getHolder().getSurface()); //①
mRecorder.prepare();
// 开始录制
mRecorder.start();
System.out.println("---recording---");
// 让record按钮不可用。
record.setEnabled(false);
// 让stop按钮可用。
stop.setEnabled(true);
isRecording = true;
}
catch (Exception e)
{
e.printStackTrace();
}
break;
// 单击停止按钮
case R.id.stop:
// 如果正在进行录制
if (isRecording)
{
// 停止录制
mRecorder.stop();
// 释放资源
mRecorder.release();
mRecorder = null;
// 让record按钮可用。
record.setEnabled(true);
// 让stop按钮不可用。
stop.setEnabled(false);
}
break;
}
}
}
2.布局文件:
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
android:id="@+id/sView"
android:layout_width="match_parent"
android:layout_height="match_parent" />
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:layout_alignParentBottom="true"
android:layout_centerHorizontal="true">
android:id="@+id/record"
android:layout_width="66dp"
android:layout_height="66dp"
android:scaleType="fitCenter"
android:src="@drawable/recored" />
android:id="@+id/stop"
android:layout_width="66dp"
android:layout_height="66dp"
android:scaleType="fitCenter"
android:src="@drawable/stop" />
3.为程序添加相应权限:
4.程序运行预览:
Android MediaRecorder类调用问题,开发视频监控系统的问题,Android系统中录制视频的方法
MeidaRecord要先申请空间,申请不到就录不上
MediaRecorder OnErrorListener 的原因 android 用MediaRecorder 将视频数据录制,发送到远程主机
发一下log。。
http://www.dengb.com/Androidjc/864770.htmlwww.dengb.comtruehttp://www.dengb.com/Androidjc/864770.htmlTechArticleAndroid开发之使用MediaRecorder录制视频,android视频录制 MediaRecorder除了可以用于 录制音频 ,还可用于录制视频。 关于MediaRecorder的详解大家可...
android调用系统录制视频教程,Android开发之使用MediaRecorder录制视频,android视频录制...相关推荐
- android 调用系统短信接口开发,聚合数据Android SDK 短信api接口验证演示示例
1.到libs聚合SDK是聚合数据平台,为移动开发者提供的免费数据接口.使用前请先到聚合平台(http://www.juhe.cn/)注册,申请相关数据. 2.下载聚合数据SDK,将开发包里的smsc ...
- android安装自动打开网页,Android调用系统自带浏览器打开网页的实现方法
Android调用系统自带浏览器打开网页的实现方法 在Android中可以调用自带的浏览器,或者指定一个浏览器来打开一个链接.只需要传入一个uri,可以是链接地址. 启动android默认浏览器 在A ...
- Android调用系统分享和指定app分享-微信朋友圈图文分享和qq分享
Android调用系统分享和指定app分享-微信朋友圈图文分享和qq分享 标签: Android系统分享QQ分享朋友圈图文分享 2016-09-27 22:54 279人阅读 评论(0) 收藏 举报 ...
- android 调用系统播放器
今天,简单讲讲android如何调用手机自带的播放器. 昨天,从服务器下载一个AVI的视频,下载后需要进行播放,所以想调用系统自带的播放器.但是由于很少用到,所以自己当时不知道怎么写,于是在网上查找资 ...
- linux 短信功能,Android调用系统短信功能发送短信
Android调用系统短信功能发送短信有两种方法: 第一种,设定发送的号码,和内容,界面没有联系人,群组组等按钮,如下图所示: 代码如下: Uri smsToUri = Uri.parse(" ...
- android 默认浏览器 视频播放 二维码,Android调用系统默认浏览器访问的方法
一.启动android默认浏览器 这样子,android就可以调用起手机默认的浏览器访问. 二.指定相应的浏览器访问 1.指定android自带的浏览器访问 ( "com.android.b ...
- android系统应用程序,Android调用系统应用程序
Android调用系统应用程序: 1.直接拨打电话: Intent callIntent = new Intent(Intent.ACTION_CALL, Uri .parse("tel:1 ...
- Android调用系统相机拍照并保存到指定位置
Android调用系统相机拍照并保存到指定位置 @Click(R.id.btn_takePhoto)void onclick() {Intent intent = new Intent(MediaSt ...
- Qt Android 调用系统文件管理
1.了解 使用JNI扩展Qt应用 参考<Qt on Android核心编程>15章 源码https://download.csdn.net/download/dinosaurx/10149 ...
- Android 调用系统裁剪,适配11和12及手机
前言:发现Android 调用系统裁剪时,在各Android 版本出现各种问题,踩了一堆坑,做一下总结,免得以后忘记 后面会有完整裁剪代码 1,一加手机报错 intent.putExtra(" ...
最新文章
- pps服务器未响应_服务响应时间与分布
- 复杂的数据类型3 - C++快速入门09
- spark 应用场景2-身高统计
- 【youcans 的 OpenCV 例程 200 篇】110. 投影和雷登变换
- 护士资格证延续注册WEB服务调用失败_服务熔断
- 动态规划求解所有字符的组合数
- python虚拟变量回归_虚拟变量提升多元线性回归模型精度(附Python代码与数据)...
- alpha-beta剪枝五子棋c语言,五子棋AI算法第三篇-Alpha Beta剪枝
- 联想thinkcentre微型计算机,联想ThinkCentre一体机_ThinkCentre台式机-ThinkPad官网
- 第1章 对象入门——Thinking-in-Java
- Github搭建免费图床
- Java基础概念——变量联系-计算公交车的人数
- 筒仓计算表格_小时,速度,筒仓团队和甘特兹
- 国内五大最贵的两字母域名
- 2022杭电多校5题解报告(同步自语雀)
- mac版idea下载(亲测有效)
- 《Python笔记》安装(pip)第三方包报错
- Leetcode 538 - Convert BST to Greater Tree
- TF-IDF 词向量
- 推荐一些煲音箱的音乐
热门文章
- 字符集和字符集编码详解
- Ubuntu 16.04中cartographer安装过程中的troubleshooting,以及demo的实现
- Windows10系统右键无法新建文本文档解决方案
- 劫持ZwQuerySystemInformation函数实现进程隐藏
- HTML内嵌内联外联——它们之间的优先级如何?
- ps网页效果图转html,Photoshop制作简洁干净的网页效果图
- CSAPP 第三版 第六章 家庭作业and so on
- 基于OpenCv+Django的网络实时视频流传输(前后端分离)
- 通达信sar源码和分时均价线(结算价)源码
- Zookeeper隐藏通道和羊群效应