質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Web Audio

Web Audioは、音声を処理・合成するためのWebアプリケーション向けJavaScript APIです。HTML5から導入されました。オーディオソースの選択、エフェクト・ビジュアライゼーションの追加、パンニングなど特殊効果の適用など多くの機能を持ちます。

YouTube

YouTubeとはユーザーがビデオをアップロード・共有・閲覧できるビデオ共有ウェブサイトです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

Q&A

1回答

1745閲覧

ブラウザで鳴らしている音楽に、Web Audio APIを使って音楽にエフェクトを施すことは可能ですか?

evgenia

総合スコア28

Web Audio

Web Audioは、音声を処理・合成するためのWebアプリケーション向けJavaScript APIです。HTML5から導入されました。オーディオソースの選択、エフェクト・ビジュアライゼーションの追加、パンニングなど特殊効果の適用など多くの機能を持ちます。

YouTube

YouTubeとはユーザーがビデオをアップロード・共有・閲覧できるビデオ共有ウェブサイトです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

0グッド

0クリップ

投稿2020/12/05 03:09

編集2020/12/05 03:10

前提・実現したいこと

ページに埋め込んだYouTubeやAudioタグなどを利用して音を鳴らして、Web Audio APIを使って鳴らしている音にリバーブやコンプレッサーや音量の変化などを施したいと思っています。
これって可能なのでしょうか。

下記は埋め込んだYouTubeを再生する機能を持ったサンプルです。
※デバイスのマイクの使用が求められます。
※Reactを使っています。
※次項で書きますがものすごいノイズが鳴るので、音量に気を付けてください。
CodeSandBox

再生しているYouTubeを正常に再生しつつ、ひとまずは再生しているYouTubeの音量を、gainNodeを使って操作したいです。

発生している問題・エラーメッセージ

再生するとものすごいノイズが鳴ります。

該当のソースコード

js

1export default function App() { 2 const [playing, setPlaying] = useState(false); 3 const playerProps = { 4 url: "https://youtu.be/TRvqqRIILbE", 5 playing: playing, 6 onPlay: () => startAudio() 7 }; 8 useEffect(() => { 9 audioCtx = new AudioContext(); 10 gainNode = audioCtx.createGain(); 11 navigator.mediaDevices 12 .getUserMedia({ audio: true }) 13 .then((stream) => { 14 mediaNode = audioCtx.createMediaStreamSource(stream); 15 }) 16 .catch((err) => console.log(err)); 17 return () => audioCtx.close(); 18 }, []); 19 20 const startAudio = () => { 21 mediaNode.connect(gainNode); 22 gainNode.connect(audioCtx.destination); 23 mediaNode.start(); 24 setPlaying(true); 25 }; 26 const stopAudio = () => { 27 mediaNode.disconnect(); 28 gainNode.disconnect(); 29 setPlaying(false); 30 }; 31 const changeVolume = (e) => (gainNode.gain.value = e.target.value); 32 33 return ( 34 <> 35 <ReactPlayer {...playerProps} /> 36 <button onClick={playing ? stopAudio : startAudio}> 37 {playing ? "Stop" : "Start"} 38 </button> 39 <span>Volume</span> 40 <input onChange={changeVolume} step="any" type="range" /> 41 </> 42 ); 43}

試したこと

mediaNodeをstartしなければ破壊的なノイズは鳴らなくなりましたが、その場合単にYouTubeの音を再生しているだけになるので、nodeを繋げられずエフェクトが掛けられない状態です。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

https://teratail.com/questions/63037

これを見る限りyoutubeをソースにするには拡張機能を使う必要があるようで
もしくはPCでyoutubeを流してマイクに出力、マイクの出力をブラウザでキャッチですかね

投稿2020/12/23 04:42

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問