The Android platform offers built-in encoding/decoding for a variety of common media types, so that you can easily integrate audio, video, and images into your applications.

android平台内置了相关的编码和解码工具,据此,开发者可以很轻松的集成音频视频和照片到自己的应用程序中。

大致分为两项:

  使用android播放音乐和视频,此时使用MediaPlayer这个类和相关的方法

  使用android录制音频和视频,此时使用MediaRecorder这个类和相关的方法

先看一下:android支持的一些常用的格式:

  上图来自API

  支持的音频格式有:WAVE,MP3,3GP,视频格式:MP4 3GP ,图片格式:JPG,GIF,png,和bmp.

音视频的播放:

  

Android lets you play audio and video from several types of data sources. You can play audio or video from media files stored in the application's resources (raw resources),

from standalone files in the filesystem, or from a data stream arriving over a network connection. To play audio or video from your application, use the MediaPlayer class.

  API推荐使用MediaPlayer来播放来自不同渠道不同类型的资源文件。

  熟悉:MediaPlayer

  MediaPlayer class can be used to control playback of audio/video files and streams.继承之Object类在android.media包下。

    

  关于MediaPlayer的状态图和权限部分:查看API。

接下看一些MediaPlayer常用的方法:

  默认的无参构造方法:MediaPlayer mp= new MediaPlayer();

 三个静态的方法 :

  

  这些方法可以用来得到不同路径下的MediaPlayer资源对象。比如: MediaPlayer mp = MediaPlayer.create(this,R.raw.cong);

  打开了res/raw/文件下的cong的音频资源。再调用mp.start()即可播放该资源,注意异常捕获。

  但是:在实际开发中很少用这样的方法:因为:调用这个方法每次都会产生一个新的MediaPlayer对象,当一个播放器里需要播放很多首不同的歌曲时就会

  造成资源的浪费。而此时调用的是setDataSource()来装载指定的音频文件。

  

上面四个方法用来获取资源的相关信息:比如获取当前的位置,返回current position in milliseconds ,返回资源的长度,视频的宽度和高度。

    isPlaying(),用来判断是否在播放,,isLooping()判断是否循环播放,返回值均为boolean.

基本控制的方法:

  start pause stop :开始、暂停、停止,需要注意会抛出异常IllegalStateException

  reset :重置

  prepare prepareAsync:二者的区别在于:后者是异步的,它不会阻塞当前的UI线程。

   release

  seekTo():定位到某一个位置,会抛出异常IllegalStateException

  

  设置资源的方法:在访问web资源或者其他文件资源时会用到:

 MediaPlayer mp = new MediaPlayer();
mp.setDataSource(PATH_TO_FILE);
mp.prepare();
mp.start();
 注意:在执行了setDataSource()方法后,MediaPlayer并没有真正的装载那些音频资源,还需要调用MediaPlayer的prepare()方法,来装载音频资源。

相关的监听方法:

  

  

Android之Audio和Video的更多相关文章

  1. Wechat 微信端正确播放audio、video的姿势

    在开发微信项目时,有在项目中播放音频(audio)和视频(video)的需求: 在开发中,我们会遇到的问题 audio.video在Android和IOS系统上的兼容性: video播放完成后,跳出浏 ...

  2. Android Media (Audio) Framework 多媒体系统框架

    http://blog.csdn.net/lskshz/article/details/17264113 原址:http://blog.csdn.net/myzhzygh/article/detail ...

  3. 【转】解决chrome浏览器不支持audio和video标签的autoplay自动播放

    声音无法自动播放这个在 IOS/Android 上面一直是个惯例,桌面版的 Safari 在 2017 年的 11 版本也宣布禁掉带有声音的多媒体自动播放功能,紧接着在 2018 年 4 月份发布的 ...

  4. HTML5 audio与video标签实现视频播放,音频播放

    随着互联网的飞速发展以及HTML5的应用,越来越多的项目中用到video,audio当常用标签. <audio> 标签属性 <audio src="song.mp3&quo ...

  5. audio和video元素

    目录 [1]HTML元素 audio video source track[2]API 方法 属性 事件 audio专有 前面的话 HTML5新增了两个与媒体相关的标签,让开发人员不必依赖任何插件就能 ...

  6. 代码验证浏览器是否支持html audio 和video

    <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8&quo ...

  7. HTML5 Audio and Video 的新属性简介

    前言:HTML5 中 Audio and Video的使用方法比较简单,但就是比较复杂,方法属性多.如果不常用的几乎难以记住,甚至有些人难以区分不同属性和方法的作用,更别说应用了.以下对Audio a ...

  8. Using HTML5 audio and video

    From:https://developer.mozilla.org/en-US/docs/Web/Guide/HTML/Using_HTML5_audio_and_video Using HTML5 ...

  9. stagefright框架(七)-Audio和Video的同步

    讲完了audio和video的处理流程,接下来要看的是audio和video同步化(synchronization)的问题.OpenCORE的做法是设置一个主clock,而audio和video就分别 ...

随机推荐

  1. logistic regression svm hinge loss

    二类分类器svm 的loss function 是 hinge loss:L(y)=max(0,1-t*y),t=+1 or -1,是标签属性. 对线性svm,y=w*x+b,其中w为权重,b为偏置项 ...

  2. o'Reill的SVG精髓(第二版)学习笔记——第九章

    第九章:文本 9.1 字符:在XML文档中,字符是指带有一个数字值的一个或多个字节,数字只与Unicode标准对应. 符号:符号(glyph)是指字符的视觉呈现.每个字符都可以用很多不同的符号来呈现. ...

  3. 关于 NSData 的数据类型(2进制,16进制之间)及深入剖析(转)

    . NSData 与 NSString NSData-> NSString NSString *aString = [[NSString alloc initWithData:adataenco ...

  4. 一站式学习Redis 从入门到高可用分布式实践(慕课)第六章 Redis开发运维常见问题

    fork操作 1.同步操作 2.与内存量息息相关:内存越大,耗时越长(与机器类型有关) 3.info:latest_fork_usec 进程外开销 AOF追加阻塞 不知道哪个命令??? 单机多实例部署 ...

  5. 【Nowcoder 上海五校赛】二数(模拟)

    题目描述: 我们把十进制下每一位都是偶数的数字叫做“二数”. 小埃表示自己很聪明,最近他不仅能够从小数到大:2,3,4,5....,也学会了从大数到小:100,99,98...,他想知道从一个数开始数 ...

  6. 【TOJ 3692】紧急援救

    #include<iostream> #include<algorithm> #include<queue> using namespace std; #defin ...

  7. LVS-DR模式实现调度负载

    本篇文章主要梳理一下LVS前端调度过程及用户请求过程 实验架构 准备工作 添加各主机路由联通主机通信 Client IP route add default gw 172.20.17.19 Route ...

  8. html+php上传图片文件到服务器

    html+php上传图片文件到服务器 一.html代码 <body> <form action="" method="post" enctyp ...

  9. STM32(3)——外部中断的使用

    1 .简介 ARM Coetex-M3内核共支持256个中断,其中16个内部中断,240个外部中断和可编程的256级中断优先级的设置.STM32目前支持的中断共84个(16个内部+68个外部),还有1 ...

  10. 第一个网页(仿照当当网,仅仅使用CSS)

    这个网页是在学过CSS之后,对当当网首页进行模仿的网页,没有看当当网的网页源码,纯按照自己之前学的写的,由于是刚学过HTML和CSS才一个星期,所以里面有许多地方写的非常没有水平,仅仅用来学习使用,欢 ...