【问题标题】:Prevent DASH video streaming from YouTube阻止来自 YouTube 的 DASH 视频流
【发布时间】:2019-03-18 22:09:00
【问题描述】:
我有一个 Roku 应用程序,其中一些视频来自 Youtube。检索视频没有问题,但如果我选择高清视频,它希望自动流式传输 Dash 版本。如果我强制播放非高清版本但谁想观看标清版本,我可以阻止 Dash..
所以我想知道有没有办法强制 mp4 流与 Dash 流相对?
我了解到 XP 无法播放 Dash,因此我尝试使用 Windows NT 5.1 作为用户代理,但没有成功。
任何帮助将不胜感激。
【问题讨论】:
标签:
youtube
video-streaming
mp4
mpeg-dash
roku
【解决方案1】:
DASH 和 MP4 并不相互排斥 - 它们在视频传输中执行不同的功能。
简单来说你可以这样看:
- 相机捕捉帧 - '原始视频'
- “原始视频”以某种方式进行编码以存储它,通常以平衡视频大小与质量的方式进行。然后,视频有时会被使用的编码器(编解码器)引用 - 例如,如果使用 h.264 编解码器,则视频可能被称为 h.264 视频。
- 视频流,即构成视频的所有单个帧,被打包到一个容器中。这个容器可能包含视频和音频流,甚至可能有多个视频流。然后视频通常由容器格式引用 - 例如,如果我们上面的 h.264 编码视频被打包到 MP4 容器中,它通常被称为 MP4 视频,即使 MP4“容器”可能包含多个视频和音轨。
- 为了提高视频流的质量,视频还可以使用 MPEG DASH 等流协议。这里的理论很简单:视频的多个副本是用不同的比特率创建的,因此大小和质量也不同。这些副本中的每一个都被分解为例如 10 秒的块。创建一个索引文件,称为清单,并包含指向每个视频和音频流的指针。播放视频的客户端(例如浏览器)根据需要请求每 10 秒的块。它根据当前的网络条件选择从哪个视频副本中选择下一个块。这意味着如果网络良好,它可以为下一个块切换到更高质量的副本,如果出现问题,它可以切换到较低质量的块。如果我们将 h.264 编码的示例视频放入 MP4 容器中,我们现在可以使用 DASH 流格式对其进行打包。像这样打包的视频通常称为 DASH 视频。
以上是一个简化的概述,但它希望强调您的视频实际上可能是 MP4 和 DASH,实际上通常是。
另外说明,不同的设备可能支持不同的编解码器(甚至编解码器配置文件)、打包格式和流格式 - 例如,在撰写本文时,iOS 设备倾向于支持 HLS 而不是 DASH。随着设备和标准的发展,这种情况经常发生变化,这也是很难找到一种可以在所有设备和客户端上播放的单一格式的原因之一——因此,服务器通常会以多种编解码器和流格式提供相同的视频以支持尽可能多的设备和客户端。