Android MusicPlayer использует 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 ответа

Решение

Из ваших логов я чувствую, что версия 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 только.

ИМХО это древний реквизит от GB, какой Android вы используете? Я не видел этого в использовании в коде даже в ГБ... Я могу себе представить, что "media.stagefright.enable-player false/true" означает, что проигрыватель stagefright используется / не используется, что не означает, что libstagefrigt.so (фреймворк, использующий Open MAX) используется или не используется. Когда я работал с GB libstagefright, Open MAX всегда использовался (только некоторые кодеки в GB не были перенесены на OMX).

Другие вопросы по тегам