我读到,如果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();我承载了mediaplayer连接到的服务器套接字
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 ?
发布于 2014-02-07 00:10:53
从您的日志中,我觉得Android的版本是Froyo 2.2.3,这可能是Stagefright成为默认版本之前的最后一个版本。播放器的选择取决于多个条件,例如它是file源还是http源还是rtsp源。
在Froyo 2.2.3中,有两个键用于启用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" (Ref:http://androidxref.com/2.2.3/xref/frameworks/base/media/libmediaplayerservice/MediaPlayerService.cpp#750)的值。
在http源代码的示例中,有一个不同的系统属性被选中,即"media.stagefright.enable-http"。在您的情况下,我觉得这是启用/设置为真,因此,Stagefright播放器被雇用。请将此设置为false以仅启用PV_Player。
发布于 2014-02-06 15:02:03
这是国标的一个古老的道具,你用的是什么Android?我在代码中甚至在GB中都没有看到这一点.我可以想象的是,“media.stagefright. libstagefrigt.so false/true”意味着stagefright player是/不被使用的,这并不意味着libstagefrigt.so(使用Open的框架)被使用或不被使用。当我使用时,Open总是在使用(只有一些GB中的编解码器没有移植到OMX)。
https://stackoverflow.com/questions/21594213
复制相似问题