所以我已经关注这个问题有一段时间了。以下代码查看视频,并确定其是否实际播放声音,或者只是静音。如果它是无声的,我想循环播放它,这样它的功能基本上就像 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>
有什么帮助吗?
最佳答案
固定牙套。每个“if”和“else”结果都需要用花括号括起来。
从技术上讲,单行 block 不会,但这是一个很好的做法。多个行 block 必须被换行,否则它们将被评估。特别是,我正在查看几行不包含在任何大括号中的 vid.loop = true
行!
关于JavaScript 条件不适用于音频检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45850708/