Google chrome Chrome扩展,用于收听和捕获流媒体音频

Google chrome Chrome扩展,用于收听和捕获流媒体音频,google-chrome,audio,google-chrome-extension,audio-streaming,audio-capture,Google Chrome,Audio,Google Chrome Extension,Audio Streaming,Audio Capture,Chrome扩展是否可以监听来自任何浏览器选项卡的流式音频?我想捕获流式音频数据,然后对其进行分析 谢谢您可以尝试三种方法,但都不能提供100%的保证来满足您的需求 在进行更详细的描述之前,我必须注意,Chrome扩展并没有提供方便的工具来处理每个连接级别—足够低的级别,是流捕获所必需的。这是故意的。这就是为什么第一种方式是: 看看其他浏览器,例如Firefox,它为连接提供低级API。已知它们已被类似的扩展使用。你可以看一看。如果您没有在Chrome上构建系统的特定要求,那么您可能应该使用Fi

Chrome扩展是否可以监听来自任何浏览器选项卡的流式音频?我想捕获流式音频数据,然后对其进行分析


谢谢

您可以尝试三种方法,但都不能提供100%的保证来满足您的需求

在进行更详细的描述之前,我必须注意,Chrome扩展并没有提供方便的工具来处理每个连接级别—足够低的级别,是流捕获所必需的。这是故意的。这就是为什么第一种方式是:

  • 看看其他浏览器,例如Firefox,它为连接提供低级API。已知它们已被类似的扩展使用。你可以看一看。如果您没有在Chrome上构建系统的特定要求,那么您可能应该使用Firefox

  • 您可以开发一个Chrome扩展,它通过API拦截HTTP请求,分析它们的头并提取媒体URL(例如,在HTTP头中包含音频/mpeg MIME类型)。下面是一个简单的代码示例,请看下面的问题-。有了url,您可以强制将适当的媒体下载为文件。它将降落在默认下载文件夹中,可能有不友好的名称。(我做了这样的扩展,但我没有进一步处理的要求)。如果您需要进一步处理这些文件,那么在文件夹中监视它们并在单独的程序中运行其他分析可能是一个挑战

  • 您可以大致了解NPAPI插件,尤其是它们的插件。我可以想象,您创建了一个为音频/mpeg MIME类型注册的插件,并通过
    NPP\u NewStream
    NPP\u writerady
    NPP\u Write
    方法接收数据。该插件可以包装成一个Chrome扩展。虽然我制作了NPAPI插件,但我从未使用过这个API,我也不确定它是否能像预期的那样工作。不过,我在这里要提到的是,对于完美主义者的这种可能性。这种方法需要一些编码,而不是web编码,即C/C++。注意。NPAPI插件已弃用,自2015年9月以来不受Chrome支持


  • 考虑到您考虑了一些外部(扩展)“指纹服务”,这听起来像是一种智能数据处理,您可能有兴趣使用浏览器构建所有系统。例如,您可能需要使用HTTP代理,以防止媒体通过流量。

    My 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
    
    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'
    正在解析pub7.di.fm。。。完成。
    连接到pub7.di.fm[67.221.255.50]:80。。。有联系的。
    HTTP请求已发送,正在等待响应。。。200行
    长度:未指定[视频/x-flv]
    []1234151 8.96K/s
    

    我得到了可以在任何多媒体播放器中复制的文件。

    使用soundflower的Mac OSX解决方案:

    安装soundflower后,它应该作为一个单独的音频设备出现在“声音首选项”(apple>系统首选项>声音)中。将电脑音频切换到2ch选项(立体声,16ch环绕),然后在DAW内,如“audacity”,将音频输入设置为soundflower。现在,声音应该被引导到您的DAW,准备录制


    注意:将音频从内部扬声器转移到soundflower后,只有在“soundflowerbed”应用程序实际打开时,您才能听到音频。你知道如果右上任务栏中有一个8条腿的斑点,它是打开的。单击此图标可提供声音花选项。

    如果您正在编写Chrome扩展,则可以使用录制音频

    chrome.tabCapture.capture({audio: true}, function(stream) {
      var recorder = new MediaRecorder(stream);
      [...]
    });
    
    其余部分留给读者作为练习;MDN对如何使用MediaRecorder进行了详细介绍


    2013年,当我问这个问题时,chrome.tabCapture和MediaRecorder都不存在。

    在我的脑海中(最初的谷歌搜索也支持这个问题),我找不到任何方法来做到这一点。这听起来像是一个巨大的安全漏洞,所以我无法想象任何浏览器会急于支持它。你必须听音频吗?你能监视网络请求吗?这适用于任何站点,还是某个特定站点?你是针对所有平台,还是仅仅针对一个平台?我想获取流式音频数据(比如来自在线广播节目)并将其发送到音频指纹服务。理想情况下,它可以在任何网站上运行,我可能会从Chrome开始。如果流式音频附带音频对象,并且不在iframe中,那么你不能用AudioContext对象“抓取”它,例如操纵流。差不多