我可以将视频数据嵌入网页中,然后从网页中访问视频吗?

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

我的问题可能听起来有点复杂,但我确实有合法用途。

我正在使用 Lambda 函数处理传入的短视频文件(100-200KB),并使用 Dash/Hls 打包视频。打包过程会生成两个文件:打包的视频文件和清单文件,其中包含访问打包的视频文件的 URL。通常,我会将这两个文件存储到 S3 中并生成两个 URL。

我的 Lambda 函数返回一个 iframe:

<html>
...
<script>
var manifestURL = "the url of the manifest file"
...
</script>
</html>

所以浏览器会先获取manifest文件,然后从manifest文件中找到视频文件的URL,然后获取视频进行播放。

就我而言,视频只需要访问一次。因此,我想知道是否有一种方法可以将清单文件和视频文件的完整内容“嵌入”到 iframe 中,这样我就不需要与 S3 存储交互。比如:

<html>
...
<script>
var manifestURL = "manifest"
...
</script>

<file-data id="manifest">
...content of the manifest file
...URL of video: "packagedMP4"
</file-data>

<file-data id="packagedMP4">
...base64 encoded video file
</file-data>
</html>

这有点类似于图像和视频的数据 URI,例如,我可以使用

<img src="data:image/gif;base64,R0lGODlhEAAQAMQAAORHHOVSKudfOulrSOp3WOyDZu6Qd...>
包含图像的内容,因此我不需要图像具有 URL。

请注意,我无法更改媒体播放器的逻辑,因此清单和视频仍然需要有一个“看似”合法的 URL,以便我可以欺骗播放器加载它们。

html lambda video-streaming
1个回答
0
投票

我的问题可能听起来有点复杂,但我确实有合法用途。

首先,您应该解释用例...否则我们只能猜测和做出假设。

我正在使用 Lambda 函数处理传入的短视频文件(100-200KB),并使用 Dash/Hls 打包视频。

为什么? DASH 或 HLS 在这里没有真正的好处。 正如您所看到的,无论如何,您的视频最终都会成为一个片段。

跳过 DASH/HLS 部分,仅生成媒体文件。

我的 Lambda 函数返回一个 iframe

这似乎毫无意义,是吗? 特别是因为您现在不需要 HLS 或 DASH 的任何代码...

就我而言,视频只需要访问一次。因此,我想知道是否有一种方法可以将manifest文件和视频文件的完整内容“嵌入”到iframe中

实际上,您可以像处理图像一样使用 base64 来实现此目的,但不要这样做。 这增加了 33% 的开销,但功能效益为零。

您应该做的只是从您的函数返回视频文件。 没有 iframe,没有代码,没有 DASH,没有 HLS,只需保持简单即可:

<video src="https://example.com/your-lambda-url"></video>

浏览器将发出 GET 请求。 您可以在 lambda 函数中处理该问题并返回视频数据。 就是这样,这就是全部!

我建议您包含适当的缓存标头,并忽略任何范围请求(您的响应中也包含

Accept-Ranges: none
)。

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