android音视频指南-MediaPlayer概述

本文详细介绍了Android多媒体框架中的MediaPlayer类,包括播放本地和远程媒体、异步准备、状态管理、释放资源、在服务中使用以及处理DRM等内容。提供示例代码和最佳实践,帮助开发者构建高效媒体播放应用。
摘要由CSDN通过智能技术生成

翻译自MediaPlayer overview

Android多媒体框架支持播放各种常见媒体类型,因此您可以轻松地将音频、视频和图像集成到应用程序中。您可以使用MediaPlayer api从存储在应用程序资源(原始资源)中的媒体文件、文件系统中的独立文件或通过网络连接到达的数据流中播放音频或视频。

本文向您展示了如何编写与用户和系统交互的媒体播放应用程序,以获得良好的性能和愉快的用户体验。

注意:您只能将音频数据回放到标准输出设备。目前,这是移动设备扬声器或蓝牙耳机。您不能在通话期间播放通话音频中的声音文件。

1、最基本的

在Android框架中使用以下类播放声音和视频:

MediaPlayer

这个类是播放声音和视频的主要API。

AudioManager

该类管理设备上的音频源和音频输出。

2、清单声明

在使用MediaPlayer对应用程序进行开发之前,请确保清单中有适当的声明,允许使用相关特性。

  • Internet权限——如果您正在使用MediaPlayer来播放流基于网络的内容,那么您的应用程序必须请求网络访问。

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WAKE_LOCK" />

3、使用MediaPlayer

媒体框架最重要的组件之一是MediaPlayer类。这个类的对象可以使用最少的设置获取、解码和播放音频和视频。它支持几种不同的媒体来源,如:

  • 本地资源

  • 内部uri,例如您可能从contentProvider获得的uri

  • 外部url(流) 有关Android支持的媒体格式列表,请参阅支持的媒体格式页面。

下面是如何播放本地音频资源(保存在您的应用程序的res/raw/目录中):

MediaPlayer mediaPlayer = MediaPlayer.create(context, R.raw.sound_file_1);
mediaPlayer.start(); // no need to call prepare(); create() does that for you

在本例中,“raw”资源是系统不尝试以任何特定方式解析的文件。然而,这个资源的内容不应该是原始音频。它应该是一个以支持的格式之一适当编码和格式化的媒体文件。

下面是您如何从系统中本地可用的URI(例如,您通过内容解析器获得的URI)进行播放:

Uri myUri = ....; // initialize Uri here
MediaPlayer mediaPlayer = new MediaPlayer();
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mediaPlayer.setDataSource(getApplicationContext(), myUri);
mediaPlayer.prepare();
mediaPlayer.start();

通过HTTP流媒体从远程URL播放如下:

String url = "http://........"; // your URL here
MediaPlayer mediaPlayer = new MediaPlayer();
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mediaPlayer.setDataSource(url);
mediaPlayer.prepare(); // might take long! (for buffering, etc)
mediaPlayer.start();

注意:如果要通过一个URL来传输流媒体在线文件,该文件必须能够逐步下载。

注意:在使用setDataSource()时,您必须捕获或传递IllegalArgumentException和IOException,因为您引用的文件可能不存在。

4、异步的准备

使用MediaPlayer原则上很简单。但是,需要记住的是,要将它正确地集成到典型的Android应用程序中,还

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值