This question is the next question to this topic: AR Drone 2 and ffserver + ffmpeg streaming
We are trying to get a stream from our AR Drone through a Debian server and into a Flash application.
The overall picture is as follows:
AR Drone β Gstreamer β CRTMPServer β Flash Application
We use the PaveParse plugin for Gstreamer found in this thread: https://projects.ardrone.org/boards/1/topics/show/4282
As you can see from the stream, AR Drone uses PaVE, Parrot Video Ecapsulation, which is unrecognizable by most players such as VLC. The PaVeParse plugin removes them.
We used different pipelines and they all give the same error.
Example conveyor:
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=.
The PaVEParse plugin must be located along the gst-plugin path for it to work.
The output of a test error from Gstreamer located in the ffdec_h264 element can be found at: http://pastebin.com/atK55QTn
The same thing will happen if decoding occurs in the player / self-test, for example. VLC, FFplay, RTMPDUMP.
The problem boils down to missing headers: PPS Reference does not exist. We know that the PaVEParse plugin deletes the PaVE headers, but we suspect that when they are deleted there are no H264 headers for the decoder / player to identify the frame.
Is it possible to "restore" these H264 headers either from scratch or by converting PaVE headers?