过去4天我试图让gstreamer1.0与v4l2驱动程序一起使用Raspberry Pi相机,但没有成功。
我正在运行最新的Raspbian图像(从19.9.2014开始),启用了raspicam。 Raspicam bcm2835_v4l2驱动程序是使用modprobe命令启动并成功测试的,都使用qv4l2 gui接口(预览工作正常),并直接从设备使用dd命令:
dd if=/dev/video0 of=test.jpeg count=1 bs=11M
Gstreamer在基本" Hello world"命令:
gst-launch-1.0 videotestsrc ! ximagesink
但是,我无法弄清楚如何使用Gstreamer从v4l2 raspicam源成功显示视频预览(使用ximagesink或autovideosink等基本接收器)。
以下所有管道都没有工作(对不起,如果其中一些是完全无稽之谈,我是一个gstreamer新手):
将v4l2-ctl像素格式设置为H264(" v4l2-ctl -V"命令返回)我试过:
gst-launch-1.0 v4l2src device=/dev/video0 ! 'video/x-h264,width=640,height=480,framerate=25/1' ! h264parse ! omxh264dec ! videoconvert ! ximagesink
gst-launch-1.0 v4l2src device=/dev/video0 ! 'video/x-h264,width=640,height=480,framerate=25/1' ! h264parse ! omxh264dec ! videoconvert ! autovideosink
将v4l2-ctl像素格式设置为YU12(4:2:0,打包YUV)我试过:
gst-launch-1.0 v4l2src device=/dev/video0 ! autovideosink
gst-launch-1.0 v4l2src device=/dev/video0 ! ximagesink
因此上述命令均无效,相机LED无法启动且gstream返回:
Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
New clock: GetSystemClock
glGetError 0x505
ERROR: from element /GstPipeline:pipeline0/GstV4l2Src:v4l2src0: Internal data flow error
Additional debug info:
gstbasesrc.c(2865): gst_base_src_loop (): /GstPipeline:pipeline0/GstV4l2Src:v4l2src0:
streaming task paused, reason error (-5)
Execution ended after 0:00:16.843337147
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
Setting pipeline to NULL ...
Freeing pipeline ...
请告诉我通过Gstreamer进行基本预览的正确方向。
我的最终目标是让raspicam / gstreamer使用Python / Pyside / Phonon
编辑: " xvinfo的"命令告诉我有#34;没有适配器存在"和xvimagesink从一开始就不起作用。我不确定这是否与问题有关。 Raspbian正在运行X.Org版本1.12.4
答案 0 :(得分:6)
似乎在同意raspicam v4l2驱动程序和gstreamer之间支持的解决方案时存在错误。您可以在官方RasPi forum上找到更多信息。 感谢Raspberry Pi Foundation的优秀开发人员,还有一个解决方法/修复方法。
加载驱动程序时,只需添加“gst_v4l2src_is_broken = 1”标志,如下所示:
sudo modprobe bcm2835-v4l2 gst_v4l2src_is_broken=1
希望这也可以帮助其他人。