我正在使用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的height / width参数)或使用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属性。
关于youtube - 获得高质量的youtube视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14846684/