我正在使用 mediaelement 播放器从 youtube 流式传输视频。然而,我得到的视频质量很差。我试图强制使用最高质量的播放:
<source type="video/youtube" src='http://www.youtube.com/watch?v=WA4iX5D9Z64&hd=1'></source>
但是,这是行不通的。我怎样才能以最高质量取回视频或指定我想要的质量。
我正在使用 mediaelement 播放器从 youtube 流式传输视频。然而,我得到的视频质量很差。我试图强制使用最高质量的播放:
<source type="video/youtube" src='http://www.youtube.com/watch?v=WA4iX5D9Z64&hd=1'></source>
但是,这是行不通的。我怎样才能以最高质量取回视频或指定我想要的质量。
一般来说,只有当视频窗口足够大以处理更高的定义时,Youtube API 才会尊重 hd 参数......所以如果你的 iFrame 最终只有 640x360,即使添加了 hd=1,你也会得到一个 360p 视频. 这可以通过增加 iFrame 的大小(或传递给 API 的高度/宽度参数)来改变,或者通过使用 vq 参数来指定您想要的质量(即 vq=720p 或类似的东西)。
但是,您的情况很复杂,因为您自己没有与 API 交互或使用简单的 iFrame 嵌入,而是用 mediaelement 播放器包装它。在查看源代码时,似乎当 mediaelement 与 Youtube API 交互时,除了 Youtube ID 本身之外,它没有传递任何参数(在“playerVars”数组中),因此 hd 或 vq 都不会有任何效果. 更改播放器的大小仍然有效;例如,
<video width="1280" height="720" id="player1" preload="none">
<source type="video/youtube" src="http://www.youtube.com/watch?v=nOEw9iiopwI"/>
</video>
将为您提供比以下质量更高的视频:
<video width="640" height="360" id="player1" preload="none">
<source type="video/youtube" src="http://www.youtube.com/watch?v=nOEw9iiopwI"/>
</video>
当您执行 mediaelement 回调时。
如果您不想增加播放器的大小但仍然有更高质量的视频,您可以修补 mediaelement-and-player.js 文件以确保它将 vq 参数发送到 API,然后在src 属性。