文档章节

android开发笔记之多媒体—音频和视频的录制

Mr_Nice
 Mr_Nice
发布于 2016/05/22 20:01
字数 794
阅读 26
收藏 0

使用MediaRecorder录制音频

手机一般都提供麦克风硬件,而Android系统可以利用该硬件来录制音频了。

使用MediaRecorder录制音频的步骤:

     1)创建MediaRecorder对象
     mediaRecorder = new MediaRecorder();

     2)调用MediaRecorder对象的setAudioSource()方法设置声音来源,一般传入MediaRecorder.AudioSource.MIC参数指定录制来自麦克风的声音
                        mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);

     3)调用MediaRecorder对象的setOutputFormat()设置录制音频文件的格式。
                recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);

     4)调用MediaRecorder对象的
setAudioEncoder,setAudioEncodingBitRate(int),setAudioSamplingRate(int)设置录制的声音的编码格式,编码位率,采样率等。

    这些参数将可以控制所录制的声音的品质,文件的大小,一般声音品质越好,声音文件越大。
    recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);

    5)调用MediaRecorder对象的setOutputFile(String)设置录制文件的保存的位置。
     mediaRecorder.setOutputFile(Environment.
            getExternalStorageDirectory().
            getAbsolutePath()+"/huadong.amr");

    6)调用MediaRecorder的prepare()方法准备录制
    mediaRecorder.prepare();

    7)调用MediaRecorder对象的start()方法开始录制
    mediaRecorder.start();

    8)录制完成,调用MediaRecorder对象的stop()方法停止录制,并调用release()方法释放资源。
    mediaRecorder.stop();
    //释放资源
    mediaRecorder.release();

**注意:a)第三步和第四步不能搞反,否则会引发异常。
b)需要的权限**

android:name="android.permission.WRITE_EXTERNAL_STORAGE"
android:name="android.permission.RECORD_AUDIO"
android:name="android.permission.READ_EXTERNAL_STORAGE"

使用MediaRecorder和SurfaceView录制视频

手机一般都提供麦克风和摄像头硬件,而Android系统可以利用该硬件来录制视频了。

使用MediaRecorder录制音频的步骤:

 1)创建MediaRecorder对象
    mediaRecorder = new MediaRecorder();

 2)调用MediaRecorder对象的setVideoSource()方法设置视频的来源,一般传入MediaRecorder.VideoSource.CAMERA参数指定录制来自摄像头的图像
 mediaRecorder.setVideoSource(MediaRecorder.VideoSource.CAMERA);

 3)调用MediaRecorder对象的setAudioSource()方法设置声音来源,一般传入MediaRecorder.AudioSource.MIC参数指定录制来自麦克风的声音
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);

 4)调用MediaRecorder对象的setOutputFormat()设置录制音频文件的格式。

 recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);

 5)调用MediaRecorder对象的setVideoEncoder设置录制的视频的编码格式等。这些参数将可以控制所录制的视频的品质,文件的大小,一般视频品质越好,视频文件越大。
        recorder.setVideoEncoder(MediaRecorder.VideoEncoder.H264);

6)调用MediaRecorder对象的setAudioEncoder,setAudioEncodingBitRate(int),setAudioSamplingRate(int)设置录制的声音的编码格式,编码位率,采样率等。

   这些参数将可以控制所录制的声音的品质,文件的大小,一般声音品质越好,声音文件越大。
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);

 7)调用setVideoFrameRate(20)设置录制的视频帧率。必须放在设置编码和格式的后面,否则报错。

 8)调用setVideoSize(176, 144);设置视频录制的分辨率。必须放在设置编码和格式的后面,否则报错。

 9)调用setPreviewDisplay(sv.getHolder().getSurface());这是视频的预览效果。

 10)调用MediaRecorder对象的setOutputFile(String)设置录制文件的保存的位置。

 11)调用MediaRecorder的prepare()方法准备录制。

 12)调用MediaRecorder对象的start()方法开始录制。

 13)录制完成,调用MediaRecorder对象的stop()方法停止录制,并调用release()方法释放资源。

注意:需要的权限:

相比录制音频文件多了一个相机的权限

android.permission.CAMERA

© 著作权归作者所有

共有 人打赏支持
Mr_Nice
粉丝 0
博文 47
码字总数 39947
作品 0
广州
直播,音视频编码器和解码器(EasyDarwin)-Android

使用摄像头采集视频数据,并通过MediaCodec进行H264编码,之后打包成RTSP格式并上传的。 TextuewView也提供了一个setTransform方法,该方法接收一个matrix参数,使用该参数对当前的渲染内容进...

shareus
05/18
0
0
Android开发者指南(12) —— Android Supported Media For...

前言   本章内容为开发者指南(Dev Guide)/Appendix/Android Supported Media Formats,版本为Android3.1 r1,翻译来自:"jackeylu",欢迎大家访问他的博客:"http://jackeylu.wordpress.co...

AlexZhuang
2012/05/06
0
0
android自学笔记《三》——系统架构分析

下面是Android的系统架构图 翻译后 从上图中可以看出,Android系统架构为4层结构,从上层到下层分别是应用程序层、应用程序框架层、系统运行库层以及Linux内核层,分别介绍如下: 1)应用程序...

郭子
2012/02/03
0
5
一种新的滥用Telegram的Android木马被发现

     ESET研究人员发现了一个新的Android RAT(远程管理工具)家族,滥用Telegram协议进行指挥和控制以及数据传输。   初步的调查显示似乎是之前报告的IRRAT和TeleRAT的行动有所增加,...

嘶吼RoarTalk
06/21
0
0
(转)Android拍摄的视频无法在IOS播放

https://blog.csdn.net/u012992171/article/details/50673305 公司最近的项目需要上线一个视频功能,在临近尾声的时候出现了一个比较坑爹的BUG,那就是开发Android的同事拍摄的视频上传到服务...

小曼Study
08/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

使用esp8266制作wifi干扰器

概述 这个东西,说真的对现在的无线网络环境影响其实不是很大了,首先它只能玩2.4ghz的无线,其次这个模块不是特别的可靠,运行的时候温度会很高,买来玩玩还是可以的 什么是esp8266 ESP8266...

bboysoulcn
17分钟前
2
0
以太坊总结

一、概念说明 1.以太坊(Ethereum blockchain)由V神(Vitalik Buterin)发明,是一个交易记录的永久数据库,它以一个“无信任”的交易系统来运行,不需要任何第三方信任机构即可进行点对点的...

盼望明天
42分钟前
1
0
Java并发工具类——AtomicInteger

基本类型int的递增等操作并不是线程安全的,加上synchronized又会影响性能,因此在并发情况下我们应该使用AtomicInteger,下面通过一个例子验证一哈。 public class TestAtomicInteger {...

东都大狼狗
44分钟前
3
0
基于CentOS7.2系统对RabbitMQ单机版安装过程

准备虚拟机系统 我的系统如下 系统版本7.2 安装perl yum install perl 安装wget工具 yum install -y wget 安装相关依赖工具 yum install ncurses ncurses-base ncurses-devel ncurses-libs ...

凌晨一点
48分钟前
2
0
Maven常用命令

Maven常用命令 说到命令,则不得不提一下环境变量,在之前的博文中简单提了一下环境变量的配置,这里具体说一下。说完环境变量的配置,然后就是Maven的常用命令,这里说的是常用的几个命令,...

星汉
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部