【问题标题】:ExoPlayer: What's the best way to handle lazy loading of a playlist?ExoPlayer:处理延迟加载播放列表的最佳方法是什么?
【发布时间】:2020-06-28 11:08:48
【问题描述】:

我有一个包含每种媒体基本信息的播放列表,我对媒体的流式数据一无所知(意味着它可能是 DASH、HLS 等)我想为每个媒体懒惰地创建 MediaSource播放列表。这意味着在下一个/上一个我的应用程序将为媒体创建一个 MediaSource。最好的方法是什么?

【问题讨论】:

  • 嗨 Cubxity!欢迎来到堆栈溢出。你能否提供更多关于你到底想要做什么的细节,也许是一个代码示例?
  • @JamesRiordan 我正在尝试在 ExoPlayer 中播放播放列表。但我不希望一次初始化所有 MediaSource,因为我需要为它们中的每一个调用 API。
  • 你能提供一个代码示例吗?
  • @Cubxity,你能解决这个问题吗,我也遇到了同样的问题
  • @B.shruti 我没有找到解决办法,所以我需要在导航到下一个视频时手动准备新媒体源

标签: android kotlin exoplayer


【解决方案1】:

来自https://exoplayer.dev/playlists.html

可以通过添加、删除和动态修改播放列表 在 ConcatenatingMediaSource 中移动 MediaSource。这可以是 通过调用相应的播放前和播放期间完成 连接MediaSource 方法。播放器自动处理 以正确的方式在播放过程中进行修改。例如,如果 当前播放的MediaSource被移动,播放不中断 它的新继任者将在完成后播放。如果当前 播放 MediaSource 被移除,播放器会自动移动到 播放剩余的第一个继任者,或过渡到结束 如果不存在这样的继任者,请说明。

您可以创建您的来源,然后使用addMediaSource 调用将它们添加到播放列表(请参阅参考here

如果没有某种或更详细的代码示例,很难准确说出您想要做什么,但我希望解决方案涉及您懒惰地创建源,然后在它们出现时将它们添加到播放列表中'被创建。

【讨论】:

  • 是否有可能在用户跳转到媒体源之前不初始化媒体源?
  • 是的,但是加载需要一些时间,因此您会在一段时间内看到结束状态,或者下一个媒体项目。您最好在当前播放的项目之后预加载几个项目。
  • YouTube 和 Spotify 等应用是做什么的?
  • 我不完全确定,这是你可以尝试自己研究的东西。我希望他们使用专有的东西而不是 exoplayer。我猜这是有状态的,所以播放器不必为每个项目启动 HLS 流或类似的流。这使得快速更改项目变得更加容易。
  • 有没有办法在 exoplayer 中获取播放列表的时长?
猜你喜欢
  • 2017-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-28
  • 2015-04-24
  • 1970-01-01
  • 2010-09-06
  • 2010-09-07
相关资源
最近更新 更多