0

我从服务器获取 m3u8 或 mpd 文件并将其下载到我的应用程序存储中。我将如何离线播放。我是离线视频的新手。对其使用方法的任何建议。目前我用 exoplayer 播放 m3u8 或 mpd 文件,它是 Dash、HLS 或渐进式视频。如何通过牢记 allrights drm 来离线播放这些视频。

https://www.exampleurl.com/playlist.m3u8?hdntl=st=16608748~exp=166797876~acl=/*~hmac=fdhf577jbjb5ss76dsd6ds78d7d6ghg78

下面的代码我使用 exoplayer sdk 从文件路径 lastsegment 中查找流类型

@ContentType
  public static int inferContentType(String fileName) {
    fileName = toLowerInvariant(fileName);
    if (fileName.endsWith(".mpd")) {
      return C.TYPE_DASH;
    } else if (fileName.endsWith(".m3u8")) {
      return C.TYPE_HLS;
    }
    Matcher ismMatcher = ISM_URL_PATTERN.matcher(fileName);
    if (ismMatcher.matches()) {
      @Nullable String extensions = ismMatcher.group(2);
      if (extensions != null) {
        if (extensions.contains(ISM_DASH_FORMAT_EXTENSION)) {
          return C.TYPE_DASH;
        } else if (extensions.contains(ISM_HLS_FORMAT_EXTENSION)) {
          return C.TYPE_HLS;
        }
      }
      return C.TYPE_SS;
    }
    return C.TYPE_OTHER;
  }

以及 youtube 离线视频的工作原理是什么?

4

1 回答 1

0

mpd 或 m3u8 文件只是清单或索引文件。它们是基于文本的,包含有关视频和媒体链接的信息,即音频、视频、字幕等流。

如果要下载 HLS 或 DASH 流以进行离线播放,则需要下载清单及其引用的媒体流。

ExoPlayer 提供的功能可帮助您下载视频并处理这种复杂性,包括有关下载 HLS 和 DASH 视频的具体信息 - 请参阅 ExoPlayer 文档:

请注意有关曲目选择和比特率的部分 - 通常您会希望选择特定的比特率来下载而不是下载所有可用的比特率:

对于流式播放,可以使用曲目选择器来选择播放哪些曲目。同样,对于下载,DownloadHelper 可用于选择下载哪些曲目。

要支持加密流,您需要确保 DRM 服务器支持该内容的永久许可,并且授权允许离线播放 - 您通常需要与您的 DRM 提供商交谈以确认这一点。

于 2021-09-17T16:11:08.783 回答