目标:
将使用opencv的python代码翻译成java。
问题:
java版本无法捕获rtmp流
详细信息:
这是一个用于4G无人机的无人机控制基础代码,用于将其摄像头视频流传输到nodejs rtmp服务器。下面是它的代码:
const { NodeMediaCluster } = require('node-media-server');
const numCPUs = require('os').cpus().length;
const config = {
rtmp: {
port: 1935,
chunk_size: 600000,
gop_cache: false,
ping: 60,
ping_timeout: 30
},
http: {
port: 8000,
allow_origin: '*'
},
cluster: {
num: numCPUs
}
};
var nmcs = new NodeMediaCluster(config)
nmcs.run();
然后,该流被控制基础捕获(用于涉及opencv功能的进一步操作)
在python版本的代码中,我使用了
cap = cv2.VideoCapture('rtmp://192.168.1.12:1935/live/STREAM_NAME')
从测试本地网络上的服务器读取。
在java中,我下载了官方的opencv教程示例应用程序,网址是here。这是一个关于如何使用VideoCapture对象来读取摄像头的教程。
就像我之前在python中所做的那样,我将参数0(第一个cam)替换为rtmp url:
//private static int cameraId = 0;
String cameraId = "rtmp://192.168.1.12:1935/live/STREAM_NAME";
/**
* The action triggered by pushing the button on the GUI
*
* @param event
* the push button event
*/
@FXML
protected void startCamera(ActionEvent event)
{
if (!this.cameraActive)
{
// start the video capture
this.capture.open(cameraId);
this.capture.isOpened()返回false。
并且不进行到服务器的连接尝试
你能指出我哪里出错了吗?
发布于 2018-10-27 08:56:05
我花了几个小时才意识到哪里出了问题。该问题已在here中得到解决
https://stackoverflow.com/questions/53015668
复制相似问题