我有带有多个音轨的视频。我想播放视频,并希望从视频中更改音轨。有什么方法可以在HTML中做到这一点,或者有HTML支持的播放器?
有一个API,但并不是很受支持。但是,有一个用于video.js的插件,称为videojs-audio-tracks,但它仍然使用audioTracks
API,该API不受Chrome的支持,并且需要在Firefox中启用手册。
如果要从HTML5视频中获取音频曲目,则可以通过ID获取视频元素,然后使用.audioTracks
阵列并传递您的曲目索引,以访问。
var video = document.getElementById("video");
for (var i = 0; i < video.audioTracks.length; i += 1) {
video.audioTracks[i].enabled = false;
}
mdn文档: htmlmediaelement.audiotracks
此外,如果您想操纵音频,威廉(William
以下是上面链接中提供的响应,但有一些编辑以说明AudioContext
的更新采用(用于webkitAudioContext
(
<script>
var video = document.createElement("video");
video.setAttribute("src", "ourMovie.mov");
video.controls = true;
video.autoplay = true;
document.body.appendChild(video);
var AudioContext = window.AudioContext || window.webkitAudioContext;
var audioCtx = new AudioContext(); // get access to audio context
var gainNode = audioCtx.createGain();
gainNode.gain.value = 1; // Change Gain Value to test
filter = audioCtx.createBiquadFilter();
filter.type = 2; // Change Filter type to test
filter.frequency.value = 5040; // Change frequency to test
// Wait for window.onload to fire. See crbug.com/112368
window.addEventListener('load', function(e) {
// Our <video> element will be the audio source.
var source = audioCtx.createMediaElementSource(video);
source.connect(gainNode);
gainNode.connect(filter);
filter.connect(audioCtx.destination);
}, false);
</script>
您应该使用爱马仕建议的答案:
var video = document.getElementById("video");
for (var i = 0; i < video.audioTracks.length; i += 1) {
video.audioTracks[i].enabled = false;
}
但是,在Chrome中为此,您必须启用"实验网络平台功能"。您会在Chrome上找到://flags/