文档章节

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

Mr_Nice
 Mr_Nice
发布于 2016/05/22 20:01
字数 794
阅读 25
收藏 0
点赞 2
评论 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

一种新的滥用Telegram的Android木马被发现

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

嘶吼RoarTalk ⋅ 06/21 ⋅ 0

OpenGL实现物体动画和视频特效

OpenGL实现视频的水印、滤镜?OpenGL实现视频的剪裁、旋转? 2D/3D物体的 旋转,平移,缩放? OpenGL图片滤镜与视频滤镜? 矩阵(Matrix)是一个按照长方阵列排列的复数或实数集合,最早来自于方...

shareus ⋅ 04/24 ⋅ 0

Google让Chromebook用户在Chrome OS中管理所有Android文件

Google Chromium开发者FrançoisBeaufort透露,Chrome操作系统团队正计划在Files应用中让Chromebook设备管理所有的Android文件。被称为“Android文件”的新功能已在Chrome OS Dev频道中实施,...

稿源:cnBeta.COM ⋅ 06/04 ⋅ 0

iOS直播类APP开发流程解析(内附源码详解)

前言 个人认为要想把直播从零开始做出来,绝对是牛逼中的牛逼,大牛中的大牛,因为直播中运用到的技术难点非常之多,视频/音频处理,图形处理,视频/音频压缩,CDN分发,即时通讯等技术,每一...

_小迷糊 ⋅ 05/09 ⋅ 0

Android端实现多人音视频聊天应用(一)

作者:声网用户,资深Android工程师吴东洋。 本系列文章分享了基于Agora SDK 2.1实现多人视频通话的实践经验。 转载已经过原作者许可。原文地址 自从2016年,鼓吹“互联网寒冬”的论调甚嚣尘...

Agora ⋅ 04/10 ⋅ 0

【android学习之十四】——多媒体1:音乐播放

声明:学习的书籍《Android应用开发揭秘》,这里记录学习该书籍的日志,引用的相关代码与总结描述,没有商业的用途,完全是自我学习的一个记录,刚刚学习不可避免会出现很多问题,若是有错误...

晨曦之光 ⋅ 2012/03/08 ⋅ 1

比亚迪DiLink深体验:让科幻般的车生活都成为了实现

     手机已经成为现代人的身体器官,当然,在汽车场景中,人们依然摆脱不了手机的吸引力。   顺应科技的发展,整车厂也已经从传统的提供“汽车”的思维转变为提供完整的出行解决方案。...

遇见人工智能 ⋅ 前天 ⋅ 0

Android开发者指南-摄像头-Camera[原创译文]

Camera 版本:Android 4.0 r1 在本文中 需要考虑的问题 概述 Manifest声明 使用内置的摄像头应用程序 捕获图像的intent 捕获视频的intent 接收摄像头intent的结果 创建摄像头应用程序 检测摄...

微笑的江豚 ⋅ 2016/08/24 ⋅ 0

华为云测平台服务再升级!华为M5系列平板调测能力正式上线!

6月1日,华为M5系列平板设备兼容性测试和远程真机调试功能在华为终端开放实验室正式上线!助力您的产品在大屏适配上快人一步! 华为终端开放实验室DevEco平台现已提供基于华为M5系列平板设备...

华为终端开放实验室 ⋅ 06/08 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

CENTOS7防火墙命令记录

安装Firewall命令: yum install firewalld firewalld-config Firewall开启常见端口命令: firewall-cmd --zone=public --add-port=80/tcp --permanent firewall-cmd --zone=public --add-po......

cavion ⋅ 52分钟前 ⋅ 0

【C++】【STL】利用chromo来测量程序运行时间与日志时间打印精确到微秒

直接上代码吧,没啥好说的。头疼。 #include <iostream>#include <string>#include <ctime>#include <sstream>#include <iomanip>#include <thread>#include <chrono>using ......

muqiusangyang ⋅ 55分钟前 ⋅ 0

Mac环境下svn的使用

在Windows环境中,我们一般使用TortoiseSVN来搭建svn环境。在Mac环境下,由于Mac自带了svn的服务器端和客户端功能,所以我们可以在不装任何第三方软件的前提下使用svn功能,不过还需做一下简...

故久呵呵 ⋅ 今天 ⋅ 0

破解公司回应苹果“USB限制模式”:已攻破

本周四,苹果发表声明称 iOS 中加入了一项名为“USB 限制模式”的功能,可以防止 iPhone 在连接其他设备的时候被破解,并且强调这一功能并不是针对 FBI 等执法部门,为的是保护用户数据安全。...

六库科技 ⋅ 今天 ⋅ 0

MyBtais整合Spring Boot整合,TypeHandler对枚举类(enum)处理

概要 问题描述 我想用枚举类来表示用户当前状态,枚举类由 code 和 msg 组成,但我只想把 code 保存到数据库,查询处理,能知道用户当前状态,这应该怎么做呢?在 Spring 整合MyBatis 的时候...

Wenyi_Feng ⋅ 今天 ⋅ 0

synchronized与Lock的区别

# <center>王梦龙的读书笔记第一篇</center> ## <center>-synchronized与Lock的区别</centre> ###一、从使用场景来说 + synchronized 是能够注释代码块、类、方法但是它的加锁是和解锁使用一......

我不想加班 ⋅ 今天 ⋅ 0

VConsole的使用

手机端控制台打印输出,方便bug的排查。 首先需要引入vconsole.min.js 文件,然后在文件中创造实例。就能直接使用了。 var vConsole = new VConsole(); vConsole的文件地址...

大美琴 ⋅ 今天 ⋅ 0

Java NIO之字符集

1 字符集和编解码的概念 首先,解释一下什么是字符集。顾名思义,就是字符的集合。它的初衷是把现实世界的符号映射为计算机可以理解的字节。比如我创造一个字符集,叫做sex字符集,就包含两个...

士别三日 ⋅ 今天 ⋅ 0

Spring Bean基础

1、Bean之间引用 <!--如果Bean配置在同一个XML文件中,使用local引用--><ref bean="someBean"/><!--如果Bean配置在不同的XML文件中,使用ref引用--><ref local="someBean"/> 其实两种......

霍淇滨 ⋅ 今天 ⋅ 0

05、基于Consul+Upsync+Nginx实现动态负载均衡

1、Consul环境搭建 下载consul_0.7.5_linux_amd64.zip到/usr/local/src目录 cd /usr/local/srcwget https://releases.hashicorp.com/consul/0.7.5/consul_0.7.5_linux_amd64.zip 解压consu......

北岩 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部