资源描述:
《Android音视频介绍》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Android音频和视频Lisa.lanAndroid支持的音视频格式1.Android所支持的音频格式对于播放,Android支持各种各样的音频文件格式和编解码。对于录音的支持少一些,以后我们学到录音部分将会讨论这点。1.1AAC高级音频编码(以及其扩展:HEAAC)编解码,.m4a,.3gp文件.AAC是一个流行的标准,IPOD和其他便携式媒体播放器都使用它。Android在MPEG4音频文件和3GP文件内(都是基于MPEG4格式)支持这种音频格式。最近AAC的附加规范HEAAC也被支持了。1.2MP3MPGE-1音频层3,.mp3文
2、件。Android支持MP3,MP3可能是使用最广泛的音频编解码,这允许Android通过各种网站和音乐商店来使用大部分在线音频。1.3AMR自适应多速率编解码(AMR-NB,AMR-WB),.3gp,.amr文件。AMR音频编解码已经被标准化了,主要被3GPP(第三代合作伙伴项目)用于语音音频编解码。3GPP是一个为其合作伙伴创建规范的电信行业机构。换句话说,AMR编解码主要用于现代移动电话的语音呼叫程序,并且手机厂商和手机携带者普遍都支持这个格式。AMR这格式一般对语音编码很有用,但对更复杂的类型表现的不够好,比如音乐。1.4OggO
3、ggVorbis,.ogg文件。OggVorbis是个开源的,无专利费的音频编解码。其品质可媲美商业性的,需缴纳专利费的编解码比如MP3,AAC。它由一群自愿者开发,当前由Xiph.Org基金会负责维护。1.5PCM脉冲编码调制通常被用在WAVE,WAV文件,.wav文件。PCM这技术主要用于音频在电脑和其他电子音频设备上的存储。它通常是个未压缩的音频文件,其数据代表随着时间流逝一段音频的振幅。“采样率”是多长时间一次一个振幅读取被存储起来。“位深度”是指多少位被用来代表一个单独的样本。一段16KHZ采样率,32位位深度的音频数据是指它包
4、含每秒钟16000个的32位的数据用来表示音频振幅。采样率和位深度越高,数字化音频越精准。采样率和位深度也决定了音频文件的大小。Android在WAV文件内支持PCM音频数据。WAV是PC上的一个长期存在的标准音频格式。2.Android支持的视频格式MPEG-4,H.264,JPG,PNG,GIF,3GPP另具体功能如下:多媒体播放,下载:3GPP,MPEG-4,AAC,MP3containers流媒体下载,实时播放:3GPP,HTTP,RTSP/RTP动态视频和静态图像的编码,解码如:MPEG-4,H.263,AVC(H.264),
5、JPEG语音编码格式:AMR-NB,AMR-WB音乐编码格式:MP3,AAC,AAC+视频和图像格式:3GPP,MPEG-4,JPEG视频会议:基于H324-M标准3.Android音视频播放Android平台为多种常见媒体类型提供了内建的编码/解码支持,因而可以简单地向程序整合音频、视频和图像。要使用平台的媒体功能非常简单——同样只需使用意图-活动的机制,之后Android会处理其余的工作。Android可以从多种数据源类型中播放音频和视频。可以播放存储在程序资源(原始资源rawresource)中的音频或视频媒体文件,可以播放文件系统
6、中的某一文件,可以播放经由网络的流数据。要让程序播放视频或音频,需使用MediaPlayer类。如果移动设备硬件支持的话,平台也支持录制音频和视频。要录制音频或视频,需使用MediaRecorder类。注意,模拟器没有获取音频或视频的硬件,不过实际的移动设备通常会提供这些支持,可以通过MediaRecorder类使用可以播放任意来源的媒体:原始资源、系统中的文件或是可用的网络(URL)。仅可以通过标准输出设备播放音频数据;目前来说,就是至移动设备的扬声器或是蓝牙耳机。现在不能在通话音频中播放声音文件。3.1播放原始资源最为常见的需求或许就
7、是从自有程序中播放媒体(一般是声音)了吧。这很容易做到:将声音(或其他媒体资源)文件放入工程的res/raw文件夹,Eclipse插件(或aapt)将会发现它并将其识别为R类可以引用的资源。创建一个MediaPlayer的实例,用MediaPlayer.create引用该资源,之后调用实例的start()方法:MediaPlayermp=MediaPlayer.create(context,R.raw.sound_file_1); mp.start();要停止播放,调用stop()。如果希望之后重放该媒体,就必须在再次调用start()
8、之前reset()及prepare()该MediaPlayer对象。(create()在第一次使用时会调用prepare()。)要暂停播放,调用pause()。在想要继续播放的时候调用star