2016-03-30 6 views
0

私は、クライアントとしてAndroidにH264 DVRカメラをストリームするインターンシッププロジェクトのアンドロイド向けのアプリケーションを開発しています.Wifiを使用するたびに、内部IP私は外部IPを使用する場合、logcatと192.xxx.xxx.xxxは私だけlogcat取得WiFiまたは3Gのいずれかを使用して、60.xxx.xxx.xxx、しかし Android IPを使用して3g以上のアンドロイドrtsp

04-04 14:30:14.680 1629-1629/? V/DefaultOmaSettingHelper: setSettingHeader: with uri=rtsp://192.xxx.xxx.xxx:554/user=xxx&password=xxx&channel=1&stream=0.sdp? 
04-04 14:30:14.682 827-1630/? V/SettingsProvider: call(system:MTK-RTSP-CACHE-SIZE) for 0 
04-04 14:30:14.682 827-1630/? D/SettingsProvider: lookupValue table system cache contains Key MTK-RTSP-CACHE-SIZE , value = Bundle[{value=null}] 
04-04 14:30:14.682 827-1674/? V/SettingsProvider: call(system:mtk_rtsp_min_udp_port) for 0 
04-04 14:30:14.682 827-1674/? D/SettingsProvider: lookupValue table system cache contains Key mtk_rtsp_min_udp_port , value = Bundle[{value=1024}] 
04-04 14:30:14.682 827-1699/? V/SettingsProvider: call(system:mtk_rtsp_max_udp_port) for 0 
04-04 14:30:14.683 827-1699/? D/SettingsProvider: lookupValue table system cache contains Key mtk_rtsp_max_udp_port , value = Bundle[{value=65535}] 
04-04 14:30:14.683 827-870/? V/SettingsProvider: call(system:mtk_rtsp_proxy_enabled) for 0 
04-04 14:30:14.683 827-870/? D/SettingsProvider: lookupValue table system cache contains Key mtk_rtsp_proxy_enabled , value = Bundle[{value=null}] 
04-04 14:30:14.684 1629-1629/? V/DefaultOmaSettingHelper: setOmaSettingHeader: params:minUdpPort=1024minUdpPort=1024maxUdpPort=65535rtspProxyEnable=0rtspProxyHost=nullrtspProxyPort=-1httpProxyEnable=0httpProxyHost=nullhttpProxyPort=-1httpBufferSize=10rtspBufferSize=4 
04-04 14:30:14.686 277-277/? I/MediaPlayerService: [setDataSource] setDataSource(rtsp://192.xxx.xxx.xxx:554/user=xxx&password=xxx&channel=1&stream=0.sdp?) 
04-04 14:30:14.689 277-277/? D/DrmMtkUtil/DrmUtil: checkDcf ----> path [rtsp://192.xxx.xxx.xxx:554/user=xxx&password=xxx&channel=1&stream=0.sdp?] 
04-04 14:30:14.689 277-277/? V/DrmMtkUtil/DrmUtil: checkExistence ----> [rtsp://192.xxx.xxx.xxx:554/user=xxx&password=xxx&channel=1&stream=0.sdp?] 
04-04 14:30:14.690 277-277/? I/NuPlayer: Is RTSP Streaming 
04-04 14:30:14.690 277-277/? D/RTSPSource: init+, RTSP uri headers from AP: 
04-04 14:30:14.690 277-277/? D/RTSPSource:  Authorization: Basic YWRtaW46 
04-04 14:30:14.690 277-277/? D/RTSPSource:  MAX-UDP-PORT: 65535 
04-04 14:30:14.691 277-277/? D/RTSPSource:  MIN-UDP-PORT: 1024 
04-04 14:30:14.691 277-277/? D/RTSPSource:  MTK-HTTP-CACHE-SIZE: 10 
04-04 14:30:14.691 277-277/? D/RTSPSource:  MTK-RTSP-CACHE-SIZE: 4 
04-04 14:30:14.691 277-277/? D/RTSPSource: removeSpecificHeaders MTK-RTSP-CACHE-SIZE 
04-04 14:30:14.691 277-277/? D/RTSPSource: special headers: MTK-RTSP-CACHE-SIZE = 4 
04-04 14:30:14.691 277-277/? I/RTSPSource: RTSP cache size = 4000000us 
04-04 14:30:14.692 277-277/? I/MediaPlayerService: [setDataSource] setDataSource(rtsp://192.xxx.xxx.xxx:554/user=xxx&password=xxx&channel=1&stream=0.sdp?) done 
04-04 14:30:14.697 277-2204/? D/MyHandler: RTSP Max UDP Port: 65535 
04-04 14:30:14.697 277-2204/? D/MyHandler: RTSP Min UDP Port: 1024 
04-04 14:30:14.705 277-2207/? I/ARTSPConnection: set nodelay return 0 
04-04 14:30:14.705 277-2207/? I/ARTSPConnection: connecting 192.168.0.18, 192.xxx.xxx.xxx:554 now 
04-04 14:30:14.706 277-2207/? I/ARTSPConnection: connection EINPROGRESS 
04-04 14:30:14.741 277-2207/? I/ARTSPConnection: status: RTSP/1.0 200 OK 
04-04 14:30:14.741 277-2207/? I/ARTSPConnection: line: 'Content-Type: application/sdp' 
04-04 14:30:14.742 277-2207/? I/ARTSPConnection: line: 'Server: H264DVR 1.0' 
04-04 14:30:14.742 277-2207/? I/ARTSPConnection: line: 'Cseq: 1' 
04-04 14:30:14.742 277-2207/? I/ARTSPConnection: line: 'Content-Base: rtsp://192.xxx.xxx.xxx:554/user=xxx&password=xxx&channel=1&stream=0./' 
04-04 14:30:14.742 277-2207/? I/ARTSPConnection: line: 'Cache-Control: private' 
04-04 14:30:14.742 277-2207/? I/ARTSPConnection: line: 'x-Accept-Retransmit: our-retransmit' 
04-04 14:30:14.742 277-2207/? I/ARTSPConnection: line: 'x-Accept-Dynamic-Rate: 1' 
04-04 14:30:14.742 277-2207/? I/ARTSPConnection: line: 'Content-Length: 356' 
04-04 14:30:14.743 277-2209/? I/ASessionDescription: s=RTSP Session 
04-04 14:30:14.743 277-2209/? I/MyHandler: base url rtsp://192.xxx.xxx.xxx:554/user=xxx&password=xxx&channel=1&stream=0./ 
04-04 14:30:14.754 277-2207/? I/ARTSPConnection: status: RTSP/1.0 200 OK 
04-04 14:30:14.755 277-2207/? I/ARTSPConnection: line: 'Server: H264DVR 1.0' 
04-04 14:30:14.755 277-2207/? I/ARTSPConnection: line: 'Cseq: 2' 
04-04 14:30:14.755 277-2207/? I/ARTSPConnection: line: 'Session: 193306800;timeout=60' 
04-04 14:30:14.755 277-2207/? I/ARTSPConnection: line: 'Transport: RTP/AVP;unicast;mode=PLAY;source=192.xxx.xxx.xxx;client_port=46234-46235;server_port=40000-40001;ssrc=0' 
04-04 14:30:14.755 277-2207/? I/ARTSPConnection: line: 'Cache-Control: private' 
04-04 14:30:14.755 277-2207/? I/ARTSPConnection: line: 'x-Dynamic-Rate: 1' 
04-04 14:30:14.759 277-2205/? I/RTSPSource: rtsp s=RTSP Session 
04-04 14:30:14.759 277-2205/? I/RTSPSource: convertMetaDataToMessage OK 
04-04 14:30:15.015 277-2207/? I/ARTSPConnection: status: RTSP/1.0 200 OK 
04-04 14:30:15.015 277-2207/? I/ARTSPConnection: line: 'Server: H264DVR 1.0' 
04-04 14:30:15.015 277-2207/? I/ARTSPConnection: line: 'Cseq: 3' 
04-04 14:30:15.017 277-2215/? I/ACodec: mSupportsPartialFrames 1 err 0 
04-04 14:30:15.018 277-2207/? I/ARTSPConnection: line: 'Range: npt=now-' 
04-04 14:30:15.018 277-2207/? I/ARTSPConnection: line: 'Session: 193306800' 
04-04 14:30:15.020 277-2213/? I/NuPlayerDecoder: mSupportsPartialFrames 1 

を言って

04-04 14:24:32.677 31474-31474/? V/DefaultOmaSettingHelper: setSettingHeader: with uri=rtsp://60.xxx.xxx.xxx:2218/user=xxx&password=xxx&channel=1&stream=0.sdp? 
04-04 14:24:32.678 827-1089/? V/SettingsProvider: call(system:MTK-RTSP-CACHE-SIZE) for 0 
04-04 14:24:32.678 827-1089/? D/SettingsProvider: lookupValue table system cache contains Key MTK-RTSP-CACHE-SIZE , value = Bundle[{value=null}] 
04-04 14:24:32.679 827-847/? V/SettingsProvider: call(system:mtk_rtsp_min_udp_port) for 0 
04-04 14:24:32.679 827-847/? D/SettingsProvider: lookupValue table system cache contains Key mtk_rtsp_min_udp_port , value = Bundle[{value=1024}] 
04-04 14:24:32.679 827-1002/? V/SettingsProvider: call(system:mtk_rtsp_max_udp_port) for 0 
04-04 14:24:32.679 827-1002/? D/SettingsProvider: lookupValue table system cache contains Key mtk_rtsp_max_udp_port , value = Bundle[{value=65535}] 
04-04 14:24:32.680 827-1674/? V/SettingsProvider: call(system:mtk_rtsp_proxy_enabled) for 0 
04-04 14:24:32.680 827-1674/? D/SettingsProvider: lookupValue table system cache contains Key mtk_rtsp_proxy_enabled , value = Bundle[{value=null}] 
04-04 14:24:32.681 31474-31474/? V/DefaultOmaSettingHelper: setOmaSettingHeader: params:minUdpPort=1024minUdpPort=1024maxUdpPort=65535rtspProxyEnable=0rtspProxyHost=nullrtspProxyPort=-1httpProxyEnable=0httpProxyHost=nullhttpProxyPort=-1httpBufferSize=10rtspBufferSize=4 
04-04 14:24:32.683 277-13212/? I/MediaPlayerService: [setDataSource] setDataSource(rtsp://60.xxx.xxx.xxx:2218/user=xxx&password=xxx&channel=1&stream=0.sdp?) 
04-04 14:24:32.683 277-13212/? D/DrmMtkUtil/DrmUtil: checkDcf ----> path [rtsp://60.xxx.xxx.xxx:2218/user=xxx&password=xxx&channel=1&stream=0.sdp?] 
04-04 14:24:32.683 277-13212/? V/DrmMtkUtil/DrmUtil: checkExistence ----> [rtsp://60.xxx.xxxx.xxx:2218/user=xxx&password=xx&channel=1&stream=0.sdp?] 
04-04 14:24:32.684 277-13212/? I/NuPlayer: Is RTSP Streaming 
04-04 14:24:32.684 277-13212/? D/RTSPSource: init+, RTSP uri headers from AP: 
04-04 14:24:32.684 277-13212/? D/RTSPSource:  Authorization: Basic YWRtaW46 
04-04 14:24:32.684 277-13212/? D/RTSPSource:  MAX-UDP-PORT: 65535 
04-04 14:24:32.684 277-13212/? D/RTSPSource:  MIN-UDP-PORT: 1024 
04-04 14:24:32.684 277-13212/? D/RTSPSource:  MTK-HTTP-CACHE-SIZE: 10 
04-04 14:24:32.684 277-13212/? D/RTSPSource:  MTK-RTSP-CACHE-SIZE: 4 
04-04 14:24:32.684 277-13212/? D/RTSPSource: removeSpecificHeaders MTK-RTSP-CACHE-SIZE 
04-04 14:24:32.684 277-13212/? D/RTSPSource: special headers: MTK-RTSP-CACHE-SIZE = 4 
04-04 14:24:32.684 277-13212/? I/RTSPSource: RTSP cache size = 4000000us 
04-04 14:24:32.686 277-13212/? I/MediaPlayerService: [setDataSource] setDataSource(rtsp://60.xxx.xxx.xxx:2218/user=xxx&password=xxx&channel=1&stream=0.sdp?) done 
04-04 14:24:32.692 277-32374/? D/MyHandler: RTSP Max UDP Port: 65535 
04-04 14:24:32.692 277-32374/? D/MyHandler: RTSP Min UDP Port: 1024 
04-04 14:24:32.696 277-32377/? I/ARTSPConnection: set nodelay return 0 
04-04 14:24:32.696 277-32377/? I/ARTSPConnection: connecting 60.xxx.xxx.xxx, 60.xxx.xxx.xxx:2218 now 
04-04 14:24:32.697 277-32377/? I/ARTSPConnection: connection EINPROGRESS 

だから私の問題を教えてもらえますか?ソケット、パケット、入出力ストリーム、バッファリングされたリーダー/ライターなどを使用する必要がありますか?私は、実際のデバイス(Elephone P8000のAndroid 5.0)でテスト

PS

ストリーミング活動

public class liveActivity extends Activity{ 

final static String USERNAME = "xxx"; 
final static String PASSWORD = "xxx"; 
public static String domainName = "60.xxx.xxx.xxx"; 
public static int PORT = 2018; 
public static final String URL = "rtsp://192.xxx.xxx.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=0.sdp?"; 

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); 

    try{ 

    }catch (Exception e){ 
     e.printStackTrace(); 
    } 

    mPlayer1 = new MediaPlayer(); 
    mPlayer2 = new MediaPlayer(); 

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

      try { 

       mPlayer1.setDisplay(surfaceHolder); 
       Context context = getApplicationContext(); 
       Map<String, String> headers = getRtspHeaders(); 
       Uri source = Uri.parse(URL2); 
       mPlayer1.setDataSource(context, source, headers); 
       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); 

    /*final SurfaceView surfaceView2 = 
      (SurfaceView) findViewById(R.id.surfaceView2); 
    // Configure the Surface View. 
    surfaceView2.setKeepScreenOn(true); 
    // Configure the Surface Holder and register the callback. 
    SurfaceHolder holder2 = surfaceView2.getHolder(); 
    holder2.addCallback(mCallback2); 
    holder2.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);*/ 

} 


private Map<String, String> getRtspHeaders() { 
    Map<String, String> headers = new HashMap<String, String>(); 
    String basicAuthValue = getBasicAuthValue(USERNAME, PASSWORD); 
    headers.put("Authorization", basicAuthValue); 
    return headers; 
} 

private String getBasicAuthValue(String user, String password) { 
    String credentials = user + ":" + password; 
    int flags = Base64.URL_SAFE | Base64.NO_WRAP; 
    byte[] bytes = credentials.getBytes(); 
    return "Basic " + Base64.encodeToString(bytes, flags); 
} 

} 
ためEDIT

ソースコードそれらを使用する方法を学ぶことができるようにリースが私にいくつかの例を与えます

注:これらの「xxx」はセキュリティ目的のみのものです

答えて

0

mor e情報とコードを見ることができますが、プロバイダがネットワーク上でこの種の接続をブロックしている可能性があります。帯域幅を維持するために、またはVoIPのように思えるかもしれないため、サービスはそのサービスの1つと競合します。

WiFiで動作する理由は、Androidデバイスとカメラの両方が同じネットワーク上にあり、それらの間にファイアウォールなどがない可能性が高いからです。

+0

ありがとうございましたMick、NAT関連の問題と似たような疑いがありますが、何か他の問題が起きる可能性があるかどうかを知りたいと思います。質問を編集してソースコードを追加しました。シンプルなコードですが、代わりにサポートクラスを使用すると違いがありますか? –

+0

あなたのコードフォームにクイックスキャンの問題はありません。別のストリーミングプレーヤーをカメラにURLで接続し、問題があるかどうかを確認することをおすすめします。これはGoogle Playで自由に利用できる場合はhttps://play.google.com/store/apps/details?id=orgです.rtspplr.app&hl = en – Mick

+0

悲しいことに私が使っているDVRで動作する唯一のアプリはMEyeですが、地獄のコードを抽出しましたが、それは高すぎて理解できませんでした。とにかく助けてくれてありがとう –

関連する問題