document.getElementById("video").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");
}
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");
}
else
console.log("can't tell if video has audio");
});
4条答案
按热度按时间wfsdck301#
基于upuoth答案的更短函数,并扩展为支持IE10 +
用法:
rdlzhqv92#
在某个时候,浏览器可能会开始使用audioTracks property,现在,你可以使用
webkitAudioDecodedByteCount
作为webkit,mozHasAudio
作为firefox。3okqufwl3#
由于某种原因,@fregante的
hasAudio
函数在Chrome中的某个时候停止工作了--甚至在等待“loadeddata”和“loadedmetadata”事件,甚至“canplaythrough”事件之后。这可能与我使用的视频格式(webm)有关。无论如何,我通过播放视频很短的时间来解决这个问题:1qczuiv04#
有不同的方法来检查视频文件是否有音频,其中之一是使用视频的
mozHasAudio
,video.webkitAudioDecodedByteCount
和video.audioTracks?.length
属性,干净简单...