0

我读到如果media.stagefright.enable-player已设置true,则设备使用Stagefright. 在我的设备中,build.prop我看到了

media.stagefright.enable-player = false

当我在下面疲倦时

MediaPlayer mp = new MediaPlayer();
mp.setDataSource(String.format("http://127.0.0.1:%d/", socketPort));
mp.prepare();
mp.start();

我托管了一个媒体播放器连接到的服务器套接字

ServerSocket serverSocket = null;
        try {
            serverSocket = new ServerSocket(0);
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
         socketPort = serverSocket.getLocalPort();

        Socket socket = null;
        try {
            socket = serverSocket.accept();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        InputStream is = null;
        try {
            is = socket.getInputStream();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }

        byte [] temp = new byte [1024];     
        int bsize = -1;
        while(bsize <= 0) {
            try {
                bsize = is.read(temp);
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
        final String readData = new String(temp);
        Log.e("readDta",readData);

我得到的日志是

11-22 15:06:56.656: E/readDta(8737): GET / HTTP/1.111-22 15:06:56.656: E/readDta(8737): Host: 127.0.0.111-22 15:06:56.656: E/readDta(8737): User-Agent: stagefright/1.1 (Linux;Android 2.3.6)

现在我的疑问是,它是如何向我展示User-Agent: stagefright/1.1的?media.stagefright.enable-player = falsebuild.prop

如果这不是确定使用哪个的方法,我如何检测是否opencore or stagefright ?

4

2 回答 2

1

从您的日志中,我觉得Androidis的版​​本可能是默认Froyo 2.2.3版本之前的最后一个版本。Stagefright播放器的选择取决于多种条件,例如它是file来源还是http来源或rtsp来源。

Froyo 2.2.3中,有 2 个用于启用Stagefright播放器的键和一个构建标志。要启用Stagefright播放器进行正常播放,您需要构建框架代码,BUILD_WITH_FULL_STAGEFRIGHT如下所示:http ://androidxref.com/2.2.3/xref/frameworks/base/media/libmediaplayerservice/MediaPlayerService.cpp#670

getDefaultPlayer在多个条件下调用,并且在定义了上述宏的情况下,它会尝试检查系统属性的值"media.stagefright.enable-player"(参考:http ://androidxref.com/2.2.3/xref/frameworks/base/media/libmediaplayerservice /MediaPlayerService.cpp#750 )

在您的http源情况下,有一个不同的系统属性被检查,即"media.stagefright.enable-http". 在您的情况下,我觉得这已启用/设置为 true,因此Stagefright正在使用播放器。请将此设置false为仅启用PV_Player

于 2014-02-07T00:10:53.643 回答
0

恕我直言,这是来自 GB 的古老道具,您使用的是什么 Android 设备?即使在GB中,我也没有在代码中的用法中看到这一点......我可以想象的是“media.stagefright.enable-player false/true”意味着stagefright播放器是/未使用并不意味着libstagefrigt .so(使用 Open MAX 的框架)被使用或未被使用。当我使用 GB libstagefright 时,一直在使用 Open MAX(只有 GB 中的一些编解码器没有移植到 OMX)。

于 2014-02-06T15:02:03.140 回答