Android RTSP流媒体协议支持多少个音频编解码器?

Android RTSP流媒体协议支持多少个音频编解码器?,android,audio,streaming,rtsp,rtsp-client,Android,Audio,Streaming,Rtsp,Rtsp Client,Android RTSP流媒体协议支持多少个音频编解码器。我正在开发Android音频RTSP流媒体,很容易实现Android RTSP流媒体客户端 import android.media.MediaPlayer; MediaPlayer player = new MediaPlayer(); player.setDataSource(RTSP_URL); player.prepare(); player.start(); 但Android API概述/参考和RFC规范中均未指定音频语音/媒

Android RTSP流媒体协议支持多少个音频编解码器。我正在开发Android音频RTSP流媒体,很容易实现Android RTSP流媒体客户端

import android.media.MediaPlayer;
MediaPlayer player = new MediaPlayer();
player.setDataSource(RTSP_URL);
player.prepare();
player.start();
但Android API概述/参考和RFC规范中均未指定音频语音/媒体编解码器支持列表

有谁能帮忙分享一下它的背景吗


每个设备支持的编解码器可能不同。例如,一些设备可能决定只支持专利/免版税编解码器(不知道有,但作为示例…)

您可以使用AudioCodec的getCodecs()方法找到特定设备以编程方式支持的编解码器列表:

public static AudioCodec[] getCodecs ()
SDP(会话描述协议)的目的之一是允许连接的任意一端协商从它们都支持的集合中使用哪些编解码器

Android文档解释了编解码器如何“公开”给应用程序开发人员:

Stagefright服务解析system/etc/media_codecs.xml和system/etc/media_profiles.xml,通过android.media.MediaCodecList和android.media.CamcorderProfile类向应用程序开发人员公开设备上受支持的编解码器和配置文件

这是指向设备添加编解码器的人员(如设备供应商)使用的方法,以使在设备上开发应用程序的人员(如普通应用程序开发人员)可以使用该编解码器


一旦以这种方式编解码器,调用上述getCodecs()方法时将返回它们。

但是编解码器支持是否遵循CDD中定义的Android媒体编解码器支持列表?或者其他规范中定义的特定编解码器支持列表?如果您的意思是它是否使用相同类型的“数字”,那么,是的,我认为它必须使用,文档中说:“键入RTP/AVP中定义的编码的有效负载类型。”。记住,这并不意味着每个设备都支持每个编解码器。查看此链接中的信息可能会有所帮助,该链接解释了如何将新的编解码器添加到框架中(在非常低的级别)-请参阅“向框架公开编解码器”一节:我从Google官方代码中阅读并发现,这是否意味着rtsp流媒体中只能使用amrnb、amrwb和aac?谢谢。@Michael.Zhou-请参阅上文,以获得答案中添加的更多解释。您正在正确读取上述XML,但对于同一设备(链接中示例中的moto Wingray),还有一个media_codecs.XML文件,其中包含更广泛的音频编解码器。可能值得您编写一段简单的测试代码,使用getCodecs()方法查询编解码器,然后将它们写入要使用的设备的日志中——这应该会给出完整的列表(我不确定它是否能在模拟器上工作,因此我将在真实设备上进行测试)。