2015-01-08 3 views
0

WebRTC로 비디오 스트리밍을하는 Google Glass 어플리케이션을 개발 중입니다. 문제는 단지 20 초 후에 유리가 과열 된 다음 꺼집니다. 이것은 일반적인 문제입니까? 녹음 시간을 연장하고 과열을 늦출 수있는 방법이 있습니까?비디오 스트림에서 유리 과열

+0

혹시이 문제에 대한 해결책을 찾았습니까? 아니면 스트리밍을위한 좋은 방법을 찾았습니까? – NoSixties

답변

0

비디오 스트리밍 중 배터리 소모량이 높기 때문에 유리가 과열되었습니다. 배터리 사용을위한 최적화 된 코드를 많이 가지고 있으며 유리도 함께 사용할 수있는 libstream 타사 라이브러리를 사용할 수 있습니다. WebRTC this 라이브러리가 가장 적합합니다. 또한 라이브러리와 함께 앱을 구현하기위한 몇 가지 일반적인 코드를 제공하고 있습니다. 제발 좀 봐봐. 그러면 차이가 생길거야.

public class MainActivity extends Activity implements SurfaceHolder.Callback, Session.Callback { 

private int mRtspPort = -1; 

private ServiceConnection mRtspServerConnection = new ServiceConnection() { 

    private static final int RTSP_PORT = 1234; 

    @Override 
    public void onServiceConnected(ComponentName className, IBinder binder) { 
     RtspServer s = ((RtspServer.LocalBinder) binder).getService(); 
     s.setPort(RTSP_PORT); 
     mRtspPort = s.getPort(); 
    } 
    }; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    this.requestWindowFeature(Window.FEATURE_NO_TITLE); 
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN); 
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); 
    setContentView(R.layout.activity_main); 

    // Configures the SessionBuilder 
    SessionBuilder.getInstance() 
      .setSurfaceView((SurfaceView) findViewById(R.id.surface)) 
      .setCallback(this) 
      .setPreviewOrientation(90) 
      .setContext(getApplicationContext()) 
     .setAudioEncoder(SessionBuilder.AUDIO_NONE) 
     .setVideoEncoder(SessionBuilder.VIDEO_H264) 
     .setVideoQuality(new VideoQuality(320, 240, 20, 500000)); 

// Starts the RTSP server 
bindService(new Intent(this, RtspServer.class), mRtspServerConnection, Context.BIND_AUTO_CREATE); 
} 

@Override 
public void onResume() { 
super.onResume(); 
mResumed = true; 
displayConnectString(); 
SessionBuilder.getInstance().getSurfaceView().setAspectRatioMode(SurfaceView.ASPECT_RATIO_PREVIEW); 
SessionBuilder.getInstance().getSurfaceView().getHolder().addCallback(this); 
} 

private void displayConnectString() { 
WifiManager wifiMgr = (WifiManager) getSystemService(WIFI_SERVICE); 
WifiInfo wifiInfo = wifiMgr.getConnectionInfo(); 
int ip = wifiInfo.getIpAddress(); 
String ipAddress = Formatter.formatIpAddress(ip); 
((TextView) findViewById(R.id.connectInfo)).setText("rtsp://" + ipAddress + ":" + mRtspPort); 
} 

@Override 
public void onDestroy() { 
super.onDestroy(); 
unbindService(mRtspServerConnection); 
} 

@Override 
public void onSessionStarted() { 
((TextView) findViewById(R.id.connectInfo)).setText(""); 
} 

@Override 
public void onSessionStopped() { 
    displayConnectString(); 
} 
} 

희망이 도움이 될 것입니다 !!!