Android est-il une tâche unique ou multitâche et multithreading?


18

J'essaie de comprendre pourquoi je ne peux pas continuer à écouter l'audio d'une vidéo YouTube sur mon Galaxy S 2 lorsque je passe à une autre application, par exemple en lisant un article wikipedia sur le navigateur.

y a-t-il une limitation architecturale qui empêche cela dans Gingerbread (espérons-le sera supprimé dans ICS) ou est-ce uniquement la façon dont Google a créé l'application YouTube?

Edit : a testé l'application YouTube dans ICS 4.0.3 aujourd'hui et se comporte de la même manière que dans Gingerbread: (((


8
Je suppose que ce n'est que l'application YouTube. Google Music (et presque toutes les autres applications musicales que j'ai essayées) continuera à jouer si les applications sont commutées, ou même si l'écran est éteint (YouTube s'arrête si l'écran est également éteint).
Dylan Yaga

Réponses:


17

Le rendu vidéo, qui devrait se produire même si l'application n'est pas "active" mais en cours de lecture, va utiliser beaucoup plus de batterie que "l'utilisation normale". Donc, si vous ne "regardez" pas la vidéo, elle s'arrête afin de ne pas gaspiller la précieuse batterie.


oui mais pour utiliser YouTube comme radio, cela pourrait désactiver le rendu vidéo et ne lire que l'audio! :)
Davide Piras

6
Vous pourriez - mais ce n'est tout simplement pas la façon dont l'application Youtube est conçue;)
lxgr

19

Ce n'est pas une limitation d'Android, mais une "fonctionnalité" de l'application Youtube pour économiser les ressources.

Si vous souhaitez utiliser Youtube comme lecteur de musique, je pense que vous devriez pouvoir trouver une application qui vous permet de faire exactement cela sur le marché.

TubeMate vous permet d'écouter uniquement l'audio d'un fichier Youtube (vous devez cependant le télécharger à l'avance), et cela devrait fonctionner en arrière-plan.


3

Si vous voulez une application Android qui permettrait une gestion flexible des protocoles de streaming Youtube d'une manière qui ne prendrait en charge que la sélection de la partie audio du flux multimédia tout en supprimant la piste vidéo, gardez un œil sur VLC pour Android . Il est toujours «en cours de développement» mais traitera probablement de la fonction «audio uniquement».

D'un point de vue plus technique, il permet de décomposer le problème en protocoles réseau Youtube disponibles pour le streaming multimédia RTSP. Les spécifications RTSP permettent à un client de faire une demande à l'aide de la commande DESCRIBE à laquelle le serveur répond avec un segment de données SDP (voir les détails ci-dessous). Les serveurs Youtube peuvent répondre dans une variété de protocoles, envoyant des flux sous-jacents qui à leur tour utilisent une variété d'encodages - un pour l'audio, un pour la vidéo - pour transférer les bits multimédias à travers le réseau vers le client. Sur les réseaux mobiles, une fonctionnalité qui va sur YouTube afin de recevoir à la fois des pistes audio et vidéo avant de supprimer la vidéo pendant la lecture uniquement de l'audio n'est pas une bonne pratique en raison de la forte exigence du réseau pour le flux vidéo inutilisé. Vous pouvez contourner l'inefficacité du réseau grâce à un approfondissement technique supplémentaire.

Les normes RTSP et SDP observées par Youtube permettraient à un client de streaming (appareil Android) de demander UNIQUEMENT l'audio pendant les étapes de négociation du client / serveur et les étapes de négociation autour de la configuration de la connexion réseau qui fera le streaming multimédia. Dans ce cas, aucune vidéo ne serait envoyée et le lecteur Android serait configuré sur un flux audio uniquement. Certains détails de commande CLI et certains détails de protocole sur ce scénario «audio YouTube uniquement» suivent.

Une piste audio YouTube au format 1 uniquement pour une vidéo particulière est disponible à l'URI RTSP suivant:

rtsp://v8.cache8.c.youtube.com/CigLENy73wIaHwlcw_gs85OUchMYDSANFEgGUgx1c2VyX3VwbG9hZHMM/0/0/0/video.3gp

À partir de l'URI RTSP pour l'intégralité de la vidéo (piste audio plus piste vidéo), l'expression CLI suivante utilise 2 clients multimédias openRTSP et mPlayer allant sur Youtube où elle OBTIENT / LECTURE uniquement la piste audio Youtube en demandant uniquement channel = 1 .

./openRTSP -a rtsp://v8.cache8.c.youtube.com/CigLENy73wIaHwlcw_gs85OUchMYDSANFEgGUgx1c2VyX3VwbG9hZHMM/0/0/0/video.3gp | ./mplayer -cache 8092 - -rawaudio channels=1:rate=8000:samplesize=2:format=0x73616D72

Cette expression CLI est décrite plus en détail dans un lien en bas.

Les «flux» Youtube décrivent les formats de flux disponibles pour toute vidéo Youtube, y compris les URI RTSP mentionnés ci-dessus. Pour une explication technique des formats de streaming Youtube , voir l'entrée «format» 1,5,6 dans le long tableau.

La demande suivante obtient un flux de Youtube qui comprend les URI RTSP de différents formats disponibles pour cette vidéo particulière:

http://gdata.youtube.com/feeds/api/users/rowntreerob/uploads?vq=cpST8yz4w1w&prettyprint='true'

Les détails sanglants d'une session RTSP connectée dans laquelle la description SDP complète est demandée pour une vidéo youtube particulière afin que seule la piste audio puisse être diffusée / lue sont ici .

Clé des lignes numérotées dans le lien ci-dessus:

82 – the RTSP DESCRIBE request
101 – the SDP response
103 – video track’s format
116 – the attributes describing the audio track
line 165 – the audio track setup by the player
184 – the audio-only playback
201 – using a separate CLI expression this is playback of a previous download on just the audio track
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.