- 浏览: 154107 次
- 性别:
- 来自: 五指山
文章分类
最新评论
-
dengdonglin888:
qq_30221445 写道你好 请问这种数据能解吗 < ...
Simple XML -
qq_30221445:
你好 请问这种数据能解吗 <request> ...
Simple XML -
画个逗号给明天qu:
画个逗号给明天qu 写道
Android上传文件到服务器 -
画个逗号给明天qu:
...
Android上传文件到服务器 -
alranger:
我在jsp页面加上这一段代码后,问题还是存在。
解决Ext在ie9报错:不支持extjs对象的“createContextualFragment属性或方法”
转:http://blog.csdn.net/wen0006/article/details/6185903
先简要说明下Android支持的视频格式,如下:
由于硬件的不同,不同的手机支持的编解码方式有些不一样,在T-Mobile G1实际设备中增加了对WMA,WMV,H.264 AVC格式解码的支持。Android支持的音/视频编码方式仅包括:AMR-NB,H.263,输出的视频格式也只*.3gp或者*.mp4,这点在以后的开发中需要注意。
对Android的编解码有了一些了解后,我们再去研究下如何在Android上来播放/录制视频,打开Android SDK中关于媒体方面的说明,摘要其主要部分如下:
首先注意的就是:MediaPlayer,MediaRecoder,主要是用来播放视频与录制视频的类;由于这2个类都比较复杂,本篇在后面会详细介绍如何使用MediaRecoder,MediaPlayer将在以后篇幅中再详细介绍。
其他的几个类,定义Android支持的编码方式,如下:
类 | 说明 | 编码方式定义 |
MediaRecorder.AudioEncoder | 音频编码当时 | AMR_NB:AMR NB编码 |
MediaRecorder.AudioSource | 声音采样设备 | MIC:麦克风 |
MediaRecorder.OutputFormat | 录制输出格式 | MPEG_4:*.mp4 |
RAW_AMR:*.amr | ||
THREE_GPP:*.3gp | ||
MediaRecorder.VideoEncoder | 视频编码方式 | H263:H.263编码 |
H264:H.264编码 | ||
MPEG_4_SP:mp4编码 | ||
MediaRecorder.VideoSource | 视频采样设备 | CAMERA:数码相机 |
如何使用MediaRecorder录制声音?
先对声音录制有个大致的了解,需要设置声音数据的来源、输出编码方式、输出文件路径、输出文件格式等。有一点需要说明的是:输出文件格式就相当于一个容器,具体采用什么编码需要指定编码格式。编码一样可能输出格式不一样,输出格式一样其编码方式可能不一样。
android.media 包含与媒体子系统交互的类。使用 android.media.MediaRecorder 类进行媒体采样,包括音频和视频。MediaRecorder 作为状态机运行。需要设置不同的参数,比如源设备和格式。设置后,可执行任何时间长度的录制,直到用户停止。
录制音频主要片段如下:
MediaRecorder mrec ;
File audiofile = null;
private static final String TAG=”SoundRecordingDemo”;
protected void startRecording () throws IOException
{
mrec.setAudioSource(MediaRecorder.AudioSource.MIC);
mrec.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
mrec.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
if (mSampleFile == null)
{
File sampleDir = Environment.getExternalStorageDirectory();
try
{
audiofile = File.createTempFile(”ibm”, “.3gp”, sampleDir);
}catch (IOException e)
{
Log.e(TAG,”sdcard access error”);
return;
}
}
mrec.setOutputFile(audiofile.getAbsolutePath());
mrec.prepare();
mrec.start();
}
protected void stopRecording ()
{
mrec.stop();
mrec.release();
processaudiofile(audiofile.getAbsolutePath());
}
protected void processAudiofile ()
{
ContentValues values = new ContentValues(3);
long current = System.currentTimeMillis();
values.put(MediaStore.Audio.Media.TITLE, “audio” + audiofile.getName());
values.put(MediaStore.Audio.Media.DATE_ADDED, (int) (current / 1000));
values.put(MediaStore.Audio.Media.MIME_TYPE, “audio/3gpp”);
values.put(MediaStore.Audio.Media.DATA, audiofile.getAbsolutePath());
ContentResolver contentResolver = getContentResolver();
Uri base = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
Uri newUri = contentResolver.insert(base, values);
sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, newUri));
}
对以上代码解析如下:
- 在 startRecording 方法中,实例化并初始化 MediaRecorder 的实例。
- 输入源被设置为麦克风(MIC)。
- 输出格式被设置为 3GPP(*.3gp 文件),这是移动设备专用的媒体格式。
- 编码器被设置为 AMR_NB,这是音频格式,采样率为 8 KHz。NB 表示窄频。SDK 文档 解释了不同的数据格式和可用的编码器。
- 音频文件存储在存储卡而不是内存中。External.getExternalStorageDirectory() 返回存储卡位置的名称,在该目录中将创建一个临时文件名。然后,通过调用 setOutputFile 方法将文件关联到 MediaRecorder 实例。音频数据将存储到该文件中。
- 调用 prepare 方法完成 MediaRecorder 的初始化。准备开始录制流程时,将调用 start 方法。在调用 stop 方法之前,将对存储卡上的文件进行录制。release 方法将释放分配给 MediaRecorder 实例的资源。
- 音频采样完成之后, 向设备的媒体库添加该音频。在该代码样例中,processAudiofile 方法将音频添加到媒体库。使用 Intent 通知设备上的媒体应用程序有新内容可用。
- 最后还需要注意的是,录制声音需要一定的权限,需要向 AndroidManifest.xml 添加权限声明:
<uses-permission android:name=”android.permission.RECORD_AUDIO”></uses-permission>总结说明:
- Android SDK中对视频开发方面提供了很大的方便,但是在使用的过程中发现,这些类封装的都很高层,很多地方估计也无法满足开发人员的需求,主要体现在缺少对文件流操作等底层接口,我们只能通过控制状态来控制文件流,缺少这方面操作增加了Android视频开发的难度,比如说增加其他编码器等。
- Android T-Mobile G1可以在线看Youtube视频,然而我们在开发中却发现,其无法播放FLV格式的视频,这就有些不明白了?估计在未来应该会支持的,FLV是当前最流行的流媒体格式,如果不支持对用户在Android上直接看这些FLV视频会有很大的影响。
发表评论
-
xUtils简介
2014-11-25 10:04 873xUtils 包含了很多实用的android工具。 xU ... -
直接拿来用!最火的Android开源项目
2014-07-25 11:01 718转 http://www.admin10000.com/d ... -
Android APK反编译详解(附图)
2014-03-28 10:56 847http://blog.csdn.net/ithomer/ar ... -
小米人
2014-02-17 17:23 708http://www.xiaomiren.net/ -
android开发之gallery 兑现滚动一张且短距离滑动实现滚动
2013-07-02 15:28 688http://www.myexception.cn/andro ... -
TextView显示插入的图片
2013-07-01 11:29 734http://orgcent.com/android-text ... -
TextView使用SpannableString设置复合文本
2013-07-01 11:29 676http://orgcent.com/android-text ... -
转:::Android TextView文字横向自动滚动(跑马灯)
2013-06-17 11:45 1531TextView实现文字滚动需要以下几个要点: 1.文字长度长 ... -
相片滤镜开源
2013-04-27 15:01 759https://github.com/daizhenjun/I ... -
android图片特效处理之模糊效果
2013-04-27 14:57 855http://blog.csdn.net/sjf0115/ar ... -
android图片处理方法(不断收集中)
2013-04-27 14:57 584http://gundumw100.iteye.com/blo ... -
Android, WindowsPhone7, IOS ,vc2010平台40多套图片滤镜开源
2013-04-27 14:56 691http://www.cnblogs.com/daizhj/a ... -
移动云存储平台
2013-04-25 16:13 922http://bmob.cn 关于Bmob 对于很多 ... -
android ExpandableListView简单应用及listview模拟ExpandableListView
2013-02-28 11:45 709http://blog.csdn.net/jj120522/a ... -
android_App集成支付宝
2013-02-28 11:43 811http://www.cnblogs.com/qianxude ... -
Android Pull Refresh View 插件
2012-12-01 12:43 876Android Pull Refresh View htt ... -
Android-TelephoneManager(转载)
2012-10-09 22:08 1380好文章齐分享。原文地址:http://blog.si ... -
android 开源 listview separato
2012-08-27 22:51 684http://code.google.com/p/androi ... -
fragment开源项目 学习
2012-08-13 12:02 955https://github.com/tisa007/Andr ... -
Fragment学习
2012-08-13 11:53 696http://www.eoeandroid.com/threa ...
相关推荐
### 浅析Android智能手机平台 #### 一、引言 随着移动互联网技术的快速发展,智能手机逐渐成为人们生活中不可或缺的一部分。Android作为一款广受欢迎的操作系统,不仅因其强大的功能和灵活性受到消费者的喜爱,也...
【Android OS平台应用浅析】 Android是由Google开发的基于Linux平台的开源移动操作系统,它以其开放性和灵活性在智能手机和平板电脑市场占据主导地位。Android操作系统采用分层架构,包括应用程序层、应用程序框架...
在Android开发中,JNI常用于优化性能关键的部分,如图形处理、音频视频编码解码、机器学习库的集成等。使用JNI时要注意内存管理,避免内存泄漏,以及处理好线程同步问题,因为Java层和Native层的线程模型并不相同。 ...
在Android平台上,录屏功能是通过多种方式实现的,其中最常用的是`MediaRecorder`类,它是Android SDK中专门用于音视频录制的工具。本文将深入解析如何利用`MediaRecorder`进行Android录屏,以及探讨其他两种录屏...
在Android中通常用MediaPlayer来播放一些媒体文件,对于音频文件来说只需直接使用MeidaPlayer结合几句代码即可,但是对于视频文件来说稍微复杂一些。单独的MediaPlayer只能播放音频文件,要想播放视频还需要...
4. 安全机制:蔡罗成的论文《Android后台监听实现机制浅析》涉及Android平台的安全性,提供了后台监听机制的实现方法,这对于开发安全的移动信息平台非常重要。 知识点三:硬件调试过程和技术细节 1. 视频监视器和...
2. **大对象与分配策略**:大对象(如位图、音频或视频文件)会占用大量连续内存,可能导致内存碎片。尽量减少大对象的使用,或者使用高效的加载和缓存策略。例如,对于位图,可以使用BitmapFactory.Options的...
为了实现这一构想,本项目选择了Java作为开发语言,并在Eclipse平台上搭建了Android开发环境。具体的开发环境配置包括安装Eclipse和JDK 1.6,设置JAVA_HOME、PATH、CLASSPATH等环境变量,并配置Android虚拟设备(AVD...
- Android平台因其良好的开放性和便捷性,成为开发移动端社交软件的理想选择。 - 智能手机功能日益强大,已成为人们日常生活中不可或缺的一部分,尤其是在信息获取和处理方面。 2. **国内外社交软件的发展状况**...
《云视讯行业专题:浅析全球云视讯龙头ZOOM》 云视讯,作为现代信息技术的重要组成部分,已经深入到各行各业,改变了人们的工作、学习和生活方式。在全球范围内,云视讯市场的领导者非ZOOM莫属。ZOOM以其卓越的技术...
《Java程序设计》是计算机专业的核心课程之一,它培养了学生使用Java语言进行软件开发的能力,同时也为学生今后在Android开发、J2EE网站开发等领域的职业生涯打下坚实的基础。然而,由于Java语言本身具有一定的抽象...
门户展现层则通过iOS和Android客户端,向用户提供友好的界面。 移动报表中心满足了管理层对各种业务指标的实时查看需求,而移动监控平台则通过可视化手段,使管理人员能够随时了解生产环节的实时和历史监控画面。...
WebRTC提供了实时音视频的核心技术,包括音视频的采集、编解码、网络传输、显示等功能,并且还支持跨平台:windows,linux,mac,android。 虽然WebRTC的目标是实现跨平台的Web端实时音视频通讯,但因为核心层代码...
uni-app是基于Vue.js构建的多端开发框架,它允许开发者使用一套代码,即可发布到iOS、Android、H5、小程序等多个平台。这一特性极大地提高了开发效率,降低了维护成本。首先,我们要理解uni-app的架构原理,它是如何...