【问题标题】:Changing HTML video stream source/quality on the fly动态更改 HTML 视频流源/质量
【发布时间】:2018-10-04 10:48:12
【问题描述】:

背景: 我正在制作一个包含 50 多个短视频(10 分钟,720p)的视频项目,我想在网上展示这些视频。我当前的架构是将 16 个视频标签放置在 4x4 网格中,然后使用 JavaScript 在加载时随机设置它们的源,然后单击缩放视频以覆盖全屏,直到再次单击。

问题: 720p webm 中的每个视频约为 80mb。有 16 个视频,总共 1.3GB,或每分钟 130MB,或每秒 2MB。这是一个荒谬的数据量,我想,也许我错了。每个视频都这么大(80mb)是为了支持缩放全屏功能。

我的解决方案想法: 每个视频有两种分辨率,低分辨率用于网格布局,较高分辨率用于点击缩放。

我的问题:如何使这一切顺利?我可以在背景点击低分辨率视频的位置预加载高分辨率视频吗?并在 CSS 转换中进行转换?或者有更好的方法吗?

第二个问题:如何在线托管?我可以把视频放在 vimeo 上吗?现在我正在使用 wordpress.com 托管。

【问题讨论】:

    标签: javascript video-streaming jss


    【解决方案1】:

    实现此类目标的常规方法是使用自适应比特率格式对视频进行编码。两种主要格式是 HLS 或 MPEG-DASH。大多数在线编码平台都可以提供这些作为输出。通常你会编码 5-6 种不同的质量(这对使用 wifi 的用户很有帮助,因为带宽可能会不断变化),但你可以轻松地将其编码为两种不同的质量。

    通常玩家可以自动选择正确的质量,但如果需要,您可以自行管理。

    如果要使用 HLS,可以使用 hls.js 及其 Quality Switch API。对于 MPEG-DASH,一个好的播放器是Shaka Player,然后这样设置:

    player.configure({enableAdaption: false});
    player.selectVideoTrack(trackId);
    

    如果您想专门切换到全屏,只需监听播放器上的全屏事件即可。

    【讨论】:

    • 感谢您的精彩回复。我的网络主机 (surftown) 不提供 Node.js,所以我猜 hls.js 对我来说是最好的。一个后续问题,是否可以设置一个缓冲策略,让 hls.js 知道我有 16 个需要维护的低分辨率视频。我的虚拟主机允许 5 个并发请求,所以我需要它们循环浏览所有视频。
    • @AndreasBurmester 这些玩家都不需要服务器端的 Node.js。他们都是客户端。此外,它们实际上并没有保持打开连接,而是获取小的分段视频文件,因此并发请求限制应该不是问题。
    • 是的,我很困惑,它是 Shaka 的构建和测试环境,依赖很重。先决条件 您可以在 Linux、Windows 或 Mac 上构建 Shaka。要获取源代码并编译库,您需要: Git v1.9+ git-scm.com/downloads Python v2.7 python.org/downloads Java Runtime Environment v8+ java.com/en/download NodeJS v6+ nodejs.org/en/download 本地 Web 服务器,例如 Apache @987654328 @ 注意:需要本地 Web 服务器,因为浏览器会限制来自 file:/// URL 的应用程序。
    • 您对编码不同比特率/分辨率的工具有什么建议吗?现在我在 Ubuntu 上使用 Handbreak 并更改了每个文件的分辨率(720p、360p、180p)。但是,当我尝试使用 Bento4 从中生成破折号时,只有一些有效,而另一些则无效,因为... ERROR: video tracks are not aligned ("File 2#1" differs from File 1#1) 我猜 Handbreak 没有使文件足够相似?
    • 没关系。我发现 Bento4 自带的编码器可以解决这个问题。对于可能追随我的人来说,对齐关键帧很重要。 Handbreak 尝试智能地选择关键帧,但这不适用于破折号格式。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-19
    • 1970-01-01
    • 2016-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多