【问题标题】:How many audio codecs are supported in Android RTSP streaming protocol?Android RTSP 流媒体协议支持多少个音频编解码器?
【发布时间】:2015-06-02 09:28:36
【问题描述】:

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 audio streaming rtsp rtsp-client


    【解决方案1】:

    支持的编解码器可能因设备而异。例如,某些设备可能决定只支持专利/免版税编解码器(不知道,但作为一个例子......)。

    您可以使用 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 中定义的编码的有效负载类型。”。请记住,这并不意味着每个设备都将支持每个编解码器。查看此链接上的信息可能会有所帮助,该信息解释了如何将新编解码器添加到框架中(在非常低的级别) - 请参阅“将编解码器暴露给框架':source.android.com/devices/media.html
    • 我从谷歌官方代码中读取media_profiles.xml,发现 ,是不是只有amrnb、amrwb和aac 可以用于 rtsp 流媒体吗?谢谢。
    • @Michael.Zhou - 请参阅上面的更多解释添加到答案。您正在正确阅读上面的 XML,但对于同一设备(链接中示例中的 moto Wingray)还有一个 media_codecs.xml 文件,其中包含更广泛的音频编解码器。您可能值得您编写一个简单的测试代码来使用 getCodecs() 方法查询编解码器,然后将它们写入您要使用的设备的日志 - 这应该会给您完整的列表(我不是确定它是否可以在模拟器上运行,所以我会在真实设备上进行测试)。
    猜你喜欢
    • 1970-01-01
    • 2014-01-29
    • 1970-01-01
    • 2016-06-12
    • 2019-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-07
    相关资源
    最近更新 更多