android exoplayer的使用
来源:互联网 发布:碳足迹 水足迹 数据 编辑:程序博客网 时间:2024/05/16 17:59
一.背景
最近公司让研究一个exoplayer播放器,所以在网上找了些资料,记录一下。英语不错的同学可以直接看文档(点击打开链接) 另外附上官方的github地址(https://github.com/google/ExoPlayer)
二.步骤
- 添加exoplayer的依赖
- 创建simpleExoplayer实例
- 将播放器和SimpleExoplayerView结合
- 用MediaSource准备播放
- 结束播放释放资源
三.具体代码
public class MainActivity extends AppCompatActivity { private Context mContext; private SimpleExoPlayerView simpleExoPlayerView; private SimpleExoPlayer simpleExoPlayer; private DataSource.Factory dataSourceFactory; private EventLogger eventLogger; private Handler mainHandler = new Handler(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mContext = this; simpleExoPlayerView = (SimpleExoPlayerView) findViewById(R.id.player_view); init(); } private void init() { // 1 create a default TrackSelector BandwidthMeter bandwidthMeter = new DefaultBandwidthMeter(); TrackSelection.Factory videoTrackSelectionFactory = new AdaptiveTrackSelection.Factory(bandwidthMeter); DefaultTrackSelector trackSelector = new DefaultTrackSelector(videoTrackSelectionFactory); // 打印日志 eventLogger = new EventLogger(trackSelector); // 2. Create the player simpleExoPlayer = ExoPlayerFactory.newSimpleInstance(mContext, trackSelector); // bind the player to the view simpleExoPlayerView.setPlayer(simpleExoPlayer); // 默认带宽测量 DefaultBandwidthMeter defaultBandwidthMeter = new DefaultBandwidthMeter(); dataSourceFactory = new DefaultDataSourceFactory(mContext, Util.getUserAgent(mContext, "ExoPlayerDemo"), defaultBandwidthMeter); Uri uri = Uri.parse("http://devimages.apple.com/samplecode/adDemo/ad.m3u8"); MediaSource mediaSource = new HlsMediaSource(uri, dataSourceFactory, mainHandler, eventLogger); // 准备播放 simpleExoPlayer.prepare(mediaSource); // 自动播放 simpleExoPlayer.setPlayWhenReady(true); } @Override protected void onDestroy() { super.onDestroy(); if (simpleExoPlayer != null) { simpleExoPlayer.release(); } }}布局文件
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.wxj.exoplayer.MainActivity" > <com.google.android.exoplayer2.ui.SimpleExoPlayerView android:id="@+id/player_view" android:layout_width="match_parent" android:layout_height="match_parent" /></RelativeLayout>依赖文件,我这里依赖的全部的,其实你可以选择一两个就行
compile 'com.google.android.exoplayer:exoplayer-core:r2.5.1' compile 'com.google.android.exoplayer:exoplayer-dash:r2.5.1' compile 'com.google.android.exoplayer:exoplayer-ui:r2.5.1' compile 'com.google.android.exoplayer:exoplayer-hls:r2.5.1' compile 'com.google.android.exoplayer:exoplayer-smoothstreaming:r2.5.1'
最后不要忘记加网络的权限
阅读全文
1 0
- android exoplayer的使用
- 使用Android.mk文件导入Exoplayer包
- ExoPlayer的使用之自定义UI界面
- Android 原生ExoPlayer 解析
- android之ExoPlayer探索
- Android 原生ExoPlayer 解析
- 怎么使用 exoplayer
- ExoPlayer 的小解析
- 基于 exoplayer 的 videoview
- ExoPlayer
- ExoPlayer
- android 视频播放 Google exoplayer
- ExoPlayer编译的重要设置
- Exoplayer的简单实现-surfaceView
- ExoPlayer播放视频的简单使用及播放视频宽高设置的源码分析
- android ExoPlayer(可扩展的播放器)-GitHub开源项目(解决方案)
- 深入理解Android音视频同步机制(二)ExoPlayer的avsync逻辑
- Android API Guides---ExoPlayer Supported Media Formats
- 博弈论模板
- No result defined for action action.UploadAction and result input(开发错误记录struts2)
- hdu6170Two strings(第九场递推dp)
- 管理Xcode插件的插件
- 函数名与函数指针
- android exoplayer的使用
- 多线程基础四(三)、暂停线程
- spice协议详解(二):spice支持功能和优势
- LeetCode——575. Distribute Candies(贪心)
- CoreData增删改查简单操作及多线程添加数据
- HDU4768 Flyer 二分|异或的性质|暴力
- POJ 2253(dijkstral变形超级简单)
- Map/Reduce原理
- 优化方法(C++)——0.618法、平均值法、单纯形法