【问题标题】:How to download m3u8 format media file in Android如何在 Android 中下载 m3u8 格式的媒体文件
【发布时间】:2017-06-08 20:19:56
【问题描述】:

我需要解析一个m3u8媒体文件,它是一个播放列表,并下载实际的媒体内容。
据我了解,涉及的过程如下:

  • 解析 m3u8 文件并获取“.TS”块
  • 检索所有块后,合并为一个文件
  • 将合并后的 TS 文件转换为 mp4 格式。

不幸的是,我找不到任何库/模块来执行上述步骤。谁能提供更好的方法或工作示例来处理和下载 m3u8 文件?

非常感谢任何帮助。

【问题讨论】:

  • 您的方法 100% 正确。问题是什么?
  • 如果我有所有同名的块,只有字节范围不同。例如:hls_a256K.ts #EXTINF:10.054245, #EXT-X-BYTERANGE:367164@363780 hls_a256K.ts #EXTINF:10.077455, #EXT-X-BYTERANGE:365096@730944 如果它们的名称相同,我如何下载这两个块?我知道它们包含音轨的不同字节块,但我无法从中形成正确的 http 请求

标签: android download android-download-manager m3u8 m3u


【解决方案1】:

这是我的解决方案:https://github.com/nichucs/HLS2MP4 使用 3 个简单的 java 类,您可以做到这一点。

上一个的缺点是,它的大小约为 20MB。

【讨论】:

  • 如何获得用户期望的比特率?默认情况下它会选择 max
  • 您可以修改代码,因为它是在 Java 中的。查看 PlaylistDownloader.java - 在 FetchPlaylist AsyncTask 中,您会在 doInBackground 方法中找到您要查找的内容。然后,您可以要求应用程序选择合适的带宽并下载 - 您将需要进行一些额外的解析,但应该不会太难 - 如果您遇到问题,请告诉我,我会尽力提供帮助。
【解决方案2】:

您的步骤正确。但这将包括您自己实施的巨大努力。最好去一些可用的图书馆。

我在这里有一个很棒的示例项目:https://github.com/nichucs/ffmpeg-android-java-master 原始仓库:http://writingminds.github.io/ffmpeg-android-java/

【讨论】:

  • 其实那个是我的repo,示例项目。我之前找到了图书馆。但是感谢您的回复:)
猜你喜欢
  • 1970-01-01
  • 2017-11-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-17
  • 2016-08-11
  • 2018-03-18
  • 2023-03-17
相关资源
最近更新 更多