2016-05-16 9 views
1

カメラに接続されているサーバーとしてDVRがあります。私はAndroidの電話機にカメラのビューをストリーミングしようとしています.LAN経由ではできましたが、3g /セルラrtspストリームをDVRから受信

私は転送

ポートをやった

利用のDynDNS

MEye(私の場合にのみ動作アプリ)と呼ばれる

サードパーティ製アプリ

ここで

は、RTSPは、私は、3G経由でストリーミングすることができない理由そのローカルonly.Isためのものであることを私はソフトウェアエンジニアから聞いコード

public class liveActivity extends Activity{ 

final static String USERNAME = "admin"; 
final static String PASSWORD = ""; 
public static String domainName = "xxx.dvrdns.org"; 
public static int PORT = 2218; 
public static final String URL = "rtsp://192.168.0.xxx:554/user=" + USERNAME + "&password=" + PASSWORD + "&channel=1&stream=0.sdp?"; 
public static final String URL2 = "rtsp://" + domainName + ":" + PORT + "/user=" + USERNAME + "&password=" + PASSWORD + "&channel=1&stream=1.sdp?real_stream--rtp-caching=100"; 

private MediaPlayer mPlayer1; 
private MediaPlayer mPlayer2; 
SurfaceHolder.Callback mCallback1; 
SurfaceHolder.Callback mCallback2; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_live); 

    mPlayer1 = new MediaPlayer(); 

    mCallback1 = new SurfaceHolder.Callback() { 
     @Override 
     public void surfaceCreated(SurfaceHolder surfaceHolder) { 

      try { 

       mPlayer1.setDataSource(liveActivity.this, Uri.parse(URL2)); 
       mPlayer1.setDisplay(surfaceHolder); 
       mPlayer1.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { 
        @Override 
        public void onPrepared(MediaPlayer mediaPlayer) { 
         mPlayer1.start(); 
        } 
       }); 
       mPlayer1.prepareAsync(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 

     @Override 
     public void surfaceChanged(SurfaceHolder surfaceHolder, int i, int i2, int i3) { 

     } 

     @Override 
     public void surfaceDestroyed(SurfaceHolder surfaceHolder) { 

      mPlayer1.release(); 
     } 
    }; 

    final SurfaceView surfaceView1 = 
      (SurfaceView) findViewById(R.id.surfaceView1); 
    // Configure the Surface View. 
    surfaceView1.setKeepScreenOn(true); 
    // Configure the Surface Holder and register the callback. 
    SurfaceHolder holder1 = surfaceView1.getHolder(); 
    holder1.addCallback(mCallback1); 
    holder1.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); 

} 

P.Sのですか?

答えて

0

これは古い質問ですが、念のために...あなたのソリューションは、LANで働いているが与えられ

は、おそらくWiFi経由で、アプローチ自体が細かいですね。

携帯電話のネットワークプロバイダがアップロード、ダウンロード、またはその両方のRTSPストリームをサポートしていない可能性が最も高い問題です。

これらのタイプの制限は、モバイルネットワークでは珍しいことではありません。たとえば、VoIPサービスを回避するためにすべてのアップリンクストリーミングプロトコルをブロックするオペレータがあります。

関連する問題