我有带有多个音轨的视频。我想播放视频并希望更改视频中的音轨。有什么方法可以用 html 制作这个,或者有 html 支持的播放器吗?
有一个 API,但不太受支持。 但是,video.js 有一个名为 videojs-audio-tracks 的插件,但它仍然使用
audioTracks
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提供了一个很好的答案(https://stackoverflow.com/a/15286719/6931862
)下面是上面链接中提供的回复,但进行了一些编辑,以适应
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>
你应该使用 Hermes 建议的答案:
var video = document.getElementById("video");
for (var i = 0; i < video.audioTracks.length; i += 1) {
video.audioTracks[i].enabled = false;
}
但是在 chrome 中要实现此功能,您必须启用“实验性 Web 平台功能”,您可以在 chrome://flags/ 上找到该功能