这个问题是这个线程的后续问题: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 标头?