簡體   English   中英

OpenCV Android Studio Java ZA12A3079E14CED46E69BA52B8A90B2 攝像頭未連接1

[英]OpenCV Android Studio Java IP Camera Not Connecting

我目前正在嘗試使用 android 工作室開發一個應用程序,該工作室連接兩個IP 相機並同時流式傳輸它們。

我目前在使用 OpenCV 視頻捕獲連接我的 IP 相機時遇到問題,使用以下OpenCV video capture ,制造商確認這是正確的

rtsp://(myUsername):(myPassword)@192.168.0.34:554/stream1

這個 url 也適用於 VLC 播放器,但是當我運行應用程序時,我沒有收到任何連接或錯誤消息,檢查連接是否已使用capture.isOpened().

我正在使用的相機是tp-link tapo 100 ,如果有人有任何好的建議,謝謝。

videoCapture = new VideoCapture();
videoCapture.open("rtsp://(myUsername):(myPassword)@192.168.0.34:554/stream1");

if (!videoCapture.isOpened()) {
  System.out.println("ERROR CONNECTING TO CAMERA");
} else {
  System.out.println("video is captured!");
}

請發布您從 logcat open cv 獲得的錯誤日志不會像通常的http鏈接那樣處理rtsp鏈接,您將需要使用幀,然后將這些幀轉換為視頻

嘗試使用 MediaPlayer,您只需配置 XML 並添加額外的攝像頭。

代碼

公共 class MainActivity 擴展 Activity 實現 MediaPlayer.OnPreparedListener,SurfaceHolder.Callback {

final static String USERNAME = "admin";
final static String PASSWORD = "camera";
final static String RTSP_URL = "Your URL Goes Hear";
private MediaPlayer _mediaPlayer;
private SurfaceHolder _surfaceHolder;

@Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    // Set up a full-screen black window.
    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);
    // Configure the view that renders live video.
    SurfaceView surfaceView = (SurfaceView) findViewById(R.id.surfaceView);
    _surfaceHolder = surfaceView.getHolder();
    _surfaceHolder.addCallback(this);
    _surfaceHolder.setFixedSize(1024, 600);
}

/*SurfaceHolder.Callback*/
@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
    {
        // Specify the IP camera's URL and auth headers.
        _mediaPlayer.setDataSource(context, source, headers);

        // Begin the process of setting up a video stream.
        _mediaPlayer.setOnPreparedListener(this);
        _mediaPlayer.prepare();
    }
    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);
}

/*MediaPlayer.OnPreparedListener*/
@Override
public void onPrepared(MediaPlayer mp)
{
    _mediaPlayer.start();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM