Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript条件不适用于音频检查_Javascript_Html_Video - Fatal编程技术网

Javascript条件不适用于音频检查

Javascript条件不适用于音频检查,javascript,html,video,Javascript,Html,Video,所以我一直在关注这个问题有一段时间了。下面的代码查看视频,并确定它是实际播放声音,还是只是静音。如果它是静默的,我想循环它,使它基本上像GIF一样工作 控制台准确记录声音检查。我一直在检查 但下一位代码(将循环应用于视频)无论如何都会运行。它用声音循环视频,我不知道为什么 <script type="text/javascript"> document.getElementById("my-video_html5_api").addEventListener("loadeddata

所以我一直在关注这个问题有一段时间了。下面的代码查看视频,并确定它是实际播放声音,还是只是静音。如果它是静默的,我想循环它,使它基本上像GIF一样工作

控制台准确记录声音检查。我一直在检查

但下一位代码(将循环应用于视频)无论如何都会运行。它用声音循环视频,我不知道为什么

 <script type="text/javascript">
document.getElementById("my-video_html5_api").addEventListener("loadeddata", function() {
  if (typeof this.webkitAudioDecodedByteCount !== "undefined") {
    // non-zero if video has audio track
    if (this.webkitAudioDecodedByteCount > 0)
      console.log("video has audio");

    else
      console.log("video doesn't have audio");
      var vid = document.getElementById("my-video_html5_api");
      vid.loop = true;
  }
  else if (typeof this.mozHasAudio !== "undefined") {
    // true if video has audio track
    if (this.mozHasAudio)
      console.log("video has audio");
    else
      console.log("video doesn't have audio");
      var vid = document.getElementById("my-video_html5_api");
      vid.loop = true;
  }
  else
    console.log("can't tell if video has audio");
});
</script>

document.getElementById(“my-video_html5_api”).addEventListener(“loadeddata”,function()){
if(this.webkitAudioDecodedByteCount的类型!=“未定义”){
//如果视频有音频曲目,则为非零
如果(this.webkitAudioDecodedByteCount>0)
log(“视频有音频”);
其他的
log(“视频没有音频”);
var vid=document.getElementById(“my-video_html5_api”);
vid.loop=true;
}
else if(this.mozasAudio的类型!=“未定义”){
//如果视频有音频曲目,则为true
if(this.mozHasAudio)
log(“视频有音频”);
其他的
log(“视频没有音频”);
var vid=document.getElementById(“my-video_html5_api”);
vid.loop=true;
}
其他的
log(“无法判断视频是否有音频”);
});
有什么帮助吗?

修理你的牙套。每个“if”和“else”结果都需要用大括号括起来


从技术上讲,单线区块不会,但这是一种良好的做法。必须包装多个线块,否则将对其求值。特别是,我看到了几个不在大括号中的
vid.loop=true

如果仅当
this.mozHasAudio
为false时才打算执行
var.loop=true
,则需要将块用大括号括起来:
{}
以当前形式,console.log后面的行始终运行。Welp。。。那很容易。非常感谢。