gpt4 book ai didi

hls.js - 如何将 loadSource() 与字符串而不是 m3u8 播放列表一起使用?

转载 作者:行者123 更新时间:2023-12-04 02:00:13 35 4
gpt4 key购买 nike

在 galeksandrp 的演示中:
https://github.com/galeksandrp/hls.js/tree/hlstorrent 他使用 webtorrent 和 hls.js 创建 P2P 流。
该演示非常适合我,但我需要使用 strings 变量而不是使用 hls.loadSource('193039199_mp4_h264_aac_ld_7.m3u8') 加载外部播放列表。

有没有人做过类似的事情?简单地尝试加载字符串给出:
“尝试解析基本 URL 时出错”,这是可以理解的,因为 URLToolkit 尝试从 loadSource 括号内的任何内容构建绝对 URL,因此它不会有可以解析的 URL。

strings 变量的内容与 '193039199_mp4_h264_aac_ld_7.m3u8' 相同

strings = ['#EXTM3U',
'#EXT-X-VERSION:3',
'#EXT-X-PLAYLIST-TYPE:VOD',
'#EXT-X-TARGETDURATION:10',
'#EXTINF:10.000,',
'magnet:?xt=urn:btih:5493683624141c381fa19c9ed3bf00be2e0d96af',
'#EXTINF:10.000,',
'magnet:?xt=urn:btih:1ec3227aabe562cf2b244a41b93fa0a1aa423f4d',
'#EXTINF:10.000,',
'magnet:?xt=urn:btih:3cbd1622487f202f11aea838b0984a1478054456',
'#EXTINF:10.000,',
'magnet:?xt=urn:btih:9cf20cfe4fd1745ea4f72067192681b30b52a8c5',
'#EXTINF:10.000,',
'magnet:?xt=urn:btih:0c96911da7c860a9ae2a26ed8a96c10590508407',
'#EXT-X-ENDLIST'];

最佳答案

var enc = new TextEncoder("utf-8");
hls.loadSource(URL.createObjectURL(new Blob([enc.encode(strings.join('\n'))])));

说明:您只需要将播放列表文本转为 URL,无需编写 custom playlist loader
  • 将字符串数组连接到文本(如果需要),并使用 Uint8Array 将文本转换为 enc.encode()
  • 然后使用 Blob 将结果转换为 new Blob([])
  • 然后使用 blob: 将结果转换为 URL.createObjectURL() 虚拟 URL。

  • 例子:
  • https://rawgit.com/galeksandrp/hls.js/hlstorrent-blob-url/client.js
  • https://rawgit.com/galeksandrp/hls.js/hlstorrent-blob-url/server.js

  • var hls = new Hls({fLoader: customLoader, pLoader: customLoaderP});

    说明:你也可以写 custom playlist loader 因为默认是硬编码的使用 XHR,因此:
  • 不支持播放列表作为文本
  • 不支持播放列表作为 ArrayBuffer 和衍生物(Blob、FileReader)。
  • 只支持普通和 blob: url

  • 该自定义播放列表加载程序的示例是 customLoaderP 函数,您可以在其中以字符串数组的形式发现播放列表。

    另请注意,我的示例针对实时 P2P 进行了优化,因此为每个 10 秒块为 创建了新的 torrent,如果您分发 VOD/DVR,则可能不需要。对于通常的视频,您可以在单个洪流中传递所有块。

    关于hls.js - 如何将 loadSource() 与字符串而不是 m3u8 播放列表一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47791336/

    35 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com