[英]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.