2014-01-19 92 views
2

我想建立一個谷歌眼鏡的應用程序,可以流到服務器,並讓客戶端通過網絡瀏覽器查看流。到目前爲止,我似乎需要通過RTSP對Wowza這樣的媒體服務器執行此操作,然後讓一臺Web服務器託管一些查看RTMP流的視頻播放器,但我沒有太多運氣。谷歌玻璃流視頻到服務器

使用libstreaming(https://github.com/fyhertz/libstreaming)我永遠不能查看流。

我也會對WebRTC做些什麼感興趣,這樣我就可以製作類似於環聊的解決方案,但是我不確定是否有任何支持此功能的庫。

任何幫助表示讚賞。

+1

谷歌玻璃連接到的WebRTC:http://tech.pristine.io/pristine-presents-at-the-austin-gdg/(感謝[阿林森達](HTTP://www.realtimeweekly。 com)) –

回答

5

自1月以來,libsreaming已被固定在Glass上工作。它的RTSP視頻可以在VLC播放器或插件中輕鬆查看。下面的代碼不包括自動生成的存根。

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(); 
} 
} 
+0

你是否能夠獲得音頻? – uLYsseus

+0

@ Why-K-Rum:我不關心音頻。我不知道音頻是否容易。 **請注意,Google Glass已經對KitKat進行了重大升級,它是視頻錄製的遊戲轉換器(可能使用MediaCodec)** –

+0

Hi @AlexCohn,我無法在玻璃上操作此代碼。我顯示0.0.0.0 IP ...我連接到網絡低谷藍牙和MyGlass應用程序...任何建議呢?如果我在手機或平板電腦上使用此代碼,我可以工作並在VLC中查看流式傳輸。另一個問題,這隻適用於本地網絡,當我禁用WiFi和我使用3G/LTE,這是行不通的,爲什麼?非常感謝! – Bae