更改多音轨视频中的音频

问题描述 投票:0回答:3

我有带有多个音轨的视频。我想播放视频并希望更改视频中的音轨。有什么方法可以用 html 制作这个,或者有 html 支持的播放器吗?

html video html5-video audiocontext
3个回答
0
投票

有一个 API,但不太受支持。 但是,video.js 有一个名为 videojs-audio-tracks 的插件,但它仍然使用

audioTracks
API,它不是Chrome 不支持,需要在 Firefox 中手动启用。


0
投票

如果你想从 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>

0
投票

你应该使用 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/ 上找到该功能

© www.soinside.com 2019 - 2024. All rights reserved.