Android MusicPlayer使用Stagefright或opencore

时间:2014-02-06 04:48:34

标签: android android-mediaplayer stagefright opencore

我读过如果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 = false中设置为build.prop

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

2 个答案:

答案 0 :(得分:1)

从您的日志中,我认为Android的版本是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

答案 1 :(得分:0)

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