我希望在openCV中显示来自gstreamer的rtp / vp8视频流。
我已经有了一个有效的解决方案:
gst-launch-0.10 udpsrc port=6666 ! "application/x-rtp,media=(string)video,clock-rate=(int)90000,encoding-name=(string)VP8-DRAFT-IETF-01,payload=(int)120" ! rtpvp8depay ! vp8dec ! ffmpegcolorspace ! ffenc_mpeg4 ! filesink location=videoStream
基本上它从UDP套接字中获取传入数据,解包rtp,解码vp8,传递给ffmpegcolorspace(我仍然不明白这是为了什么,我在gstreamer中到处都看到它。)
videoStream
是我使用mkfifo
创建的管道。另一方面,我有openCV代码:
VideoCapture cap("videoStream");
并使用cap.read()
推送到Mat
。
我主要担心的是我在这里使用ffenc_mpeg4
,我相信这会改变我的视频质量。我尝试使用x264enc
代替ffenc_mpeg4
,但我没有输出:openCV没有反应,gstreamer也没有反应,几秒后,gst-launch就停止了。
知道我可以使用什么而不是ffenc_mpeg4
?我寻找"无损编解码器"在网上,但似乎我混淆了编解码器,包含,格式,压缩和编码等事情;所以任何帮助都会(非常)受到赞赏!
提前致谢!