我正在製作一個Chrome應用程序,我想爲視頻播放定製控件,但是我在靜音按鈕方面遇到了一些困難。大多數將在應用程序中播放的視頻都是無聲的,所以我希望能夠在沒有音軌的情況下禁用按鈕,就像chrome使用默認控件一樣。HTML5視頻,如何檢測何時沒有音軌?
嘗試使用音量值,但即使沒有音軌也會返回「1」。檢查視頻是否靜音也不起作用。
這裏是snippet。
有什麼建議嗎?
我正在製作一個Chrome應用程序,我想爲視頻播放定製控件,但是我在靜音按鈕方面遇到了一些困難。大多數將在應用程序中播放的視頻都是無聲的,所以我希望能夠在沒有音軌的情況下禁用按鈕,就像chrome使用默認控件一樣。HTML5視頻,如何檢測何時沒有音軌?
嘗試使用音量值,但即使沒有音軌也會返回「1」。檢查視頻是否靜音也不起作用。
這裏是snippet。
有什麼建議嗎?
在某些時候,瀏覽器可能會開始實施audioTracks property。目前,您可以將webkitAudioDecodedByteCount
用於webkit,對於Firefox可以使用mozHasAudio
。基於upuoth的回答和擴展,以支持IE10 +
function hasAudio (video) {
return video.mozHasAudio ||
Boolean(video.webkitAudioDecodedByteCount) ||
Boolean(video.audioTracks && video.audioTracks.length);
}
使用
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");
});
較短的功能:
var video = document.querySelector('video');
if(hasAudio(video)) {
console.log("video has audio");
} else{
console.log("video doesn't have audio");
}
,我不認爲這是目前可能的。另外,有幾個視頻具有音頻軌道,但整個時間保持沉默。 – Brad
永不言敗:您可以將視頻的音頻輸入到webAudio API操作中,以驗證非靜音。只適用於鉻和FF,我不知道如何去做,但它可以做到... – dandavis
@dandavis:這應該在[鉻,FF和Safari](http://caniuse.com /音頻-API)。 –