Xuggler和现场直播

我们目前正在忙于一个项目,我们正在尝试在Java的实时流中在窗口中播放video文件。 我们已经设法使用InputStreamReader通过Socket对象捕获流。

下一步是使用现有的库(Xuggler)或代码来解码此流并在一个简单的窗口中显示内容(video)。

该流源自Parrot AR Drone 2.0,IP地址为192.168.1.1:5555。 这就是我们陷入困境的地方。 我们尝试使用的代码是这里找到的DecodeandPlayVideo示例:

https://github.com/xuggle/xuggle-xuggler/blob/master/src/com/xuggle/xuggler/demos/DecodeAndPlayVideo.java

现在应该可以将它与输入流一起使用,但它当然应该是正确的格式。 有什么方法可以帮助我们这样做吗?

我们解决了这个问题:

首先,我们与无人机建立TCP连接:

 try { socket_video_tcp = new Socket(); socket_video_tcp.connect(new InetSocketAddress(commandSender.droneInetAddress, commandSender.VIDEO_PORT)); } 

我们的类是Runnable,这意味着我们还有一个方法run()在这个方法中我们发送一个video_enable命令,我们也通过发送这个命令来禁用动态video比特率:video:bitrate_ctrl_mode 0;

 public void run() { commandSender.sendConfigCommand("VIDEO_ENABLE"); commandSender.sendConfigCommand("VIDEOBITRATE"); decode(); } 

我们的decode()方法可以在这里找到: https : //github.com/xuggle/xuggle-xuggler/blob/master/src/com/xuggle/xuggler/demos/DecodeAndPlayVideo.java

在这种解码方法中,我们改变了这个:

  if (container.open(filename, IContainer.Type.READ, null) < 0) 

对此:

 if (container.open(socket_video_tcp.getInputStream(), null) < 0) 

就这样!!

从有问题的编辑复制:

今天我们解决了这个问题。 我们之前尝试使用socketconnection.getInputStream将套接字连接加载到Icontainer.open中。 结果是0个流。 经过一些小的调整后,结果是1个流,我们可以在屏幕上看到无人机的实时video!