- 浏览: 1563048 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (673)
- Linux (3)
- android (302)
- php (12)
- struts2 (1)
- Flex积累 (88)
- Hibernate (8)
- MyEclipse (18)
- android备忘录 (209)
- Java备忘录 (53)
- spring (0)
- Flex备忘录 (30)
- JavaScript (10)
- Tomcat (11)
- Flex FrameWork (0)
- 设计模式学习 (4)
- 休闲娱乐 (4)
- Flex skin (1)
- Flex 组件 (2)
- 持久化相关 (2)
- DotNet相关 (5)
- Flex Style (1)
- Windows (11)
- Flex AIR (9)
- MySQL (1)
- mac OSX (29)
- eclipse (26)
- database (5)
- ARM (1)
- English (1)
- WebService (8)
- javabase64 (2)
- ruby (1)
- sqlite (5)
- ios (7)
- 无线应用 (1)
- Java (3)
- goagent (1)
- oc (1)
最新评论
-
Z_ying:
谢谢分享,上次也遇到过的,解决了,过了一段时间又忘记,幸亏看到 ...
FastJson 示例 及问题 -
wto8559:
这是什么错啊,我也遇到了.问下写一个servlet能解决什么问 ...
Exception in thread "HouseKeeper" java.lang.NullPointerException -
zxjlwt:
如何用php怎么弄了。http://surenpi.com
\U672a\U77e5\U9519\U8bef 字符还原 -
windseamless:
那怎么样才能屏蔽呢
java.lang.IllegalArgumentException: Window type can not be changed after the -
macleo:
Trinea 写道还是利用Fiddler抓包更方便,(1)无需 ...
android网络抓包相关
资源:
Android MediaPlayer的生命周期
http://syab11.iteye.com/blog/761660
Android提高第二十一篇之MediaPlayer播放网络视频
http://blog.csdn.net/hellogv/article/details/6429455
一定要先弄明白状态图:
http://book.51cto.com/art/200912/173820.htm
我说怎么总是感觉isPlaying()不太准确......晕
http://blog.csdn.net/kesenhoo/article/details/6547726
MediaPlayer使用示例:
其他资源:
1.http://blog.csdn.net/Android_Tutor/article/details/5743183
2.http://blog.csdn.net/Android_Tutor/article/details/5058217
Android MediaPlayer的生命周期
http://syab11.iteye.com/blog/761660
Android提高第二十一篇之MediaPlayer播放网络视频
http://blog.csdn.net/hellogv/article/details/6429455
一定要先弄明白状态图:
http://book.51cto.com/art/200912/173820.htm
我说怎么总是感觉isPlaying()不太准确......晕
引用
3. 播放、暂停和停止
调用start()方法,MediaPlayer将进入到started状态。isPlaying()方法可以用来判断MediaPlayer是否处在started状态。当MediaPlayer从网络上播放多媒体文件时,可以通过onBufferingUpdateListener.onBufferingUpdate(MediaPlayer mp,int percent)来监听缓冲的进度,其中percent是0~100的整数,代表已经缓冲好的多媒体数据的百分比。
调用pause()方法,MediaPlayer将进入到paused状态。需要注意的是,从started到paused、从paused到started状态的转换是异步过程,也就是说,可能经过一段时间才能更新MediaPlayer的状态。在调用isPlaying()来查询播放器的状态时需要考虑这一点。
调用stop()方法,MediaPlayer将进入到stopped状态。一旦MediaPlayer进入stopped状态,必须再次调用prepare()或者prepareAsyn()才能使其进入到prepared状态,以便复用此MediaPlayer对象,再次播放多媒体文件。
调用start()方法,MediaPlayer将进入到started状态。isPlaying()方法可以用来判断MediaPlayer是否处在started状态。当MediaPlayer从网络上播放多媒体文件时,可以通过onBufferingUpdateListener.onBufferingUpdate(MediaPlayer mp,int percent)来监听缓冲的进度,其中percent是0~100的整数,代表已经缓冲好的多媒体数据的百分比。
调用pause()方法,MediaPlayer将进入到paused状态。需要注意的是,从started到paused、从paused到started状态的转换是异步过程,也就是说,可能经过一段时间才能更新MediaPlayer的状态。在调用isPlaying()来查询播放器的状态时需要考虑这一点。
调用stop()方法,MediaPlayer将进入到stopped状态。一旦MediaPlayer进入stopped状态,必须再次调用prepare()或者prepareAsyn()才能使其进入到prepared状态,以便复用此MediaPlayer对象,再次播放多媒体文件。
http://blog.csdn.net/kesenhoo/article/details/6547726
MediaPlayer使用示例:
/** * 音频播放器 * @author kay */ public class PlayActivity extends Activity { private static final String TAG = "PlayActivity"; private EditText filenameText; private MediaPlayer mediaPlayer; private String filename; private int position; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); filenameText = (EditText)this.findViewById(R.id.filename); //对mediaPlayer进行实例化 mediaPlayer = new MediaPlayer(); ButtonClickListener listener = new ButtonClickListener(); //获取4个按钮 Button playButton = (Button)this.findViewById(R.id.play); Button pauseButton = (Button)this.findViewById(R.id.pause); Button resetButton = (Button)this.findViewById(R.id.reset); Button stopButton = (Button) this.findViewById(R.id.stop); //设置4个按钮的监听 playButton.setOnClickListener(listener); pauseButton.setOnClickListener(listener); resetButton.setOnClickListener(listener); stopButton.setOnClickListener(listener); Log.i(TAG, "onCreate()"); } @Override protected void onRestoreInstanceState(Bundle savedInstanceState) { this.filename = savedInstanceState.getString("filename"); this.position = savedInstanceState.getInt("position"); super.onRestoreInstanceState(savedInstanceState); Log.i(TAG, "onRestoreInstanceState()"); } @Override protected void onSaveInstanceState(Bundle outState) { outState.putString("filename", filename); outState.putInt("position", position); super.onSaveInstanceState(outState); Log.i(TAG, "onSaveInstanceState()"); } private void play() throws IOException { //获取文件路径 File audioFile = new File(Environment.getExternalStorageDirectory(),filename); mediaPlayer.reset(); mediaPlayer.setDataSource(audioFile.getAbsolutePath()); mediaPlayer.prepare(); mediaPlayer.start(); } //如果突然电话到来,停止播放音乐 @Override protected void onPause() { if(mediaPlayer.isPlaying()) { //保存当前播放点 position = mediaPlayer.getCurrentPosition(); mediaPlayer.stop(); } super.onPause(); } // @Override protected void onResume() { //如果电话结束,继续播放音乐 if(position>0 && filename!=null) { try { play(); mediaPlayer.seekTo(position); position = 0; } catch (IOException e) { Log.e(TAG, e.toString()); } } super.onResume(); } //对mediaPlayer进行摧毁 @Override protected void onDestroy() { mediaPlayer.release(); super.onDestroy(); Log.i(TAG, "onDestroy()"); } private final class ButtonClickListener implements View.OnClickListener { @Override public void onClick(View v) { //先得到文本框中的内容 filename = filenameText.getText().toString(); //得到button Button button = (Button) v; try { //通过传过来的Buttonid可以判断Button的类型 switch (v.getId()) { case R.id.play: play(); break; case R.id.pause: if(mediaPlayer.isPlaying()) { mediaPlayer.pause(); button.setText(R.string.continue1);//让这个按钮上的文字显示为继续 } else { mediaPlayer.start();//继续播放 button.setText(R.string.pause); } break; case R.id.reset: if(mediaPlayer.isPlaying()) { mediaPlayer.seekTo(0);//让它从0开始播放 } else { play();//如果它没有播放,就让它开始播放 } break; case R.id.stop: //如果它正在播放的话,就让他停止 if(mediaPlayer.isPlaying()) mediaPlayer.stop(); break; } } catch (Exception e) { Log.e(TAG, e.toString()); } } } }
其他资源:
1.http://blog.csdn.net/Android_Tutor/article/details/5743183
2.http://blog.csdn.net/Android_Tutor/article/details/5058217
发表评论
-
再次android 下的Caused by: java.lang.ClassNotFoundException:
2013-06-05 11:34 2365莫名其妙发生了:Caused by: java.lang.Cl ... -
android RatingBar 收集
2013-05-29 09:50 986RatingBar例子: http://www.eoeandr ... -
java 发送邮件
2013-05-28 16:17 872http://www.blogjava.net/wangfun ... -
ExecutorService 建立多线程的步骤
2013-05-26 22:18 882http://huangxiaojian9999.blog.1 ... -
android include报错解决一例
2013-05-24 13:48 1195一个layout 嵌入另外一个layout < ... -
.net 接口报错解决一例
2013-05-24 13:44 950NullReferenceException: 未将对象引用设 ... -
Overlay移动收集
2013-05-19 17:04 9081.http://changyy.pixnet.net/blo ... -
模拟器 INSTALL_FAILED_CONTAINER_ERROR
2013-05-10 00:21 1568用模拟器跑,总是报这个错。 找了一下,发现是androidma ... -
百度地图总结
2013-05-02 11:34 10701.mMapView.regMapViewListener(a ... -
EditText SetError 4.0下 不显示文字解决
2013-04-24 16:46 2044http://www.eoeandroid.com/forum ... -
短信验证
2013-04-23 15:27 939解决方案如下: http://www.eoeandroid.c ... -
根据两个经纬度计算两地距离
2013-04-23 14:56 1672com.baidu.mapapi.utils.Distance ... -
百度地图 android 线路
2013-04-22 23:39 2489最好的资料莫过于它自己提供的了 -2.管理自己的key htt ... -
android 屏幕方向总结
2013-04-17 15:23 985http://dev.wo.com.cn/docportal/ ... -
分享总结
2013-04-15 17:28 8461。http://www.umeng.com/componen ... -
sqlitemanager
2013-03-31 23:56 1069http://blog.csdn.net/jjhua/arti ... -
android 字体样式
2013-03-20 13:17 1120http://tank03.iteye.com/blog/13 ... -
Android 之 下拉框(Spinner)的使用
2013-03-19 21:39 1061http://imshare.iteye.com/blog/7 ... -
Android 为【apk】文件签名,增加修改系统时间等权限
2013-03-18 18:09 1134Android 为【apk】文件签名,增加修改系统时间等权限 ... -
Mac OS X 10.6 下 android 源码编译
2013-03-18 15:36 1019http://blog.csdn.net/edai9508/a ...
相关推荐
然而,在众多的在线视频播放平台中,选择一款稳定、高效的播放器显得尤为重要。影音先锋作为一款功能强大的多媒体播放软件,深受用户的喜爱。本文将详细介绍如何在互联网上寻找支持影音先锋播放器的视频资源,帮助...
2. **嵌入式音视频开发**:嵌入式系统通常资源有限,因此音视频播放需要优化的算法和高效的数据处理。这可能涉及到解码器(如FFmpeg)的选择与裁剪,以及如何在低功耗设备上实现流畅播放。 3. **Linux操作系统**:...
13. **性能优化**:对于资源密集型的音视频播放,优化代码以减少内存占用、提高解码速度、利用硬件加速等都是提升用户体验的关键。 14. **兼容性测试**:由于Windows系统存在多个版本,且用户可能使用不同的硬件...
Java音视频播放源码是一个基于Java编程语言实现的多媒体播放器项目,主要涵盖了音频和视频的播放功能。这个项目对于想要深入理解Java多媒体处理、音视频解码以及播放器开发的开发者来说,是一个很好的学习资源。下面...
在音视频播放领域,FFmpeg扮演着至关重要的角色。本文档将深入讲解FFmpeg的音视频播放原理及代码实现,帮助你掌握如何使用FFmpeg进行多媒体处理。 一、FFmpeg基础 FFmpeg由一系列库(如libavcodec、libavformat、...
3. **左右切换**:在描述中提到的左右切换功能,可能是指在一个音视频播放界面中实现多个资源的切换。这通常通过数据绑定和事件监听来实现,当用户触发滑动或者点击按钮时,更新当前播放的音视频源。 4. **细节处理...
这个压缩包中包含了丰富的音、视频资源,覆盖了十多种不同的格式,这为我们提供了深入探讨这些格式的机会。 首先,让我们从音频格式开始。常见的音频格式有MP3、WAV、AAC、FLAC、OGG、WMA等。MP3是最广泛使用的压缩...
【uni-app-video】是一款专为uni-app框架设计的视频播放组件,它支持在后台持续播放音频,这在开发音乐播放应用或有音频背景需求的项目中尤其重要。uni-app作为一个多端开发框架,允许开发者使用一套代码实现跨平台...
通过AVAsset,开发者可以获取到播放资源的详细信息,以进行更精细的控制。 4. URL加载系统: 在iOS中,通常通过URL来引用音频和视频文件。AVFoundation框架支持HTTP、HTTPS、FTP等网络协议,以及本地文件路径。...
多线程则是解决并发问题的关键技术,特别是在处理音视频播放时,需要同时进行解码、渲染等多个操作。主线程负责控制播放流程,如播放、暂停、停止等,而其他辅助线程则可以分别处理音频解码、视频解码和用户界面更新...
在车载系统中,QT5能够提供高效、稳定且用户友好的界面设计,支持音视频播放、地图导航以及天气信息显示等功能。 在车载系统中,QT5的音视频播放功能是关键组成部分。它允许开发人员集成音频和视频播放器,支持多种...
4. **硬件加速**:如果涉及到硬件解码,测试文件会用来验证GPU或其他硬件组件能否有效加速视频播放,降低CPU负载。 5. **跨平台兼容性**:测试文件集通常设计为跨平台,用于检验不同操作系统(如Windows、MacOS、...
在Android平台上,音频和视频的播放是移动应用开发中不可或缺的一部分。本文将深入探讨如何在Android中使用不同的组件和技术来实现音频和视频的播放功能,包括`MediaPlayer`媒体播放器、`SoundPool`音效池以及`...
本资源“ios应用源码之音频视频播放代码 20181210”提供了一套完整的源码,帮助开发者了解并实现音频视频的播放功能。下面将详细解析相关知识点。 1. AVFoundation框架:在iOS中,AVFoundation框架是处理音频和视频...
`ExoPlayer`可以更灵活地控制视频播放,如调整分辨率、实现自适应流媒体等。 接着,我们关注播放界面的构建。在Android中,`VideoView`可以与`MediaPlayer`配合,显示视频内容。然而,对于更复杂的布局需求,如全屏...
在Java编程环境中,实现视频播放功能是一项常见的任务,特别是在开发桌面应用程序或Web应用程序时。Java提供了多种库和API,使得开发者能够集成视频播放功能。在这个“Java实现视频播放功能”的项目中,我们可以深入...
FFmpeg/SDL2实现音视频播放库是一种技术组合,它结合了FFmpeg的音视频解码能力和SDL2的图形用户界面(GUI)显示功能。在音视频处理领域,这两个库都是不可或缺的工具。 FFmpeg是一个开源项目,包含了多种用于处理...
本文将深入探讨视频流播放中的http-flv流资源,以及如何利用相关工具进行处理和播放。 HTTP-FLV(Flash Video over HTTP)是一种常见的实时流媒体协议,常用于将视频数据以流的形式传输到客户端,比如网页上的Flash...
基于DirectShow和DirectSound基础之上自主开发的播放内核,具有资源占用低、运行效率高、扩展性强、支持格式广等优点。并集成了RealPlayer、QuickTime Player等多种播放核心。 完美的亮度、对比度、饱和度、色度...
ExoPlayer支持各种流媒体协议,如HLS、DASH等,可以处理复杂的视频播放需求。 在AndroidRecording-master项目中,我们可以看到具体的实现细节,包括如何初始化和配置MediaRecorder和Camera,如何处理录制过程中产生...