Android однозадачный или многозадачный и многопоточный?

18

Я пытаюсь понять, почему я не могу слушать аудио видео YouTube на моем Galaxy S 2 при переходе в другое приложение, например, читая статью в википедии в браузере.

Есть ли какие-либо архитектурные ограничения, которые препятствуют этому в Gingerbread (надеюсь, будут удалены в ICS), или это только способ, которым Google сделал приложение YouTube?

Изменить : сегодня опробовал приложение YouTube в ICS 4.0.3 и ведет себя так же, как в Gingerbread: (((

Давиде Пирас
источник
8
Я предполагаю, что это просто приложение YouTube. Музыка Google (и почти все другие музыкальные приложения, которые я пробовал) будет продолжать воспроизводиться, если приложения переключаются или даже если экран выключен (YouTube останавливается, если экран также выключен).
Дилан Яга
Связанный: android.stackexchange.com/questions/3079/…
поток

Ответы:

17

Рендеринг видео, который должен произойти, даже если приложение не является «активным», но все еще воспроизводится, потребляет намного больше энергии, чем «обычное использование». Поэтому, если вы не «смотрите» видео, оно останавливается, чтобы не тратить драгоценное заряд батареи.

Райан Конрад
источник
да, но для использования YouTube в качестве радио, он может отключить рендеринг видео и воспроизводить только аудио! :)
Давиде Пирас
6
Вы могли бы - но это просто не то, как разработано приложение Youtube;)
lxgr
19

Это не ограничение Android, а «особенность» приложения Youtube для сохранения ресурсов.

Если вы хотите использовать Youtube в качестве музыкального проигрывателя, я думаю, вы сможете найти приложение, которое позволит вам делать именно это на рынке.

TubeMate позволяет вам слушать только аудио из файла Youtube (хотя вы должны скачать его заранее), и это должно работать в фоновом режиме.

lxgr
источник
3

Если вы хотите приложение для Android, которое бы позволяло гибко управлять потоковыми протоколами Youtube таким образом, чтобы поддерживать выбор только аудио части медиапотока при отбрасывании видеодорожки, следите за VLC для Android . Он все еще находится в стадии разработки, но, вероятно, будет включать функцию «только аудио».

С технической точки зрения это помогает разбить проблему на доступные сетевые протоколы Youtube для потоковой передачи мультимедиа RTSP., Спецификации RTSP позволяют клиенту сделать запрос с помощью команды DESCRIBE, на которую сервер отвечает сегментом данных SDP (подробности см. Ниже). Серверы Youtube могут отвечать различными протоколами, отправляя базовые потоки, которые, в свою очередь, используют различные кодировки - одну для аудио, одну для видео - для передачи битов мультимедиа по сети клиенту. В мобильных сетях функция, которая идет на YouTube для получения аудио- и видеодорожек перед удалением видео при воспроизведении только аудио, не является хорошей практикой из-за высокой нагрузки на сеть для неиспользуемого видеопотока. Вы можете обойти неэффективность сети с помощью дальнейшего технического анализа.

Стандарты RTSP и SDP, соблюдаемые Youtube, позволяют потоковому клиенту (устройству Android) запрашивать ТОЛЬКО аудио на этапах рукопожатия клиент / сервер и этапах согласования настройки сетевого соединения, которое будет выполнять потоковую передачу мультимедиа. В этом случае видео не будет отправлено, а проигрыватель Android будет настроен только на аудиопоток. Ниже приводятся некоторые подробности команды CLI и некоторые детали протокола в этом сценарии «только для аудио YouTube».

YouTube-дорожка формата 1 только для аудиодорожки для определенного видео доступна по следующему URI RTSP:

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

Из URI RTSP для всего видео (аудиодорожка плюс видеодорожка) в следующем выражении CLI используются 2 медиа-клиента openRTSP и mPlayer, идущие на Youtube, где он затем ПОЛУЧАЕТ / ИГРАЕТ только аудиодорожку Youtube, запрашивая только 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

Это выражение CLI дополнительно описано в ссылке внизу.

Каналы YouTube описывают доступные форматы потоков для любого видео Youtube, включая URI RTSP, упомянутые выше. Техническое объяснение потоковых форматов Youtube см. В записи «format» 1,5,6 в длинной таблице.

Следующий запрос получает канал с Youtube, который включает различные URI RTSP различного формата, доступные для этого конкретного видео:

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

Окровавленная Подробная информация о подключаемом RTSP сеансе , в котором полное описание SDP испрашиваются для конкретного видео YouTube и так , что только звуковая дорожка может быть потоковыми / Воспроизводится здесь .

Ключ к пронумерованным строкам в ссылке выше:

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
источник