web-dev-qa-db-ja.com

Chromeストリーミングオーディオをリッスンしてキャプチャするための拡張機能

Chrome拡張機能がブラウザのタブのいずれかからストリーミングオーディオをリッスンすることは可能ですか?ストリーミングオーディオデータをキャプチャしてから分析したいと思います。

ありがとう

15

3つの方法を試すことができますが、どちらもニーズを満たすために100%の保証を提供しません。

より詳細な説明に入る前に、Chrome拡張機能は接続レベルごとに作業するための便利なツールを提供しないことに注意する必要があります-十分な低レベル、ストリームキャプチャに必要これは仕様によるものです。

  1. 接続用の低レベルAPIを提供するFirefoxなど、他のブラウザーを見るため。それらは、同様の拡張機能で使用されることが既に知られています。 MediaStealer をご覧ください。 Chromeでシステムを構築するための特定の要件がない場合は、Firefoxに移行する必要があります。

  2. Chrome拡張機能を開発できます。これは、 webRequest APIを使用してHTTPリクエストをインターセプトし、ヘッダーを分析し、メディアURL(audio/mpeg MIME-たとえば、HTTPヘッダーに入力します。コードの簡単な例については、次をご覧くださいSO質問- Chromeの応答ヘッダーを変更する方法 URLを使用すると、適切なメディアダウンロードをファイルとして強制することができます。デフォルトのダウンロードフォルダーに格納され、わかりにくい名前を付ける場合があります(このような拡張子を作成しましたが、さらに処理する必要はありません)。そのようなファイルを処理する場合、フォルダー内のファイルを監視し、別のプログラムで追加の分析を実行するのが難しい場合があります。

  3. 一般的にNPAPIプラグイン、特に ストリーミングAPI を見ることができます。オーディオ/ mpeg MIMEタイプ用に登録されたプラグインを作成し、NPP_NewStreamNPP_WriteReady、およびNPP_Writeメソッドを介してデータを受信すると想像できます。プラグインはChrome拡張機能にラップすることができます。NPAPIプラグインを作成しましたが、このAPIを使用したことはなく、期待どおりに機能するかどうかはわかりません。この方法では、Webコーディング以外のコーディング(C/C++を意味する)が必要ですNB。NPAPIプラグインは非推奨であり、Chromeではサポートされていません2015年9月以降

インテリジェントなデータ処理のように思える(拡張機能に対する)外部の「フィンガープリントサービス」を念頭に置いて考えると、ブラウザからすべてのシステムを構築することに興味があるかもしれません。たとえば、おそらくHTTPプロキシを使用して、メディアがトラフィックを通過させないようにすることができます。

11
Stan

Chrome拡張機能を記述している場合は、 Chrome tabCapture API を使用して音声を録音できます。

chrome.tabCapture.capture({audio: true}, function(stream) {
  var recorder = new MediaRecorder(stream);
  [...]
});

残りは読者の練習として残します。 MDNには、MediaRecorderの使用方法に関する 詳細なドキュメント があります。

2013年にこの質問が行われたとき、chrome.tabCaptureもMediaRecorderも存在していませんでした。

5
ArthurDenture

Soundflowerを使用したMac OSXソリューション: http://rogueamoeba.com/freebies/soundflower/

サウンドフラワーをインストールした後、サウンド設定で別のオーディオデバイスとして表示されるはずです(アップル>システム設定>サウンド)。コンピューターのオーディオを2chオプションに切り替え(ステレオ、16chはサラウンド)、「audacity」などのDAW内でオーディオ入力をサウンドフラワーとして設定します。これで、録音の準備ができたDAWにサウンドが送られます。

注:内蔵スピーカーからの音声をsoundflowerに流用すると、「soundflowerbed」アプリが実際に開いている場合にのみ音声を聞くことができます。右上のタスクバーに8本の脚のブロブがある場合は開いていることがわかります。このアイコンをクリックすると、サウンドフラワーオプションが表示されます。

3
Franzeen

私のprivoxyには次のログがあります:

2013-08-28 18:25:27.953 00002f44 Request: api.audioaddict.com/v1/di/listener_sessions.jsonp?_method=POST&callback=_AudioAddict_WP_ListenerSession_create&listener_session%5Bid%5D=null&listener_session%5Bis_premium%5D=false&listener_session%5Bmember_id%5D=null&listener_session%5Bdevice_id%5D=6&listener_session%5Bchannel_id%5D=178&listener_session%5Bstream_set_key%5D=webplayer&_=1377699927926
2013-08-28 18:25:27.969 0000268c Request: api.audioaddict.com/v1/ping.jsonp?callback=_AudioAddict_WP_Ping__ping&_=1377699927928
2013-08-28 18:25:27.985 00002d48 Request: api.audioaddict.com/v1/di/track_history/channel/178.jsonp?callback=_AudioAddict_TrackHistory_Channel&_=1377699927942
2013-08-28 18:25:54.080 00003360 Request: pub7.di.fm/di_progressivepsy_aac?type=.flv

そこで、ストリームのURLを取得して記録します。

D:\Profiles\user\temp>wget pub7.di.fm/di_progressivepsy_aac?type=.flv
--18:26:32--  http://pub7.di.fm/di_progressivepsy_aac?type=.flv
           => `di_progressivepsy_aac@type=.flv'
Resolving pub7.di.fm... done.
Connecting to pub7.di.fm[67.221.255.50]:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [video/x-flv]

    [                   <=>               ] 1,234,151      8.96K/s

どんなマルチメディアでも再生できるファイルを手に入れました。

1