4

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

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

该流来自 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

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

4

2 回答 2

3

Oke we solved the problem:

First we make a TCP connection to the drone:

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

Our class is Runnable what means that we also have a method run() In this method we send a video_enable command and we also disable the dynamic video bitrate by sending this command: video:bitrate_ctrl_mode 0;

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

    decode();
}

Our decode() method can be found here: https://github.com/xuggle/xuggle-xuggler/blob/master/src/com/xuggle/xuggler/demos/DecodeAndPlayVideo.java

In this decode method we have changed this:

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

To this:

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

That's all!!

于 2012-12-07T09:03:39.380 回答
0

从有问题的编辑复制:

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

于 2012-12-06T20:11:13.807 回答