Android4.0.1中各个Player的功能

1. Android4.0.1中默认定义了4个真正的Player,具体情况如下:

static sp<MediaPlayerBase> createPlayer(player_type playerType, void* cookie,
        notify_callback_f notifyFunc)
{
    sp<MediaPlayerBase> p;
    switch (playerType) {
        case SONIVOX_PLAYER:
            LOGV(" create MidiFile");
            p = new MidiFile();
            break;
        case STAGEFRIGHT_PLAYER:
            LOGV(" create StagefrightPlayer");
            p = new StagefrightPlayer;
            break;
        case NU_PLAYER:
            LOGV(" create NuPlayer");
            p = new NuPlayerDriver;
            break;
        case TEST_PLAYER:
            LOGV("Create Test Player stub");
            p = new TestPlayerStub();
            break;
        default:
            LOGE("Unknown player type: %d", playerType);
            return NULL;
    }
    if (p != NULL) {
        if (p->initCheck() == NO_ERROR) {
            p->setNotifyCallback(cookie, notifyFunc);
        } else {
            p.clear();
        }
    }
    if (p == NULL) {
        LOGE("Failed to create player object");
    }
    return p;
}


2. 每个Player的专长是什么呢?

Player TypeFeature Description
TEST_PLAYERurl以test:开始的。如test:xxx
NU_PLAYERurl以http://或https://开始的,且url以.m3u8结束或url中包含有m3u8字符串
SONIVOX_PLAYER处理url中扩展名为:.mid,.midi,.smf,.xmf,.imy,.rtttl,.rtx,.ota的媒体文件
STAGEFRIGHT_PLAYER它是一个大好人,前面三位不能处理的都交给它来处理,不知能力是否有如此强大

以上言论以代码为证,获取player type的代码如下:

player_type getPlayerType(const char* url)
{
    if (TestPlayerStub::canBeUsed(url)) {
        return TEST_PLAYER;
    }

    if (!strncasecmp("http://", url, 7)
            || !strncasecmp("https://", url, 8)) {
        size_t len = strlen(url);
        if (len >= 5 && !strcasecmp(".m3u8", &url[len - 5])) {
            return NU_PLAYER;
        }

        if (strstr(url,"m3u8")) {
            return NU_PLAYER;
        }
    }

    // use MidiFile for MIDI extensions
    int lenURL = strlen(url);
    for (int i = 0; i < NELEM(FILE_EXTS); ++i) {
        int len = strlen(FILE_EXTS[i].extension);
        int start = lenURL - len;
        if (start > 0) {
            if (!strncasecmp(url + start, FILE_EXTS[i].extension, len)) {
                return FILE_EXTS[i].playertype;
            }
        }
    }

    return getDefaultPlayerType();
}

如果你想增加自己的player,以上两个函数都需要修改。

现在对整个媒体系统基本上有一个清晰的框架了,就突发奇想,到底在StagefrightPlayer如何增加自己的硬件解码呢? 很好奇,想一探究竟...

 

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要下载Android Studio 4.0.1,首先需要确保您的计算机系统符合下载要求,例如操作系统版本、处理器类型和运行内存等。然后,您可以访问Android Studio的官方网站,在下载页面上选择合适的下载包,如Windows版、macOS版或Linux版。在下载之前,您还需同意开源许可协议,以便使用Android Studio并获得最新的更新。下载完成后,您就可以运行安装程序进行安装。在安装过程,您需要确认一些设置,如安装位置、应安装的工具和选项等,同时还需保证网络连接正常以便下载所需的库文件和模板。安装完成后,请在启动Android Studio之前确认您的计算机性能满足最低要求,否则可能会影响应用程序开发效率和体验。如果需要更多安装指导和使用教程,请参考官方文档和社区论坛等资源。 ### 回答2: 要下载Android Studio 4.0.1,首先您需要访问Android官方网站,选择下载页面。在这个页面上,您将看到最新版本的Android Studio已经被列出了。然后,您可以点击“Download”按钮,以开始下载Android Studio 4.0.1。 当然,在下载之前,您需要确认您的个人电脑或笔记本电脑已经满足了Android Studio的最小要求,如1.6 GHz的64位处理器,4GB RAM,和至少2GB的硬盘空间等等。 一旦下载完成,您需要打开安装程序并完成安装。在安装过程,安装程序将提示您选择安装组件和安装位置等。一旦所有的步骤都完成,Android Studio 4.0.1就会被完全安装,并准备为您创建和开发Android应用程序。 您还可以更新现有的Android Studio软件,以便升级到最新的4.0.1版本。只需执行软件的“检查更新”操作,软件会自动检测并下载升级,并按照上述过程进行安装。 总的来说,下载和安装Android Studio 4.0.1是非常简单的。因为Android Studio是由Google官方发布的,因此您可以放心使用它来构建和开发您的Android应用程序。 ### 回答3: Android Studio是由Google开发的开发工具,旨在为开发人员提供最佳的Android应用程序开发体验。在Android Studio,可以使用Java、Kotlin等编程语言来开发应用程序,并且提供丰富的工具和组件库来简化开发过程。 要下载Android Studio 4.0.1,可以直接访问官方网站进行下载。安装过程非常简单,只需要按照提示操作即可。安装完成后,开发人员可以开始使用Android Studio创建项目、添加依赖关系、编写代码并生成应用程序。此外,Android Studio还提供了实时预览等功能,方便开发人员在开发过程进行测试和调试。 总之,Android Studio是一款非常强大、易于使用的Android开发工具。通过下载和使用Android Studio 4.0.1,开发人员可以轻松地创建高质量、高效率的Android应用程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值