2014-02-06 61 views
0

我讀了如果media.stagefright.enable-player設置爲true那麼設備使用Stagefright。 在我的設備的build.prop我看到Android MusicPlayer使用Stagefright或opencore

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 ?

回答

1

從您的日誌中,我覺得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

0

恕我直言,是從GB一個古老的道具,什麼安卓您使用的?我甚至沒有在代碼的用法中看到這一點,即使在GB中......我可以想象的是,「media.stagefright.enable-player false/true」意味着stagefright player被/不被使用,這並不意味着libstagefrigt (使用Open MAX的框架)已被使用或未被使用。當我使用GB libstagefright時,總是使用Open MAX(只有一些GB編解碼器沒有移植到OMX)。

+0

所以,你的意思是GB有OpenMax的編解碼器,如果是的話,我可以通過從jni調用openmax il apis來訪問編解碼器嗎? – nmxprime

+0

關於如何使用我們的ndk應用程序中的stagefright使用openmax的任何指導? – nmxprime

+0

@ nmxprime ..是''GingerBread'對於某些編解碼器具有'OMX'。但是,您無法以獨立方式訪問該組件。這種支持是在「果凍豆」中引入的。你能確認你正在使用哪個版本的android嗎? – Ganesh

相關問題