AR Drone 2.0、Gstreamer、C++ RTMP 服务器(无需 SDK 的流式传输)

Posted

技术标签:

【中文标题】AR Drone 2.0、Gstreamer、C++ RTMP 服务器(无需 SDK 的流式传输)【英文标题】:AR Drone 2.0, Gstreamer, C++ RTMP Server (streaming without SDK) 【发布时间】:2012-11-28 14:13:08 【问题描述】:

这个问题是这个帖子的后续问题:AR Drone 2 and ffserver + ffmpeg streaming

我们正在尝试通过 Debian 服务器从我们的 AR Drone 获取流并进入 Flash 应用程序。

大图是这样的:

AR Drone --> Gstreamer --> CRTMPServer --> Flash 应用程序

我们正在使用此线程中的 Gstreamer 的 PaveParse 插件:https://projects.ardrone.org/boards/1/topics/show/4282

正如线程中所见,AR Drone 正在使用 PaVE,Parrot Video Ecapsulation,大多数玩家(如 VLC)都无法识别它。 PaVeParse 插件会删除这些。

我们使用了不同的管道,它们都产生相同的错误。

示例管道:

GST_DEBUG=3 gst-launch-0.10 tcpclientsrc host=192.168.1.1 port=5555 ! paveparse ! queue ! ffdec_h264 ! queue ! x264enc ! queue ! flvmux ! queue ! rtmpsink localtion='rtmp://0.0.0.0/live/drone --gst-plugin-path=.

PaVEParse 插件需要位于 gst-plugin-path 才能工作。

位于 ffdec_h264 元素中的 Gstreamer 错误输出示例可在以下位置找到:http://pastebin.com/atK55QTn

如果解码发生在播放器/转储器中,也会发生同样的事情,例如VLC、FFplay、RTMPDUMP。

问题归结为缺少标题:PPS 参考不存在。我们知道 PaVEParse 插件会删除 PaVE 标头,但我们怀疑当这些标头被删除时,解码器/播放器没有 H264 标头来识别帧。

是否可以从头开始或通过转换 PaVE 标头来“恢复”这些 H264 标头?

【问题讨论】:

谢谢 - 您的示例管道帮助我解决了 raspberry Pi 和 nginx-rtmp 上的问题! 【参考方案1】:

能否分享一下 gstreamer 和 crtmpserver 之间的流量示例?

您始终可以使用内置于 crtmpserver 的 LiveFLV 支持。以下是更多详细信息:

Re-Stream a MPEG2 TS PAL Stream with crtmpserver

【讨论】:

以上是关于AR Drone 2.0、Gstreamer、C++ RTMP 服务器(无需 SDK 的流式传输)的主要内容,如果未能解决你的问题,请参考以下文章

从 Ar Drone 2.0 获取 GPS 数据

A.R Drone 2.0 视频流延迟

AR.Drone 功能在 Android 中的使用

AR Drone系列之:使用ROS catkin创建package并使用cv_bridge实现对ar drone摄像头数据的处理

没有从 Parrot AR Drone 的 cv2.VideoCapture 获取视频

如何在笔记本电脑上使用 nodejs 连接到 AR Drone