添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

上一篇 中,我们了解了系统自带的 VideoView 来播放视频,但其支持的视频格式偏少,我们需要其他的视频播放器。
ExoPlayer 是Google的开源的应用级媒体播放器项目,支持多种视频格式和流媒体播放, GitHub地址

1. ExoPlayer应用

导入 ExoPlayer

implementation 'com.google.android.exoplayer:exoplayer:2.16.1'
// 如果只需要基础服务,可只选择这两个
implementation 'com.google.android.exoplayer:exoplayer-core:2.16.1'
implementation 'com.google.android.exoplayer:exoplayer-ui:2.16.1'

在布局文件里添加StyledPlayerView

<com.google.android.exoplayer2.ui.StyledPlayerView
    android:id="@+id/styled_player_view"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>

Activity里面播放视频

var playerView = findViewById(R.id.styled_player_view)
mExoPlayer = ExoPlayer.Builder(this).build()
playerView.player = mExoPlayer
mExoPlayer.setMediaItem(MediaItem.fromUri(Uri.parse(uri)))
mExoPlayer.prepare()
mExoPlayer.play()

2. ExoPlayer主要方法

ExoPlayer负责视频的播放功能,主要方法有

// 设置视频资源
void setMediaItems(List<MediaItem> mediaItems)
void setMediaItems(List<MediaItem> mediaItems, boolean resetPosition)
void setMediaItems(List<MediaItem> mediaItems, int startIndex, long startPositionMs)
void setMediaItem(MediaItem mediaItem)
void setMediaItem(MediaItem mediaItem, long startPositionMs)
void setMediaItem(MediaItem mediaItem, boolean resetPosition)
// 添加视频资源
void addMediaItem(MediaItem mediaItem)
void addMediaItem(int index, MediaItem mediaItem)
void addMediaItems(List<MediaItem> mediaItems)
void addMediaItems(int index, List<MediaItem> mediaItems)
// 删除视频资源
void removeMediaItem(int index)
void removeMediaItems(int fromIndex, int toIndex)
void clearMediaItems()
// 准备视频资源
void prepare()
// 播放视频
void play()
// 暂停播放
void pause()
// 停止播放
void stop()
// 释放资源
void release()
// 播放模式,一共有三种
// REPEAT_MODE_OFF,从头到尾播放,所有视频只播放一次
// REPEAT_MODE_ONE,重复播放当前视频
// REPEAT_MODE_ALL,重复播放所有视频
void setRepeatMode(@RepeatMode int repeatMode)

MediaItem提供了两个方法加载视频,也可以用MediaItem.Builder来创建

public static MediaItem fromUri(String uri)
public static MediaItem fromUri(Uri uri)

ExoPlayer其他方法

// 快退
void seekBack()
// 快进
void seekForward()
// 播放速率
void setPlaybackSpeed(float speed)
// 是否有下一视频
boolean hasNextMediaItem()
// 跳转到下一视频
void seekToNextMediaItem()
void seekToNext()
// 是否有上一视频
boolean hasPreviousMediaItem()
// 跳转到上一视频
void seekToPreviousMediaItem()
void seekToPrevious()

3. StyledPlayerView

StyledPlayerView定义了视频播放界面,默认的播放界面包含上一个、快退、播放/暂停、快进和下一个五个按钮。
主要方法

// 隐藏播放界面
void hideController()
// 显示播放界面
void showController()
// 设置播放界面触碰后是否自动隐藏,默认是true
void setControllerHideOnTouch(boolean controllerHideOnTouch)
// 设置播放界面是否自动显示,默认是true
void setControllerAutoShow(boolean controllerAutoShow)
// 设置播放界面自动隐藏时间,默认5000
void setControllerShowTimeoutMs(int controllerShowTimeoutMs)
// 是否显示快退按钮
void setShowRewindButton(boolean showRewindButton)
// 是否显示快进按钮
void setShowFastForwardButton(boolean showFastForwardButton)
// 是否显示上一个按钮
void setShowPreviousButton(boolean showPreviousButton)
// 是否显示下一个按钮
void setShowNextButton(boolean showNextButton)
				
谷歌的一个在线播放视频的框架,使用起来非常简单 1.官方地址:https://github.com/google/ExoPlayer有兴趣的,可以去官方地址,看一下框架的源码,本例子只是介绍简单使用 2.我的项目地址:https://github.com/wrs13634194612/ExoPlayerTest 3.运行效果图: 4.首先就是引用,在builder.gradle引入框架,或者直接使用jar包,本例子是使用的jar包 implementation 'com.google..
ExoPlayer:歌官方开源的 Android 媒体播放器。易于定制和扩展,支持丰富的数据格式比如:FMP4、FLV、SmoothStreaming、MP3 等 —————— 项目地址:https://ddl.ink/9nN github加速:https://ddl.ink/dl/
ExoPlayer是适用于Android的应用程序级媒体播放器。 它提供了Android MediaPlayer API的替代方法,可以在本地和Internet上播放音频和视频。 ExoPlayer支持Android MediaPlayer API当前不支持的功能,包括DASH和SmoothStreaming自适应播放。 与MediaPlayer API不同,ExoPlayer易于自定义和扩展,可以通过Play商店应用程序更新进行更新。 可以从JCenter获得ExoPlayer模块。 也可以克隆存储库并在本地依赖模块。 开始使用ExoPlayer的最简单方法是将其添加为gradle依赖项。 您需要确保在项目根目录的build.gradle文件中包含Google和JCenter存储库。 除了库模块之外,ExoPlayer还具有多个扩展模块,这些扩展模块依赖于外部库来提供附加功能。 JCenter提供了一些扩展。
Android SimpleExoPlayer 音乐播放指南 在现代应用开发中,音频播放是一个重要功能,而在 Android 平台上,ExoPlayer 是一个非常强大且灵活的媒体播放器。本文将介绍如何在 Android 应用中使用 SimpleExoPlayer 播放音乐,并逐步展示代码示例。 1. 引入依赖 为了在 A...
What's in ExoVideoView 1.Process AudioFocus automatically. 2.Process its orientation by sensor automatically 3.simple gesture action supported. 4.multiple video quality supported 5.you can add custom views to the default controller. 6.multiple resize-mode supported 7.custom controller supported. 8.change the widget's visibility if you like. Using ExoVideoView 1.Dependency The easiest way to get started using ExoVideoView is to add it as a
只是(视频)播放器 基于Android视频播放器 它使用ExoPlayer的extension-ffmpeg启用了(它甚至可以处理AC3,EAC3,DTS,DTS HD,TrueHD等特殊格式)。 使用蓝牙耳机/扬声器时,它可以正确地将音频与视频轨道同步。 (我找不到其他基于ExoPlayer的漂亮视频播放器,所以我创建了这个播放器。) 支持的格式 音频:Vorbis,Opus,FLAC,ALAC,PCM / WAVE(μ律,A律),MP1,MP2,MP3,AMR(NB,WB),AAC(LC,ELD,HE; xHE在Android 9+上) ,AC-3,E-AC-3,DTS,DTS-HD,TrueHD 视频:H.263,H.264 AVC(基准配置文件; Android 6+上的主要配置文件),H.265 HEVC,MPEG-4 SP,VP8,VP9,AV1 容器:MP4,MOV,
implementation 'com.google.android.exoplayer:exoplayer-core:2.X.X' implementation 'com.google.android.exoplayer:exoplayer-dash:2.X.X' implementation 'com.google.android.exoplayer:exoplayer-ui:2.X.X' 其中,2.X.X是ExoPlayer的版本号。 2. 创建ExoPlayer实例:在Activity或Fragment中创建ExoPlayer实例,例如: private SimpleExoPlayer player; // ... player = new SimpleExoPlayer.Builder(context).build(); 3. 准备视频:使用MediaSource对象准备要播放的视频。ExoPlayer支持多种媒体格式,包括HLS、DASH、SmoothStreaming和常规的MP4、MP3等。例如: String userAgent = Util.getUserAgent(context, "MyApp"); MediaSource mediaSource = new ProgressiveMediaSource.Factory( new DefaultDataSourceFactory(context, userAgent)) .createMediaSource(Uri.parse("http://example.com/video.mp4")); 在这个例子中,我们使用了ProgressiveMediaSource.Factory类创建一个MediaSource对象,该对象将使用DefaultDataSourceFactory类提供的数据源加载MP4视频。 4. 将MediaSource对象分配给ExoPlayer:将MediaSource对象传递给ExoPlayer,以便它可以准备和播放视频。例如: player.setMediaSource(mediaSource); player.prepare(); 5. 控制播放器:使用ExoPlayer的方法来控制播放器的行为,例如开始、暂停、重放、调整音量等。例如: player.setPlayWhenReady(true); // 开始播放 player.setVolume(0.5f); // 设置音量为50% player.seekTo(0); // 从头开始播放 player.stop(); // 停止播放 6. 在Activity或Fragment销毁时释放ExoPlayer:在Activity或Fragment销毁时,释放ExoPlayer以避免内存泄漏。例如: @Override protected void onDestroy() { super.onDestroy(); player.release(); 这就是使用ExoPlayer播放网络视频的基本步骤。您可以通过查看ExoPlayer的官方文档来了解更多详细信息。