使用 JavaCV 库接收 RTSP 流
Recieving RTSP stream With JavaCV Library
我目前正在尝试从网络上的 IP 摄像机获取 RTSP 流,以便我可以将面部识别算法应用于帧(为此我正在使用 JavaCV 库)。
当我尝试获取 RTSP 流时,我开始收到错误消息,具体取决于我尝试使用的方法。
下面是应该有效的代码:
try {
FFmpegFrameGrabber streamGrabber = new FFmpegFrameGrabber("rtsp://admin:12345@(ip)/ch1/main/av_stream");
streamGrabber.setFormat("h264");
streamGrabber.setFrameRate(30);
streamGrabber.setImageWidth(getWidth());
streamGrabber.setImageHeight(getHeight());
streamGrabber.start();
} catch (Exception e) {
e.printStackTrace();
}
那段特定的代码给我这个错误:
org.bytedeco.javacv.FrameGrabber$Exception: avformat_open_input() error -1330794744: Could not open input "rtsp://admin:12345@192.168.64.96/ch1/main/av_stream". (Has setFormat() been called?)
at org.bytedeco.javacv.FFmpegFrameGrabber.startUnsafe(FFmpegFrameGrabber.java:393)
at org.bytedeco.javacv.FFmpegFrameGrabber.start(FFmpegFrameGrabber.java:341)
at main.FaceApplet.init(FaceApplet.java:87)
at sun.applet.AppletPanel.run(AppletPanel.java:425)
at java.lang.Thread.run(Thread.java:695)
我试过:
改为使用 OpenCVFrameGrabber - 错误提示 "Could not create camera capture"
使用 IPCameraFrameGrabber - 需要 http url
更改协议:
FTP: 验证失败
TCP:冻结程序
UDP:验证失败
我哪里做错了,这是代码问题还是相机问题?
更新
我终于成功了...神奇的公式似乎是使用 FFMpeggrabber 获取流...为避免错误,请不要使用该函数设置视频格式。初始化程序代码应如下所示:
streamGrabber = new FFmpegFrameGrabber("rtsp://admin:12345@(ip):554/live.sdp");
streamGrabber.setFrameRate(30);
streamGrabber.setImageWidth(getWidth());
try {
streamGrabber.start();
} catch (FrameGrabber.Exception e) {
e.printStackTrace();
}
我目前正在尝试从网络上的 IP 摄像机获取 RTSP 流,以便我可以将面部识别算法应用于帧(为此我正在使用 JavaCV 库)。
当我尝试获取 RTSP 流时,我开始收到错误消息,具体取决于我尝试使用的方法。
下面是应该有效的代码:
try {
FFmpegFrameGrabber streamGrabber = new FFmpegFrameGrabber("rtsp://admin:12345@(ip)/ch1/main/av_stream");
streamGrabber.setFormat("h264");
streamGrabber.setFrameRate(30);
streamGrabber.setImageWidth(getWidth());
streamGrabber.setImageHeight(getHeight());
streamGrabber.start();
} catch (Exception e) {
e.printStackTrace();
}
那段特定的代码给我这个错误:
org.bytedeco.javacv.FrameGrabber$Exception: avformat_open_input() error -1330794744: Could not open input "rtsp://admin:12345@192.168.64.96/ch1/main/av_stream". (Has setFormat() been called?)
at org.bytedeco.javacv.FFmpegFrameGrabber.startUnsafe(FFmpegFrameGrabber.java:393)
at org.bytedeco.javacv.FFmpegFrameGrabber.start(FFmpegFrameGrabber.java:341)
at main.FaceApplet.init(FaceApplet.java:87)
at sun.applet.AppletPanel.run(AppletPanel.java:425)
at java.lang.Thread.run(Thread.java:695)
我试过:
改为使用 OpenCVFrameGrabber - 错误提示 "Could not create camera capture"
使用 IPCameraFrameGrabber - 需要 http url
更改协议:
FTP: 验证失败
TCP:冻结程序
UDP:验证失败
我哪里做错了,这是代码问题还是相机问题?
更新
我终于成功了...神奇的公式似乎是使用 FFMpeggrabber 获取流...为避免错误,请不要使用该函数设置视频格式。初始化程序代码应如下所示:
streamGrabber = new FFmpegFrameGrabber("rtsp://admin:12345@(ip):554/live.sdp");
streamGrabber.setFrameRate(30);
streamGrabber.setImageWidth(getWidth());
try {
streamGrabber.start();
} catch (FrameGrabber.Exception e) {
e.printStackTrace();
}