Android 录屏、录音与合成
来源:互联网 发布:最后的圣地 淘宝 编辑:程序博客网 时间:2024/04/28 01:51
最近做的项目需要实现这一功能。顺便记录了下来。。。
1、录音,非常简单,用到了MediaRecorder这个类。需要用到的权限:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
<uses-permission android:name="android.permission.RECORD_AUDIO" />
录音代码:
MediaRecorder recorder = new MediaRecorder();
//设置音频来源
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
//设置音频输出格式
recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
//设置录音编码格式
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
//设置输出文件名
recorder.setOutputFile(fileName);
//录制开始
recorder.prepare();
recorder.start();
别忘了结束录音时释放资源:
recorder.stop();
recorder.release();
recorder = null;
2、录屏,方法网上也有很多,我这只是其中一种,是谷歌Android5.0版本时候发放了现在的这个接口android.media.projection.MediaProjection。使用该接口,第三方应用程序无需获取系统root权限也可以直接进行屏幕截图操作了。
录屏代码:
//首先获取一个MediaProjectionManager实例
mediaProjectionManager = (MediaProjectionManager) getSystemService(MEDIA_PROJECTION_SERVICE);
//利用MediaProjectionManager类实例的功能函数createScreenCaptureIntent()生成intent,为接下来的的抓取屏幕做准备,使用startActivityForResult()启动屏幕捕捉
Intent captureIntent = mediaProjectionManager.createScreenCaptureIntent();
startActivityForResult(captureIntent, REQUEST_CODE);
//在onActivityResult()中获取返回值,结果在 getMediaProjection()上,获取捕捉到的屏幕数据
@SuppressWarnings("deprecation")
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
MediaProjection mediaProjection = mediaProjectionManager.getMediaProjection(resultCode, data);
if (mediaProjection == null) {
return;
}else{
........视频编码,封装想要的格式
File file = new File(Environment.getExternalStorageDirectory(),videoFileName);
final int bitrate = 6000000;
screenRecorder = new ScreenRecorder(width, height, bitrate, 1,mediaProjection, file.getAbsolutePath());
screenRecorder.start();
moveTaskToBack(true);
}
ScreenRecorder这个类是处理获取的屏幕信息的,如编码,格式装换等。
3、现在已经拿到了音频和视频了,下面就是合成一个视频文件
视频合成代码:需要用到isoparser.jar,和aspectjrt.jar俩个jar包
Movie countVideo = MovieCreator.build(videoFileName);
Movie countAudioEnglish = MovieCreator.build(audioFileName);
Track audioTrackEnglish = countAudioEnglish.getTracks().get(0);
countVideo.addTrack(audioTrackEnglish);
{
Container out = new DefaultMp4Builder().build(countVideo);
FileOutputStream fos = new FileOutputStream(new File(videoName));
out.writeContainer(fos.getChannel());
fos.close();
}
附上demo链接http://download.csdn.net/detail/wxwxxc/9728348
如有问题,敬请指正!
- Android 录屏、录音与合成
- Android中的录音与音频合成
- 浅谈Android实现伴奏录音合成MP3
- centos 6.5 录屏,录音
- ffmpeg实现录屏+录音
- ffmpeg实现录屏+录音
- android 息屏锁频录音、录视频、电话自动录音
- Android录音与播放
- Android录音与播放
- Android录音与播放
- Android录音与播放
- Android录音与播放
- Android 录音与播放
- [Android] 录音与播放录音实现
- [Android] 录音与播放录音实现
- Android录音与播放录音实现
- BroadcastReceiver实现android来去电录音功能(外录)
- 如何使Android录音实现内录功能
- 一道笔试题
- maven 使用 aliyun的mirror
- 工具方法:判断是否为空获取手机Imei编号等
- 反编译初步
- JS transform
- Android 录屏、录音与合成
- 钱宝网新手做任务赚钱攻略
- jsp: ${}、 %{ }、 <%= %>
- 周义:建设流程管理系统 我还在不停努力
- 碎片化时代的知识
- 冒泡排序(Bubble Sort)
- java主线程等待所有子线程执行完毕在执行(常见面试题)
- SSH连接linux出现乱码的问题
- 安装jar包到本地maven仓库