标签: opencore

MediaCodec如何在Android框架内找到编解码器?

我试图了解MediaCodec如何用于硬件解码.

我在android内部的知识非常有限.

以下是我的发现:

有一个xml文件,代表android系统中的编解码器细节.

 device/ti/omap3evm/media_codecs.xml for an example. 
Run Code Online (Sandbox Code Playgroud)

这意味着,如果我们使用Media Codec从Java Application创建编解码器

MediaCodec codec = MediaCodec.createDecoderByType(type);
Run Code Online (Sandbox Code Playgroud)

应该在xml文件的帮助下找出各自的编码器.

我在做什么?

我试图找出代码的哪一部分正在读取xml并根据给定的'type'找到编解码器.

1)应用层:

   MediaCodec codec = MediaCodec.createDecoderByType(type);
Run Code Online (Sandbox Code Playgroud)

2)MediaCodec.java - > [ frameworks/base/media/java/android/media/MediaCodec.java ]

     public static MediaCodec createDecoderByType(String type) {

    return new MediaCodec(type, true /* nameIsType */, false /* encoder */);
}
Run Code Online (Sandbox Code Playgroud)

3)

private MediaCodec(
        String name, boolean nameIsType, boolean encoder) {
    native_setup(name, nameIsType, encoder);    --> JNI Call.
}
Run Code Online (Sandbox Code Playgroud)

4)JNI实现 - > [ frameworks/base/media/jni/android_media_MediaCodec.cpp ]

static void android_media_MediaCodec_native_setup (..) {
        .......
    const char *tmp = …
Run Code Online (Sandbox Code Playgroud)

android opencore android-internet stagefright openmax

7
推荐指数
1
解决办法
3224
查看次数

VideoView和Progressive下载

在我的应用程序中,我需要为用户提供渐进式下载(视频文件)的预览.

为了实现这一点,我使用VideoView组件来显示正在下载的视频内容(.mp4,.3gpp).

问题是,我无法通过访问远程媒体http://rtsp://协议的,所以我被迫使用VideoView.setVideoPath而下载到播放视频的本地副本.

不幸的是,似乎在Android设备上不能使用StageFright框架(因此OpenCoreTegra2-based我的经验中的一些设备),VideoView无法正确处理渐进式下载:它只能播放组件初始化期间识别的部分视频.

所以要明确的是:如果用户在仅下载了5%的视频时按"播放",则VideoView将仅显示5%的视频,无论是否同时下载了更多的视频内容.

根据我的经验,此问题不会影响使用StageFright框架的设备(例如:Nexus One 2.2,Nexus One 2.3.4).

有人能指出我可能的解决方案吗?提前致谢

android preview progressive-download opencore android-videoview

5
推荐指数
1
解决办法
2201
查看次数