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).