是否可以通过vriable而不是stream.key文件来读取和定义HLS流密钥?

问题描述 投票:0回答:1

我加密了 MP4 视频文件 FFMPEG。这给了我一个播放列表清单文件(即stream.m3u8)、一个密钥文件(即stream.m3u8.key)和一些.ts文件。我使用下面的代码来播放stream.m3u8文件并且它有效

<head>
    <link href="https://vjs.zencdn.net/7.4.1/video-js.css" rel="stylesheet">
    <script src="https://vjs.zencdn.net/7.4.1/video.min.js"></script>
</head>
<body>
    <video id="example-video" class="video-js vjs-default-skin" controls="controls" width="640" height="360">
       <source src="./stream.m3u8" type="application/x-mpegURL" />
    </video>
    <script>
        var player = videojs('example-video');
    </script>
</body>

在我尝试使用

input
并选择文件属性后,我尝试了下面的代码

<html>
    <head>
        <link href="https://vjs.zencdn.net/7.4.1/video-js.css" rel="stylesheet">
        <script src="https://vjs.zencdn.net/7.4.1/video.min.js"></script>
    </head>

    <body>
        <label for="input">Choose a video file to process:</label>
        <input type="file" id="input" name="input_video">
        <p id="demo"><p/>
        <video id="video" class="video-js vjs-default-skin" width="320" height="240" controls style="display: none;">
            <source id="vid" type="application/x-mpegURL" />
        </video>
    </body>
    
    <script>
        document.getElementById("input").addEventListener("change", function() {
          var media = URL.createObjectURL(this.files[0]);
          
          var vid = document.getElementById("vid");
          vid.src = media;
          
          var video = document.getElementById("video");
          video.style.display = "block";
          video.play();
          
          document.getElementById("demo").innerHTML = vid.src;
          
          var player = videojs('video');
          //player.play();
        });
    </script>

</html>

上面的代码可以读取stream.m3u8播放列表文件,但无法读取“密钥文件”,因为密钥文件的位置是在stream.m3u8本身中定义的。 enter image description here

当我浏览stream.m3u8文件并尝试播放时,播放窗口显示持续时间(以秒为单位),但我尝试着播放,但无法播放。这表明它无法调用密钥文件。 enter image description here

我相信,如果我在清单文件之外定义关键文件位置,例如在 JavaScript 代码内,这个问题就会得到解决。 如何定义播放列表文件之外的关键文件位置?

javascript ffmpeg http-live-streaming hls.js
1个回答
0
投票

您可以在 JavaScript 中定义

key

由于您正在使用

Video.js
,因此您必须通过
Video.js
进行定义。据我所知,Video.js API 中没有任何选项。

Video.js
使用http-streaming,解析
m3u8
的过程在其中完成。因此,您可以在 this 库中处理该问题。

有用的链接:

© www.soinside.com 2019 - 2024. All rights reserved.