当前位置: 首页 > wzjs >正文

高明网站建设产品设计留学哪个国家好

高明网站建设,产品设计留学哪个国家好,哪个网站代做装修效果图,住房城乡住房和城乡建设部网站首页目录 1. 引言 2. 添加依赖 3. 初始化ExoPlayer并播放视频 3.1 XML 布局 3.2 初始化ExoPlayer 4. 控制播放 5. 监听播放状态 6. 播放网络流(HLS / DASH / RTSP) 7. ExoPlayer 进阶 7.1 手动切换功能 7.2 DRM 保护 8. 释放播放器资源 9. 从旧…

目录

1. 引言

2. 添加依赖

3. 初始化ExoPlayer并播放视频

3.1 XML 布局

3.2 初始化ExoPlayer

4. 控制播放

5. 监听播放状态

6. 播放网络流(HLS / DASH / RTSP)

7. ExoPlayer 进阶

7.1 手动切换功能

7.2 DRM 保护

8. 释放播放器资源

9. 从旧版迁移指南

10. 总结

相关推荐


1. 引言

        Android Media3 是 Google 推出的新一代媒体处理框架,ExoPlayer 作为其核心组件,提供了比传统 MediaPlayer 更强大的功能和更高的灵活性。Media3 ExoPlayer 的主要优势包括:

  • 支持 HLS、DASH、SmoothStreaming 等现代流媒体协议

  • 高度可定制的播放器架构

  • 自适应码率切换(ABR)优化

  • 完善的 DRM 支持

  • 改进的音频焦点处理

2. 添加依赖

        首先,在build.gradle(模块级)中添加 Media3 ExoPlayer 依赖:

dependencies {//这里版本过高需要升级 SDK 至34 ,JDK 要 17def media3_version = "1.2.0"// 核心库implementation "androidx.media3:media3-exoplayer:$media3_version"// UI 组件implementation "androidx.media3:media3-ui:$media3_version"// 可选 DASH 支持implementation "androidx.media3:media3-exoplayer-dash:$media3_version"// 可选 HLS 支持implementation "androidx.media3:media3-exoplayer-hls:$media3_version"// 可选,支持 RTSPimplementation 'androidx.media3:media3-exoplayer-rtsp:$media3_versio' 
}

这里版本过高需要升级 SDK 至34 ,JDK 要 17,否则会报如下错误:

Dependency 'androidx.media3:media3-ui:1.2.0' requires libraries and applications that
      depend on it to compile against version 34 or later of the Android APIs.

如果不想使用高版本可以使用1.0.0。

3. 初始化ExoPlayer并播放视频

使用ExoPlayer播放视频需要以下几个关键步骤:

  1. 初始化播放器
  2. 加载新闻
  3. 绑定到PlayerView
  4. 控制播放

3.1 XML 布局

        在activity_main.xml 参数PlayerView

    <androidx.media3.ui.PlayerViewandroid:id="@+id/playerView"app:resize_mode="zoom"android:layout_width="match_parent"android:layout_height="match_parent"/>

3.2 初始化ExoPlayer

        在MainActivity.kt(或MainActivity.java)中创建ExoPlayer并加载视频:

class ExoPlayerActivity : BaseActivity<ActivityExoplayerBinding>() {private var player: ExoPlayer? = null;override fun getLayoutID(): Int {return R.layout.activity_exoplayer}override fun init() {initExoPlayer()}private fun initExoPlayer() {player = ExoPlayer.Builder(this).build().also { exoPlayer ->mBind.playerView.player = exoPlayer//加载 raw 资源,网络资源替换Uri即可。val mediaItem: MediaItem = MediaItem.fromUri("android.resource://" + packageName + "/" + R.raw.sv_ad_video)exoPlayer.setMediaItem(mediaItem)exoPlayer.prepare()exoPlayer.playWhenReady = true}}override fun onDestroy() {super.onDestroy()// 确保在Activity销毁时释放播放器资源player?.release()player = null}
}

4. 控制播放

    ExoPlayer 提供了一系列方法来控制播放状态:

player?.play()         // 播放
player?.pause()        // 暂停
player?.seekTo(20000)  // 跳转到 20 秒
player?.stop()         // 停止
player?.release()      // 释放资源

5. 监听播放状态

        您可以监听ExoPlayer播放状态,如播放错误、缓冲状态等:

        player?.addListener(object : Player.Listener {override fun onPlaybackStateChanged(state: Int) {when (state) {ExoPlayer.STATE_READY -> {println("播放器已准备好")}ExoPlayer.STATE_BUFFERING -> {println("正在缓冲")}ExoPlayer.STATE_ENDED -> {println("播放完成")}}}override fun onPlayerError(error: PlaybackException) {println("播放错误: ${error.message}")}})

6. 播放网络流(HLS / DASH / RTSP)

    ExoPlayer 支持 HTTP Live Streaming (HLS) 和 DASH 等流媒体格式。只需更改MediaItem即可:

// HLS 直播流
val mediaItem = MediaItem.fromUri("https://www.example.com/sample.m3u8") 
player?.setMediaItem(mediaItem)
player?.prepare()
player?.play()

7. ExoPlayer 进阶

7.1 手动切换功能

        如果视频流支持多种权限,可以手动选择播放质量:

val trackSelector = DefaultTrackSelector(this).apply {parameters = buildUponParameters().setMaxVideoSizeSd().build()
}
player = ExoPlayer.Builder(this).setTrackSelector(trackSelector).build()

7.2 DRM 保护

ExoPlayer也支持DRM(如Widevine),您可以这样加载受DRM保护的内容:

val drmSessionManager = DefaultDrmSessionManager.Builder().setKeyRequestParameters(mapOf("Content-Type" to "application/json")).build()
val mediaItem = MediaItem.Builder().setUri(videoUri).setDrmUuid(C.WIDEVINE_UUID).setDrmSessionManager(drmSessionManager).build()
player?.setMediaItem(mediaItem)

8. 释放播放器资源

        当ActivityFragment关闭时,需要释放ExoPlayer,避免内存泄漏:

    override fun onDestroy() {super.onDestroy()// 确保在Activity/Fragment销毁时释放播放器资源player?.release()player = null}

   内存管理

  •  在 onPause() 时暂停播放

  •  在 onStop() 时释放播放器资源

  •  使用 Player.STATE_IDLE 检测非常规状态

9. 从旧版迁移指南

主要变化点:

旧版 (com.google.android.exoplayer)新版 (androidx.media3)
SimpleExoPlayerExoPlayer
DefaultTrackSelector保持不变
PlayerViewPlayerView
MediaSourceMediaItem

10. 总结

功能代码示例
初始化播放器ExoPlayer.Builder(this).build()
播放本地视频MediaItem.fromUri("file:///path/to/video.mp4")
播放网络文学MediaItem.fromUri("https://www.example.com/sample.m3u8")
监听播放状态player.addListener(Player.Listener { ... })
自定义 UIPlayerControlView
手动切换DefaultTrackSelector()
DRM 支持setDrmUuid(C.WIDEVINE_UUID)
下载资源player.release()

    Media3 ExoPlayer 通过模块化设计和持续更新,为 Android 开发者提供了更现代、更强大的媒体播放解决方案。本文示例已实现基本播放功能,开发者可根据需求扩展实现:

  • 字幕渲染

  • 多音轨切换

  • 播放速度控制

  • 自定义 UI 皮肤

  • 离线缓存管理

相关推荐

OkHttp深度解析:请求流程、分发器机制、拦截器工作及TCP连接复用-CSDN博客文章浏览阅读1.6k次,点赞78次,收藏64次。OkHttp是一个高效的HTTP客户端库,其请求流程包括创建OkHttpClient实例、Request对象,通过Call对象执行请求,并可选择同步或异步方式处理响应。OkHttp分发器负责调配请求任务,维护请求队列和线程池,确保请求有序执行。拦截器机制基于责任链模式,允许用户自定义请求和响应的处理逻辑。此外,OkHttp通过连接池机制复用TCP连接,提高性能并减少资源消耗。这些特性使得OkHttp成为处理HTTP请求的强大工具,广泛应用于各种Java和Android项目中。 https://shuaici.blog.csdn.net/article/details/144860202Android内存优化指南:从数据结构到5R法则的全面策略_android 内存管理指南-CSDN博客文章浏览阅读1.5k次,点赞68次,收藏62次。Android内存优化涉及多个方面,从选择合适的数据结构如ArrayMap和SparseArray以减少内存占用,到避免使用内存开销大的枚举类型。谨慎使用多进程和large heap选项,同时充分利用NDK进行内存管理。图片优化是关键,通过采样、缓存和格式转换等方式减少内存占用。此外,遵循5R法则——释放、回收、减少、重用和检查,确保资源得到有效管理。这些策略共同构成了一套全面的Android内存优化方案,有助于提升应用性能和用户体验。_android 内存管理指南 https://shuaici.blog.csdn.net/article/details/145811726

http://www.dtcms.com/wzjs/840183.html

相关文章:

  • 广州市手机网站建设平台网站建设购买模板
  • 千岛湖建设集团有限公司网站网站开发过程的需求分析
  • 自己做app的网站安卓优化大师手机版下载
  • 做租房网站可信网站认证费用
  • 儿童网站模板网站托管服务商查询
  • wpf做网站如何做个小程序自己卖货
  • wordpress sns上海营销seo
  • 西安做网站公司哪家好怎么在凡科上做网站
  • 最好企业网站千岛湖建设集团办公网站
  • 商业设计网站有哪些如何做线下推广
  • 婚宴网站源码龙岩正规招聘网
  • 北京监理建设协会网站网站设计的就业和发展前景
  • 有没有专门做ppt的网站湖南省水运建设投资集团网站
  • 广东网站设计费用一个网站建设的组成
  • 用网站做邮箱wordpress页面编辑乱码
  • 昭通网站建设网站规划管理系统
  • 能打开各种网站的浏览器下载合集如何把网站放到空间别人可以访问
  • 网站建设大概价格国外的响应式网站模板
  • 遵义做网站的网络公司wordpress下载的插件怎么用
  • 游戏开发与网站开发哪个难娄底网站建设企业
  • 闸北微信网站建设网站设计模版免费下载
  • 河南网站建设多少钱网站建设公司挣钱吗
  • 公司网站开发实施方案外贸网站改版公司哪家好
  • 织梦手机wap网站标签调用垂直网站
  • 凡科和有赞哪个好用网络优化工程师面试题
  • 网站建设选哪家河北省建设工程招标投标协会网站
  • 枣庄网站建设制作做电商怎么找货源
  • 湖南土建网性价比高seo排名
  • 网站文案优化导购网站怎么推广
  • 网站建设小程序开发报价英语可以做推广的亲子类网站