这个问题是这个线程的后续问题:AR Drone 2和ffserver+ffmpeg流
我们正试图通过Debian服务器将AR Drone中的流传输到flash应用程序中。
总体情况如下:
AR无人机-->Gstreamer-->CRTMPServer-->Flash应用
我们正在使用这个线程中找到的Gstreamer的PaveParse插件:https://projects.ardrone.org/boards/1/topics/show/4282
正如帖子中所示,AR无人机正在使用PaVE,Parrot视频封装,这是像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插件路径才能工作。
从位于ffdec_h264元素中的Gstreamer输出的采样误差可以在以下位置找到:http://pastebin.com/atK55QTn
如果解码发生在播放器/转储器中,例如VLC、FFplay、RTMPDUMP,也会发生同样的事情。
问题归结为缺少标头:PPS引用不存在。我们知道PaVEParse插件删除了PaVE标头,但我们怀疑,当这些标头被删除时,解码器/播放器没有H264标头来识别帧。
是否可以从头开始或通过转换PaVE标头来"恢复"这些H264标头?
您能分享gstreamer和crmpserver之间的流量示例吗?
您可以始终使用在crmpserver内部构建的LiveFLV支持。以下是更多详细信息:
使用crmpserver 重新流式传输MPEG2 TS PAL流