使用javascript来检测MP4视频是否有音轨
Use javascript to detect if an MP4 video has a sound track
我正在为网页上的MP4视频创建一个自定义控制器。控制器包括一个音量滑块。有些要播放的视频没有音轨。最好禁用这些视频的音量滑块,这样用户就不会在改变音量滑块的位置没有效果时感到困惑。
是否有一个属性或一个技巧来检查一个MP4文件是否有音轨?(jQuery是一个选项)。
编辑:使用@dandavis的建议,我现在有这个解决方案Chrome(和。ogg在Opera):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。在我的测试中,可能需要256ms来填充非零值,因此我包含了一个超时来保持检查(一段时间)。
可能有更好的方法来做到这一点,尽管对于启用webkit
或mozilla
的浏览器使用常规javascript
相当简单。webkit
利用this.audioTracks
, mozilla
利用this.mozHasAudio
:
document.getElementById("video").addEventListener("loadeddata", function() {
if ('WebkitAppearance' in document.documentElement.style)
var hasAudioTrack = this.audioTracks.length;
else if (this.mozHasAudio)
var hasAudioTrack = 1;
if (hasAudioTrack > 0)
alert("audio track detected");
else
alert("audio track not detected");
});
<video id="video" width="320" height="240" controls>
<source src="http://media.w3.org/2010/05/video/movie_300.mp4" type="video/mp4">
</video>
还有一个函数this.webkitAudioDecodedByteCount
,但是,我从来没有运气使它工作。
检查视频文件是否有音频有不同的方法,其中一种方法是使用视频的mozHasAudio
, video.webkitAudioDecodedByteCount
和video.audioTracks?.length
属性,干净简单…
相关文章:
- 替换视频的音轨
- 使用JavaScript的流式soundcloud音轨;不起作用
- 如何在Javascript中消除音轨之间的停顿
- 在浏览器中启用/禁用同步音轨
- 音轨 JS 功能无法播放或暂停音频
- 音轨在Javascript中循环播放,没有延迟
- 从多个设备同时在多个音轨上录制音频
- 如何从MediaStream中删除音轨;停止“;网络摄像头
- 使用单个控制器控制多个html5音轨
- Javascript:从soundcloud api设置音轨位置
- 使html视频文本音轨中的字幕越来越小
- 将视频音轨src替换为变量
- 如何使用
- 使用soundloud API从用户提要获取所有音轨
- 在播放列表中更新音轨排序
- 用Node.js叠加两个音轨
- 当某个dom元素进入视口时改变音轨
- 如何更改现有流的音轨
- 如何为特定的音轨调用soundcloud sdk
- 使用javascript来检测MP4视频是否有音轨