ExoPlayer用户手册
贴上原网址:https://google.github.io/ExoPlayer/guide.html
非完全翻译,有需要可以原网址自取,我发现网上也蛮多这个指导的翻译,可以去看看~
开始啦!:
ExoPlayer是一个开源的应用级媒体播放器,构建在Android的低级媒体API之上。 开源项目包含ExoPlayer库和demo app:
- ExoPlayer library – 包含项目的一些核心类库
- Demo app – ExoPlayer的演示
本指南介绍了ExoPlayer库及其用途,介绍了使用ExoPlayer的优缺点(不翻,需要自查),以及如何使用ExoPlayer播放DASH、SmoothStreaming和HLS自适应流,还有ExoPlayer事件、消息、定制、DRM支持等。
1、library概述
ExoPlayer库的核心是ExoPlayer 界面。ExoPlayer实现不是直接实现加载和呈现媒体,而是将这项工作委托给创建播放器或播放准备时注入的组件。 所有ExoPlayer实现共同的组件有:
MediaSource:确定要播放的媒体,播放器从中读取要加载的媒体,MediaSource在播放开始时通过ExoPlayer.prepare注入。
Renderer:各种渲染器,播放器被创建的时候注入
TrackSelector:用于选择由MediaSource提供的轨道,以供每个可用渲染器使用。 当播放器创建时,TrackSelector将被注入。
- LoadControl:用于控制MediaSource缓冲更多媒体的时间,以及缓冲多少媒体。 在创建播放器时注入LoadControl。
Getting started
2、创建一个SimpleExoPlayer实例。
3、将播放器连接到视图(用于视频输出和用户输入)。
4、准备使用MediaSource播放的播放器。
5、完成后释放播放器。
Add ExoPlayer as a dependency
1、确保项目根目录中的build.gradle文件中包含jcenter库
repositories {jcenter()
}
2、添加一个gradle编译依赖关系到应用程序模块的build.gradle文件。
compile 'com.google.android.exoplayer:exoplayer:r2.X.X'
3、以下内容将添加依赖于Core,DASH和UI库模块,这可能是播放DASH内容的应用程序所必需的:
compile 'com.google.android.exoplayer:exoplayer-core:r2.X.X'
compile 'com.google.android.exoplayer:exoplayer-dash:r2.X.X'
compile 'com.google.android.exoplayer:exoplayer-ui:r2.X.X'
Creating the player
// 1. Create a default TrackSelector
Handler mainHandler = new Handler();
BandwidthMeter bandwidthMeter = new DefaultBandwidthMeter();
TrackSelection.Factory videoTrackSelectionFactory = new AdaptiveTrackSelection.Factory(bandwidthMeter);
TrackSelector trackSelector =new DefaultTrackSelector(videoTrackSelectionFactory);// 2. Create the player
SimpleExoPlayer player = ExoPlayerFactory.newSimpleInstance(context, trackSelector);
Attaching the player to a view
// Bind the player to the view.
simpleExoPlayerView.setPlayer(player);
如果需要对播放器控件和渲染视频的Surface进行细粒度控制,则可以分别使用SimpleExoPlayer的setVideoSurfaceView,setVideoTextureView,setVideoSurfaceHolder和setVideoSurface方法直接设置播放器的目标SurfaceView,TextureView,SurfaceHolder或Surface。 可以使用PlaybackControlView作为独立组件,或实现与播放器直接交互的自己的播放控件。 setTextOutput和setId3Output可用于在播放过程中接收字幕和ID3元数据输出。
Preparing the player
在ExoPlayer中,每一块媒体均由MediaSource表示。 要播放一块媒体,必须先创建一个相应的MediaSource,然后将此对象传递给ExoPlayer.prepare。 ExoPlayer库为DASH(DashMediaSource),SmoothStreaming(SsMediaSource),HLS(HlsMediaSource)和常规媒体文件(ExtractorMediaSource)提供MediaSource实现。 以下代码显示如何使用适合播放MP4文件的MediaSource准备播放器。
// Measures bandwidth during playback. Can be null if not required.
DefaultBandwidthMeter bandwidthMeter = new DefaultBandwidthMeter();
// Produces DataSource instances through which media data is loaded.
DataSource.Factory dataSourceFactory = new DefaultDataSourceFactory(context,Util.getUserAgent(context, "yourApplicationName"), bandwidthMeter);
// Produces Extractor instances for parsing the media data.
ExtractorsFactory extractorsFactory = new DefaultExtractorsFactory();
// This is the MediaSource representing the media to be played.
MediaSource videoSource = new ExtractorMediaSource(mp4VideoUri,dataSourceFactory, extractorsFactory, null, null);
// Prepare the player with the source.
player.prepare(videoSource);
播放器准备好后,可以通过播放器上的方法来控制播放。 例如setPlayWhenReady可用于启动和暂停播放,并且可以使用各种seekTo方法在媒体内查找。 如果播放器被绑定到SimpleExoPlayerView或PlaybackControlView,则用户与这些组件的交互将导致播放器上的相应方法被调用。
Releasing the player
重要的是在不再需要时释放播放器,以释放有限的资源,如视频解码器供其他应用使用。 这可以通过调用ExoPlayer.release来完成。
MediaSource
在ExoPlayer中,每一块媒体均由MediaSource表示。 ExoPlayer库为DASH(DashMediaSource),SmoothStreaming(SsMediaSource),HLS(HlsMediaSource)和常规媒体文件(ExtractorMediaSource)提供MediaSource实现。 在ExoPlayer演示应用程序中,可以在PlayerActivity中找到实例化所有四个示例。
Side-loading a subtitle file
// Build the video MediaSource.
MediaSource videoSource = new ExtractorMediaSource(videoUri, ...);
// Build the subtitle MediaSource.
Format subtitleFormat = Format.createTextSampleFormat(id, // An identifier for the track. May be null.MimeTypes.APPLICATION_SUBRIP, // The mime type. Must be set correctly.selectionFlags, // Selection flags for the track.language); // The subtitle language. May be null.
MediaSource subtitleSource = new SingleSampleMediaSource(subtitleUri, dataSourceFactory, subtitleFormat, C.TIME_UNSET);
// Plays the video with the sideloaded subtitle.
MergingMediaSource mergedSource =new MergingMediaSource(videoSource, subtitleSource);
Seamlessly looping a video a fixed number of times
使用LoopingMediaSource可以使视频无缝地固定多次。 以下示例播放视频两次。
MediaSource source = new ExtractorMediaSource(videoUri, ...);
// Plays the video twice.
LoopingMediaSource loopingSource = new LoopingMediaSource(source, 2);
Seamlessly playing a sequence of videos
ConcatenatingMediaSource可以连续播放两个或多个单独的MediaSource。 以下示例依次播放两个视频。 源之间的转换是无缝的。 没有要求连接的源具有相同的格式(例如,将包含480p H264的视频文件与包含720p VP9的视频文件连接在一起是很好的)。 源甚至可能是不同的类型(例如,将视频与仅音频流连接是很好的)。
MediaSource firstSource = new ExtractorMediaSource(firstVideoUri, ...);
MediaSource secondSource = new ExtractorMediaSource(secondVideoUri, ...);
// Plays the first video, then the second video.
ConcatenatingMediaSource concatenatedSource =new ConcatenatingMediaSource(firstSource, secondSource);
Advanced composition
(略)应避免在组合中多次使用相同的MediaSource实例,除非根据文档明确允许。 然而,一般来说,组合物形成的对象的图形应该是一棵树。 但是允许在组合中使用多个等效的MediaSource实例。
Player events
Sending messages to components
一些ExoPlayer组件允许在播放过程中更改配置。 按照惯例,我们可以通过使用sendMessages或blockingSendMessages方法将消息通过ExoPlayer传递到组件来进行这些更改。 这种方法确保了线程安全性,并且配置更改按照播放器上执行的任何其他操作顺序执行。
Customization
以下是构建自定义组件的一些用例:
Customization guidelines
ExoPlayer用户手册相关推荐
- NSight Compute 用户手册(下)
NSight Compute 用户手册(下) 主菜单 文件 新建项目使用"新建项目"对话框创建新的分析项目 Main Menu and Toolbar Information on ...
- NSight Compute 用户手册(中)
NSight Compute 用户手册(中) NVIDIA Nsight Compute支持密码和私钥身份验证方法.在此对话框中,选择身份验证方法并输入以下信息: 密码 IP/主机名:目标设备的IP地 ...
- NSight Compute 用户手册(上)
NSight Compute 用户手册(上) 非交互式配置文件活动 从NVIDIA Nsight Compute启动目标应用程序 启动NVIDIA Nsight Compute时,将出现欢迎页面.单击 ...
- android ijkplayer使用_Ijkplayer、ExoPlayer、VLC播放器综合比较
VLC Media Player VLC 是VideoLAN 计划所研发的工程,最早预1996年开始,是一个完全的跨平台播放器,适合Windows.Mac OS.Linux.Android.iOS等系 ...
- sinee303a变频器说明书_SINEE--EM303A变频器用户手册.pdf
SINEE--EM303A变频器用户手册 EM303A系列开环矢量变频器用户手册 前 言 感谢您选用深圳市正弦电气股份有限公司研制的 EM303A 系列开环矢量控制变频器. 资料编号 发布时间:201 ...
- abaqus分析用户手册单元卷_作用卷、分析卷、材料卷三件套,让你也能熟练应用Abaqus...
<Abaqus分析用户手册--指定条件.约束与相互作用卷>是"Abaqus用户手册大系"中的一册,包括指定条件.约束与相互作用三个部分.指定条件部分对各种物理过程中涉及 ...
- linux c 内存泄漏调试工具 《valgrind用户手册》 2. 使用和理解Valgrind核心
valgrind 用户手册原版地址:https://valgrind.org/docs/manual/manual.html 此原文地址:https://valgrind.org/docs/manua ...
- 计算机考古:发现世界上最古老的用户手册
点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 来源 | https://www.oschina.net ...
- VLP16线用户手册.md
VLP16线用户手册 文档 传感器数据 分组类型和定义 传感器产生两种类型的数据包:数据包和位置数据包.位置包有时也被称为遥测包或GPS包. 数据包包括传感器测量到的三维数据以及返回光脉冲的表面的校 ...
最新文章
- 09最短小说:意见统一
- NIPS 2018 迁移学习相关论文
- javascript简单的四则运算
- python【数据结构与算法】棋盘覆盖问题
- 锐捷设备常用命令大全
- C#反射——简单反射操作类的封装
- windows符号服务器地址
- java中插入排序实例_java中对插入排序的理解以及实例
- 画了个Android
- 2014.9.13模拟赛【数位和乘积】
- 史上最全AI开源项目集结,近万篇附代码的论文分门别类整理好
- numpy.outer
- lib的编写与使用(C/C++)
- vue前端页面数据加载添加loading效果
- 让Android 设备通过USB 转RJ45有线网卡上网
- python lncrna_超简便的国产lncRNA预测工具LGC
- 苹果手机删除的视频怎么找回
- html如何制作艺术字体,影视动画制作软件怎么制作多彩立体字 艺术字体制作软件 字体渐变效果...
- ModelSim illegal reference to net “***“ 报错问题解决
- RRDTool中文手册
热门文章
- PID控制器开发笔记之十:步进式PID控制器的实现
- idea端口占用解决记录
- python 文本相似度_python实现余弦相似度文本比较
- git 查看自己秘钥_gitlab配置ssh密钥及简单使用
- python读取文件中的内容_python 读取文件夹中的文件内容
- centos8安装文件服务器,centos8 服务器环境部署
- 毫秒值转换为日期工具_为机器学习准备数据
- python xml字符串_python -解析字符串,并返回xml格式字符串 急该如何解决
- python实现二分查找算法_两种方法实现Python二分查找算法
- flash软件视频不能测试,360安全卫士解决视频播放错误怎么办?无法调出flash解决办法...