Сколько аудиокодеков поддерживает потоковый протокол Android RTSP?

Сколько аудиокодеков поддерживается в потоковом протоколе Android RTSP. Я работаю над потоковой передачей RTSP для Android, легко реализовать потоковый клиент для Android RTSP.

import android.media.MediaPlayer;
MediaPlayer player = new MediaPlayer();
player.setDataSource(RTSP_URL);
player.prepare();
player.start();

Но список поддерживаемых аудиоречевых / медиакодеков не указан ни в обзоре / справочнике Android API, ни в спецификации RFC.

Может ли кто-нибудь помочь поделиться историей об этом?


person Michael.Zhou    schedule 02.06.2015    source источник


Ответы (1)


Поддерживаемые кодеки могут отличаться для разных устройств. Например, некоторые устройства могут решить поддерживать только кодеки без патентов и лицензионных отчислений (не знаю ни одного, но в качестве примера ...).

Вы можете найти список кодеков, программно поддерживаемых конкретным устройством, с помощью метода getCodecs () AudioCodec:

public static AudioCodec[] getCodecs ()

Одна из целей SDP (протокола описания сеанса) состоит в том, чтобы позволить любой стороне соединения согласовывать, какие кодеки использовать из набора, который они оба поддерживают.

В документации Android объясняется, как кодеки «открываются» разработчикам приложений:

Служба Stagefright анализирует систему / etc / media_codecs.xml и систему / etc / media_profiles.xml, чтобы предоставить поддерживаемые кодеки и профили на устройстве разработчикам приложений через классы android.media.MediaCodecList и android.media.CamcorderProfile.

Это описывает метод, который кто-то (например, поставщик устройства), добавляющий кодек на устройство, использует, чтобы сделать этот кодек доступным для тех, кто разрабатывает приложения (например, обычные разработчики приложений) на устройстве.

После добавления кодеков таким образом они будут возвращены при вызове вышеуказанного метода getCodecs ().

person Mick    schedule 02.06.2015
comment
Но соответствует ли поддержка кодеков списку поддержки кодеков мультимедиа Android, определенному в CDD? или конкретный список поддерживаемых кодеков, определенный в других спецификациях? - person Michael.Zhou; 03.06.2015
comment
Если вы имеете в виду, использует ли он тот же тип «числа», то да, я думаю, что это должно быть, и в документации говорится: type Тип полезной нагрузки кодировки, определенной в RTP / AVP. '. Помните, что это не означает, что каждое устройство будет поддерживать каждый кодек. Возможно, вам будет полезно просмотреть информацию по этой ссылке, которая объясняет, как новые кодеки добавляются в структуру (на очень низком уровне) - см. Раздел «Предоставление кодеков для платформы»: source.android.com/devices/media.html. - person Mick; 03.06.2015
comment
Я прочитал media_profiles.xml из официального кода Google и обнаружил ‹! ELEMENT Audio EMPTY› ‹! ATTLIST Аудиокодек (amrnb | amrwb | aac) # ТРЕБУЕТСЯ›, означает ли это, что в rtsp можно использовать только amrnb, amrwb и aac потоковое? Спасибо. - person Michael.Zhou; 03.06.2015
comment
@ Michael.Zhou - см. Выше, где к ответу добавлено немного дополнительных объяснений. Вы правильно читаете этот XML выше, но для того же устройства (moto Wingray в примере по вашей ссылке) также есть файл media_codecs.xml, который содержит более широкий спектр аудиокодеков. Вероятно, стоило бы вам написать простой тестовый фрагмент кода для запроса кодеков с помощью метода getCodecs (), а затем записать их в журналы для устройства, которое вы хотите использовать - это должен дать вам полный список (я не уверен, будет ли он работать на эмуляторе, поэтому я бы протестировал на реальном устройстве). - person Mick; 04.06.2015