2015-08-16 4 views
2

J'écris une application android qui montre le flux de mon appareil photo ip. La question que je suis face est que quand je rentre URL de la caméra dans mon navigateur et après l'authentification, il affiche une page html qui montre le flux, l'URL estcomment streamer ip cam sur html/htm dans android

http://192.168.1.103:81/index.htm

Je l'ai fait beaucoup de googling et essayé plusieurs codes, mais ils échouent tous car ils supposent l'URL comme quelque chose comme http://ip:port/video.mjpeg Dans mon cas, je n'ai pas la vidéo, mais une page html en streaming la vidéo et donc incapable d'obtenir le flux par programmation. Veuillez m'aider pour mon projet de thèse final. Merci d'avance !! : (((

package com.example.ipcam; 

import java.util.HashMap; 
import java.util.Map; 

import com.example.ipcam.R; 

import android.annotation.SuppressLint; 
import android.app.Activity; 
import android.content.Context; 
import android.content.Intent; 
import android.media.AudioManager; 
import android.media.MediaPlayer; 
import android.net.Uri; 
import android.os.Bundle; 
import android.util.Base64; 
import android.util.Log; 
import android.view.KeyEvent; 
import android.view.SurfaceHolder; 
import android.view.SurfaceView; 
import android.view.Window; 
import android.view.WindowManager; 

public class MainActivity extends Activity implements   MediaPlayer.OnPreparedListener , SurfaceHolder.Callback { 
final static String USERNAME = "admin"; 
final static String PASSWORD = ""; 
final static String Rtsp_URL = "http://192.168.1.103:81/index.htm"; 

private MediaPlayer _mediaPlayer; 
private SurfaceHolder _surfaceHolder; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    Window window = getWindow(); 
    window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
    WindowManager.LayoutParams.FLAG_FULLSCREEN); 
    window.setBackgroundDrawableResource(android.R.color.black); 

    setContentView(R.layout.activity_main); 

    SurfaceView surfaceView = (SurfaceView) findViewById(R.id.surfaceView); 
    _surfaceHolder = surfaceView.getHolder(); 
    _surfaceHolder.addCallback(this); 
    _surfaceHolder.setFixedSize(320, 240); 
} 

@Override 
public void surfaceChanged(SurfaceHolder sh, int f, int w, int h) {} 

@Override 
public void surfaceCreated(SurfaceHolder sh){ 
    _mediaPlayer=new MediaPlayer(); 
    _mediaPlayer.setDisplay(_surfaceHolder); 

    Context context = getApplicationContext(); 
    Map<String, String>headers = getRtspHeaders(); 
    Uri source = Uri.parse(Rtsp_URL); 

    try{ 
     _mediaPlayer.setDataSource(context, source, headers); 
     _mediaPlayer.setOnPreparedListener(this); 
     _mediaPlayer.prepareAsync(); 
    } 
      catch (Exception e) { 
       } 
      } 


     @Override 
     public void surfaceDestroyed(SurfaceHolder sh) { 
      _mediaPlayer.release(); 
     } 
     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 usr, String pwd) { 
       String credentials = usr + ":" + pwd; 
       int flags = Base64.URL_SAFE | Base64.NO_WRAP; 
       byte[] bytes = credentials.getBytes(); 
       return "Basic " + Base64.encodeToString(bytes, flags); 
      } 
      @Override 
      public void onPrepared(MediaPlayer mp) { 
       _mediaPlayer.start(); 
      } 
} 

J'ai essayé http://ijoshsmith.com/2014/01/25/video-streaming-from-an-ip-camera-to-an-android-phone , mais rien ne semble fonctionner

+0

. @SaschaKolberg quel code attendez-vous .. – d0nut

+0

1) Vous écrivez "donc incapable d'obtenir le flux par programme", donc je suppose que vous avez essayé quelque chose par programmation.) 2) StackOverflow est sur la programmation. vous essayez de programmer une application Android pour montrer la vidéo, je m'attendrais à * code android * d'au moins une activité, éventuellement avec un WebView et un xml de mise en page. –

+0

je suis désolé, je viens de poster mon code android. @SaschaKolberg –

Répondre