com.codename1.components.MediaPlayer 是不是支持 HLS 自适应比特率流

Posted

技术标签:

【中文标题】com.codename1.components.MediaPlayer 是不是支持 HLS 自适应比特率流【英文标题】:Does the com.codename1.components.MediaPlayer support HLS Adaptive Bitrate Streamingcom.codename1.components.MediaPlayer 是否支持 HLS 自适应比特率流 【发布时间】:2017-10-28 17:21:00 【问题描述】:

最适合移动设备的自适应比特率流媒体是 HLS(HTTP Live Streaming)。

HLS 使用主 m3u8 清单文件将不同的屏幕分辨率映射到媒体文件块,并根据客户端屏幕分辨率和网络波动提供适当的分辨率。

我检查了您的 KitchenSink 应用程序的代码,发现您的 MediaPlayer 正在提供 mp4 文件。 你们有没有人尝试用 m3u8 清单替换 mp4 链接? 它应该工作吗? 您是否考虑将现有解决方案包含在您的 MediaPlayer => https://github.com/videojs/videojs-contrib-hls 中。

【问题讨论】:

【参考方案1】:

媒体依赖于本机操作系统播放,因此如果操作系统支持本机编解码器,它就可以正常工作。

主要动机是避免媒体的问题性质,这是专利诉讼和复杂性的领域。

如果本机平台支持编解码器,它将工作,我们使用 264,因为它是普遍支持的,这非常罕见。我们的模拟器使用 JavaFX 进行视频播放,并且它们的编解码器支持“有问题”,因此 264 可能是我们可以选择的唯一可以在模拟器和所有设备中工作的方法。

话虽如此,如果您有一个编解码器的纯 Java 实现,您可能可以将其移植到 Codename One。上述编解码器的 javascript 版本可能也可以在 Web 浏览器组件中工作,但可能无法在模拟器中工作,因为 JavaFX 的 webview 在 html5 支持方面非常薄弱,但它可能在设备上工作。

【讨论】:

【参考方案2】:

我已经用 KitchenSink/src/com/codename1/demos/kitchensink/Video.java 中的演示 m3u8 链接替换了 mp4 媒体链接,并在 iPhone 6S / ios 11.0.2 和 Galaxy Tab Note 上测试了生成的 apk 和 ipa /安卓 7.1.1 . m3u8 流确实可以在 android 和 iPhone 设备上正常工作。 对于那些需要一些 m3u8 工作示例的人,请在 videojs contrib repos => https://github.com/videojs/videojs-contrib-hls 中帮助自己。

【讨论】:

以上是关于com.codename1.components.MediaPlayer 是不是支持 HLS 自适应比特率流的主要内容,如果未能解决你的问题,请参考以下文章