我正在为网页上的MP4视频创建自定义控制器。该控制器包括一个音量滑块。其中一些要播放的视频没有声音轨道。最好禁用这些视频的音量滑块,以免用户在更改音量滑块位置时感到困惑,因为没有任何效果。是否有属性或技巧可以检查MP4文件是否具有音频轨道?(jQuery是一种选择)。
编辑:使用@dandavis的建议,我现在对Chrome(和Opera上的.ogg)有了这个解决方案:
视频的webkitAudioDecodedByteCount值最初为0。在我的测试中,可能需要最多256毫秒才能填充非零值,因此我已包括超时以继续检查(一段时间)。
编辑:使用@dandavis的建议,我现在对Chrome(和Opera上的.ogg)有了这个解决方案:
var video = document.getElementById("video")
var volume = document.getElementById("volume-slider")
function initializeVolume() {
var enableVolume = true
var delay = 1
if (video.webkitAudioDecodedByteCount !== undefined) {
// On Chrome, we can check if there is audio. Disable the volume
// control by default, and reenable it as soon as a non-zero value
// for webkitAudioDecodedByteCount is detected.
enableVolume = false
startTimeout()
function startTimeout () {
if (!!video.webkitAudioDecodedByteCount) {
enableVolume = true
toggleVolumeEnabled(enableVolume)
} else {
// Keep trying for 2 seconds
if (delay < 2048) {
setTimeout(startTimeout, delay)
delay = delay * 2
}
}
}
}
toggleVolumeEnabled(enableVolume)
}
function toggleVolumeEnabled(enableVolume) {
volume.disabled = !enableVolume
}
视频的webkitAudioDecodedByteCount值最初为0。在我的测试中,可能需要最多256毫秒才能填充非零值,因此我已包括超时以继续检查(一段时间)。
OfflineAudioContext
检查声音。我对API的细节了解不够,无法提供解决方案。 - apsillers!!video.webkitAudioDecodedByteCount
表示音频解码的字节数。 - dandavis