Use javascript to detect if an MP4 video has a sound track -
i creating custom controller mp4 video on web page. controller includes volume slider. of videos played have no sound track. disable volume slider these videos, user not confused when changing position of volume slider has no effect.
is there property or trick checking if mp4 file has audio track? (jquery option).
edit: using @dandavis's suggestion, have solution chrome (and .ogg on 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, can check if there audio. disable volume // control default, , reenable non-zero value // webkitaudiodecodedbytecount detected. enablevolume = false starttimeout() function starttimeout () { if (!!video.webkitaudiodecodedbytecount) { enablevolume = true togglevolumeenabled(enablevolume) } else { // keep trying 2 seconds if (delay < 2048) { settimeout(starttimeout, delay) delay = delay * 2 } } } } togglevolumeenabled(enablevolume) } function togglevolumeenabled(enablevolume) { volume.disabled = !enablevolume }
the video.webkitaudiodecodedbytecount value 0. in tests, may take 256ms populated non-zero value, have included timeout keep checking (for while).
there might better way of doing this, although it's simple using regular javascript
webkit
or mozilla
enabled browsers. webkit
utilizes this.audiotracks
, mozilla
uses this.mozhasaudio
respectively:
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>
there's function this.webkitaudiodecodedbytecount
, however, i've never had luck making work.
Comments
Post a Comment