czy system Android to jedno zadanie czy wielozadaniowość i wielowątkowość?

18

Próbuję zrozumieć, dlaczego nie mogę słuchać dźwięku wideo z YouTube'a na moim Galaxy S 2, przechodząc do innej aplikacji, na przykład czytając artykuł w Wikipedii w przeglądarce.

czy istnieją jakieś ograniczenia architektoniczne, które to uniemożliwiają w Piernikowym (mam nadzieję, że zostaną usunięte w ICS), czy to tylko sposób, w jaki Google stworzył aplikację YouTube?

Edycja : wypróbowałem dzisiaj aplikację YouTube w ICS 4.0.3 i zachowuje się tak samo jak w Gingerbread: (((

Davide Piras
źródło
8
Zakładam, że to tylko aplikacja YouTube. Muzyka Google (i prawie każda inna aplikacja muzyczna, którą wypróbowałem) będzie nadal odtwarzana, jeśli aplikacje zostaną przełączone, a nawet jeśli ekran zostanie wyłączony (YouTube zatrzyma się również, gdy ekran zostanie wyłączony).
Dylan Yaga,

Odpowiedzi:

17

Renderowanie wideo, które musiałoby się zdarzyć, nawet jeśli aplikacja nie jest „aktywna”, ale nadal gra, będzie zużywać znacznie więcej baterii niż „normalne użytkowanie”. Więc jeśli nie „oglądasz” filmu, zatrzymuje się on, aby nie marnować cennej energii baterii.

Ryan Conrad
źródło
tak, ale użycie YouTube jako radia może wyłączyć renderowanie wideo i odtwarzać tylko dźwięk! :)
Davide Piras
6
Mógłbyś - ale to po prostu nie jest tak zaprojektowana aplikacja Youtube;)
lxgr
19

Nie jest to ograniczenie Androida, ale „funkcja” aplikacji Youtube do oszczędzania zasobów.

Jeśli chcesz używać Youtube jako odtwarzacza muzyki, myślę, że powinieneś być w stanie znaleźć aplikację, która pozwoli ci zrobić to dokładnie na rynku.

TubeMate pozwala słuchać tylko dźwięku z pliku Youtube (musisz go jednak pobrać wcześniej), i to powinno działać w tle.

Lxgr
źródło
3

Jeśli potrzebujesz aplikacji na Androida, która umożliwiałaby elastyczne zarządzanie protokołami strumieniowymi Youtube w sposób, który wspierałby wybór tylko części audio strumienia multimediów podczas odrzucania ścieżki wideo, miej oko na VLC dla Androida . Nadal jest „w fazie rozwoju”, ale prawdopodobnie dotyczyłby funkcji „tylko dźwięk”.

Z bardziej technicznego punktu widzenia pomaga rozbić ten problem na dostępne protokoły sieciowe Youtube do przesyłania strumieniowego multimediów RTSP. Specyfikacje RTSP pozwalają klientowi na wysłanie żądania za pomocą polecenia DESCRIBE, na które serwer odpowiada segmentem danych SDP (patrz szczegóły poniżej). Serwery Youtube mogą odpowiadać na różne protokoły, wysyłając bazowe strumienie, które z kolei używają różnych kodowań - jednego dla audio, jednego dla wideo - do przesyłania bitów multimediów przez sieć do klienta. W sieciach komórkowych funkcja, która trafia na youtube w celu odbierania zarówno ścieżek audio, jak i wideo przed odrzuceniem wideo podczas odtwarzania samego dźwięku, nie jest dobrą praktyką ze względu na duże wymagania sieciowe dla nieużywanego strumienia wideo. Można obejść nieefektywność sieci dzięki dodatkowym szczegółowym analizom technicznym.

Standardy RTSP i SDP przestrzegane przez Youtube pozwoliłyby klientowi przesyłającemu strumieniowo (urządzeniu z Androidem) żądać TYLKO dźwięku podczas kroków uzgadniania klient / serwer i kroków negocjacyjnych wokół konfiguracji połączenia sieciowego, która przeprowadzi strumieniowanie multimediów. W takim przypadku nie zostanie przesłane żadne wideo, a odtwarzacz Android zostanie skonfigurowany w strumieniu tylko audio. Poniżej podano niektóre szczegóły polecenia CLI i niektóre szczegóły protokołu w tym scenariuszu „Tylko dźwięk z YouTube”.

Ścieżka audio w formacie YouTube tylko dla określonego wideo jest dostępna pod następującym identyfikatorem URI RTSP:

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

Z identyfikatora URI RTSP dla całego wideo (ścieżka audio plus ścieżka wideo) poniższe wyrażenie CLI korzysta z 2 klientów mediów openRTSP i mPlayer przechodzących na Youtube, gdzie następnie GETS / PLAYS tylko ścieżkę audio Youtube, żądając tylko kanału = 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

To wyrażenie CLI jest dalej opisane w linku na dole.

„Kanały” na YouTube opisują dostępne formaty strumieniowe dla dowolnego filmu na Youtube, w tym wspomniane powyżej URI RTSP. Aby uzyskać wyjaśnienie techniczne formatów przesyłania strumieniowego w YouTube , zobacz pozycję „format” 1,5,6 w długiej tabeli.

Następujące żądanie pobiera kanał z Youtube, który zawiera różnorodnie sformatowane identyfikatory URI RTSP dostępne dla tego konkretnego filmu:

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

Krwawe szczegóły połączonej SESJI RTSP, w której wymagany jest pełny opis SDP dla konkretnego filmu na youtube, tak aby można było strumieniowo / odtwarzać tylko ścieżkę audio tutaj .

Klucz do linii numerowanych w powyższym linku:

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
rowntreerob
źródło