如何将JavaScript函数(canPlayType)的结果传递给HTML5视频

how to pass the result of an JavaScript function (canPlayType) to an HTML5 video

本文关键字:结果 视频 HTML5 JavaScript 函数 canPlayType      更新时间:2023-09-26

我需要将视频发送到客户端站点,但由于编解码器不同,我不想发送重复的视频)。

我在将jscript函数的结果转换为$变量时遇到了很多问题。由于检索SELECT的复杂性,我无法使用DISTINCT,我需要包含扩展。

我花了好几天时间下载我无法上班的"例子"。以下是从两个示例创建的最新版本:检测HTML5视频和如何传递jscript变量。

    <script>
    function playsvideo() {
        return supports_video();
    }
    function supports_h264() {
        var v = document.createElement("video");
        return v.canPlayType('video/mp4; codecs="avc1.42E01E, mp4a.40.2"');
    }
    function supports_ogg() {
        var v = document.createElement("video");
        return v.canPlayType('video/ogg; codecs="theora, vorbis"');
    }
    function supports_webm() {
        var v = document.createElement("video");
        return v.canPlayType('video/webm; codecs="vp8, vorbis"');
    }
    <?php
    if(playsvideo()) {
        if(supports_ogg()?true:false)  {$ext='ogv';}
        else if(supports_webm()?true:false) {$ext='webm';}
        else if(supports_h264()?true:false) {$ext='mp4';}
        else {$ext='flash';}
    }
    ?>
    </script>

如果我将一个常量传递给MYSQL,那么网页就可以工作了,但如果将上面的代码作为HEAD部分的最后一项,则网页只挂起一个空白页(设置了背景色)。我还尝试过将php精简为一行:

if(paysvideo()) {$ext='ogv';} // still hangs

我找到了答案,我使用了Modernizrhttp://diveintohtml5.info/detect.html和隐藏字段如何使用Javascript根据复选框的状态更改隐藏输入的值?

    <input id="myvideoext"type="hidden" name="myvideoext"   value="fallback">
if (Modernizr.video) {
  if (Modernizr.video.ogg) {
        document.getElementById('myvideoext').value="ogv";
  } else if (Modernizr.video.webm) {
    document.getElementById('myvideoext').value="webm";
  } else if (Modernizr.video.h264){
    document.getElementById('myvideoext').value="mp4";
  }
}