Est-il possible pour une extension Chrome d'écouter du streaming audio à partir de n'importe quel onglet du navigateur? Je voudrais capturer les données audio en streaming puis les analyser.
Merci
Vous pouvez essayer de 3 façons, ni l'une ni l'autre n'offre une garantie à 100% pour répondre à vos besoins.
Avant d'entrer dans des descriptions plus détaillées, je dois noter que Chrome ne fournissent pas d'outils pratiques pour travailler sur chaque niveau de connexion - suffisamment bas niveau , requis pour la capture de flux. Ceci est de par leur conception. C'est pourquoi la 1ère manière est:
Pour regarder d'autres navigateurs, par exemple Firefox, qui fournit des API de bas niveau pour les connexions. Ils sont déjà connus pour être utilisés par des extensions similaires. Vous pouvez voir MediaStealer . Si vous n'avez pas d'exigence spécifique pour construire votre système sur Chrome, vous devriez éventuellement passer à Firefox.
Vous pouvez développer une Chrome, qui intercepte les requêtes HTTP au moyen de l'API webRequest , analyse leurs en-têtes et extrait les URL des médias (comme contenir du MIME audio/mpeg) tapez, par exemple, dans les en-têtes HTTP.) Juste pour un exemple rapide de code, vous regardez la suivante SO question - Comment changer l'en-tête de réponse dans Chrome . En ayant l'URL, vous pouvez forcer le téléchargement du support approprié en tant que fichier. Il atterrira dans le dossier de téléchargements par défaut et peut avoir un nom peu convivial. (J'ai fait une telle extension, mais je n'ai pas d'exigences pour un traitement ultérieur). Si vous avez besoin de continuer traiter ces fichiers, il peut être difficile de les surveiller dans le dossier et d'exécuter une analyse supplémentaire dans un programme distinct.
Vous pouvez jeter un œil aux plugins NPAPI en général, et à leurs API de streaming en particulier. Je peux imaginer que vous créez un plugin enregistré pour, encore une fois, de type MIME audio/mpeg, et que vous recevez les données via NPP_NewStream
, NPP_WriteReady
et NPP_Write
méthodes. Le plugin peut être enveloppé dans une extension Chrome. Bien que j'aie créé des plugins NPAPI, je n'ai jamais utilisé cette API, et je ne suis pas sûr qu'elle fonctionnera comme prévu. Néanmoins, je le mentionne Cette méthode nécessite un codage autre que le codage Web, ce qui signifie C/C++. NB. Les plugins NPAPI sont obsolètes et ne sont pas pris en charge dans Chrome depuis septembre 2015.
Étant donné que vous avez en tête un "service d'empreintes digitales" externe (à l'extension), qui ressemble à un traitement de données intelligent, vous pourriez être intéressé à construire tout le système à partir d'un navigateur. Par exemple, vous pourriez éventuellement impliquer un proxy HTTP, ce qui éviterait aux médias de passer du trafic.
Si vous écrivez une extension Chrome, vous pouvez utiliser Chrome tabCapture API pour enregistrer de l'audio.
chrome.tabCapture.capture({audio: true}, function(stream) {
var recorder = new MediaRecorder(stream);
[...]
});
Le reste est laissé comme exercice au lecteur; MDN a plus de documentation sur la façon d'utiliser MediaRecorder.
Lorsque cette question a été posée en 2013, ni chrome.tabCapture ni MediaRecorder n'existaient.
Solution Mac OSX utilisant soundflower: http://rogueamoeba.com/freebies/soundflower/
Après avoir installé soundflower, il devrait apparaître comme un périphérique audio séparé dans les préférences sonores (Apple> préférences système> son). Déviez l'audio de l'ordinateur vers l'option 2 canaux (stéréo, 16 canaux est surround), puis à l'intérieur d'une station de travail audionumérique, telle que "audace", définissez l'entrée audio comme une fleur sonore. Maintenant, le son doit être canalisé vers votre DAW prêt à être enregistré.
Remarque: après avoir détourné l'audio des haut-parleurs internes vers soundflower, vous ne pourrez entendre l'audio que si l'application 'soundflowerbed' est réellement ouverte. Vous savez qu'il est ouvert s'il y a un blob à 8 pattes dans la barre des tâches en haut à droite. Cliquer sur cette icône vous donne les options de fleurs sonores.
Mon privoxy a le journal suivant:
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
J'ai donc reçu l'URL du flux et je l'ai enregistrée:
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
J'ai obtenu le fichier qui peut être reproduit dans n'importe quel pleer multimédia.