HTML5 ボリュームが 100% を超えて増加 質問する

HTML5 ボリュームが 100% を超えて増加 質問する

これは数年前に投稿されたものですが、まだ解決されていません。たとえば 150% の音量でビデオを再生するものを作ろうと決心しましたが、HTML5 の音量メソッドでは 1 より大きい値を指定するとエラーが発生します。https://www.w3schools.com/tags/av_prop_volume.asp

これが私のコードです:

javascript:(function(){document.getElementsByTagName('video')[0].volume = 1.5;}());

0.5 は動作しますが、1.5 は動作しません。ある回答では、次のエラーが発生すると述べられています。

Uncaught DOMException: Failed to set the 'volume' property on 'HTMLMediaElement': The volume provided (2) is outside the range [0, 1].

とにかく、この例外を利用して、[0,1]の範囲を超えて実行することはできますか?

ベストアンサー1

ビデオの音量は 0 ~ 1 のパーセンテージで表され、100% を超えることはできません。

これを実現できる唯一の方法は、ビデオ プレーヤーからのオーディオを Web Audio API にルーティングし、そこで増幅することです。

https://developer.mozilla.org/en-US/docs/Web/API/AudioContext/createMediaElementSource

// create an audio context and hook up the video element as the source
var audioCtx = new (window.AudioContext || window.webkitAudioContext)();
var source = audioCtx.createMediaElementSource(myVideoElement);

// create a gain node
var gainNode = audioCtx.createGain();
gainNode.gain.value = 2; // double the volume
source.connect(gainNode);

// connect the gain node to an output destination
gainNode.connect(audioCtx.destination);

ビデオからオーディオ コンテキストを取得し、ゲイン ノードに通してオーディオの音量を上げたり、リバーブなどのオーディオ効果を適用したりできます。ゲイン ノードのゲインを上げすぎないように注意してください。そうしないと、すでにマスタリングされているオーディオがクリッピングし始めます。

最後に、新しいオーディオを出力できるように、ゲイン ノードをオーディオの宛先に接続する必要があります。

おすすめ記事