Chrome扩展程序可监听和捕获流媒体音频

时间:2013-03-19 21:52:47

标签: google-chrome audio google-chrome-extension audio-streaming audio-capture

Chrome扩展程序是否可以从任何浏览器的标签中收听流媒体音频?我想捕获流式音频数据,然后进行分析。

由于

4 个答案:

答案 0 :(得分:10)

您可以尝试3种方式,但没有一方能提供100%保证以满足您的需求。

在进入更详细的说明之前,我必须注意,Chrome扩展程序不提供方便的工具来处理每个连接级别 - 足够低级别,这是流捕获所必需的。这是设计的。这就是为什么第一种方式是:

  1. 查看其他浏览器,例如Firefox,它为连接提供低级API。已知它们被类似的扩展使用。您可以查看MediaStealer。如果您没有在Chrome上构建系统的特定要求,则应该转移到Firefox。

  2. 您可以开发Chrome扩展程序,通过webRequest API截取HTTP请求,分析其标头并提取媒体网址(例如,包含audio / mpeg MIME类型,例如, HTTP报头)。只是为了快速举例,您可以查看以下SO问题 - How to change response header in Chrome。有了网址,您可以强制将适当的媒体下载为文件。它将登陆默认下载文件夹,并可能具有不友好的名称。 (我做了这样的扩展,但我没有进一步处理的要求)。如果您需要进一步处理此类文件,在文件夹中监视它们并在单独的程序中运行其他分析可能是一项挑战。

  3. 您可以查看一般的NPAPI插件,特别是streaming APIs。我可以想象你创建了一个同时注册了audio / mpeg MIME类型的插件,并通过NPP_NewStreamNPP_WriteReadyNPP_Write方法接收数据。该插件可以包装到Chrome扩展程序中。虽然我制作了NPAPI插件,但我从未使用过这个API,而且我不确定它是否会按预期工作。尽管如此,我在这里提到了这种可能性。这种方法需要一些编码而不是网络编码,这意味着C / C ++。 NB。自2015年9月起,Chrome不推荐使用NPAPI插件,不受支持。

  4. 考虑到你有一些外部(对扩展名)“指纹识别服务”,这听起来像一个智能数据处理,你可能有兴趣从浏览器构建所有系统。例如,您可能会涉及HTTP代理,从而使媒体不会传递流量。

答案 1 :(得分:3)

使用soundflower的Mac OSX解决方案:http://rogueamoeba.com/freebies/soundflower/

安装soundflower之后,它应该在声音首选项中显示为单独的音频设备(苹果>系统首选项>声音)。将计算机的音频转移到2ch选项(立体声,16ch环绕),然后在DAW内部,例如'audacity',将音频输入设置为soundflower。现在声音应该被引导到你的DAW准备录音。

注意:将音频从内置扬声器转移到soundflower,如果'soundflowerbed'应用程序实际打开,您将只能听到音频。如果右上角的任务栏中有一个8腿的blob,你知道它是开放的。单击此图标可为您提供声音花卉选项。

答案 2 :(得分:3)

如果您正在撰写Chrome扩展程序,则可以使用Chrome tabCapture API录制音频。

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

剩下的作为练习留给读者; MDN对如何使用MediaRecorder有more documentation

2013年提出此问题时,chrome.tabCapture和MediaRecorder都不存在。

答案 3 :(得分:1)

我的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

所以我得到了流网址并记录下来:

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

我收到了可以在任何多媒体中复制的文件。