Xuggler 和从直播中播放
Posted
技术标签:
【中文标题】Xuggler 和从直播中播放【英文标题】:Xuggler and playing from live stream 【发布时间】:2012-11-18 13:56:53 【问题描述】:我们目前正忙于一个项目,我们试图在一个窗口中播放来自 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
现在应该可以将它与输入流一起使用,但它当然应该采用正确的格式。有什么方法可以帮助我们做到这一点吗?
【问题讨论】:
你试过vlcj吗?它有很好的文档记录,对我来说效果很好。我也在考虑使用 xaggler,但经过几天的评估,vlcj 出现在我的名单上。 今天我们尝试了vlcj。至今没有成功。我们想要显示和操作来自 de Parrat Ar Drone 2.0 的视频。我们认为 Xuggle 对两者都有好处。有没有人举例说明如何使用 Xuggle 从 http 流中读取数据? 操纵是什么意思?编辑还是导航? 我的意思是导航。我们想捕捉一个物体并用无人机自动跟随。 @michel3vb 请不要将答案编辑到问题中。如果您解决了您的特定问题,您可以点击帖子下方的按钮Answer your Question
。您将不得不等待 48 小时(我认为),然后可以返回并通过单击复选标记将其标记为已接受。不过,我鼓励您在答案中扩展您的编辑内容,因为仍然不清楚您为解决问题所做的工作。添加代码示例通常有助于解决这个问题。
【参考方案1】:
好的,我们解决了问题:
首先我们与无人机建立 TCP 连接:
try
socket_video_tcp = new Socket();
socket_video_tcp.connect(new InetSocketAddress(commandSender.droneInetAddress, commandSender.VIDEO_PORT));
我们的类是可运行的,这意味着我们还有一个方法 run() 在这个方法中,我们发送一个 video_enable 命令,我们也通过发送这个命令来禁用动态视频比特率: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)
就是这样!!
【讨论】:
【参考方案2】:从有问题的编辑中复制:
今天我们解决了这个问题。我们之前尝试过加载套接字 连接到 Icontainer.open 与 socketconnection.getInputStream 。结果是 0 个流。经过一番 小的调整结果是 1 个流,我们可以看到实时视频 来自屏幕上的无人机!
【讨论】:
@michel3vb 在你发布你自己的答案后,我会删除这个。以上是关于Xuggler 和从直播中播放的主要内容,如果未能解决你的问题,请参考以下文章
Xuggler,xuggler 5.4 中的转发和倒带视频不起作用