IPC开发板已有固件支持标准的uvc摄像头开发,这里使用gstreamer这个强大的库来实现对摄像头功能的开发。
这里我使用的环境是虚拟机下的ubuntu20.04。
gstreamer 环境安装
sudo apt-get install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libgstreamer-plugins-bad1.0-dev gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav gstreamer1.0-doc gstreamer1.0-tools gstreamer1.0-x gstreamer1.0-alsa gstreamer1.0-gl gstreamer1.0-gtk3 gstreamer1.0-qt5 gstreamer1.0-pulseaudio
安装完后输入pkg-config --cflags --libs gstreamer-1.0
检查是否安装成功
一、播放摄像头
gst-launch-1.0 v4l2src device=/dev/video0 ! autovideosink
v4l2src 是 GStreamer 的v4l2插件,device是v4l2插件的属性,可以指定摄像头设备,如果不输入device则默认为/dev/video0, autovideosink为显示插件,会自动寻找合适的显示器,关于当前的GStreamer包有哪些插件,以及插件支持哪些属性,我们可以查看GStreamer的官网或者该插件的来源处,更为方便的是我们通过gst-inspect-1.0 自己研究说明书。
输入gst-inspect-1.0
为显示当前GStreamer支持的插件
二、录制当前摄像头的画面为MP4,
gst-launch-1.0 v4l2src device=/dev/video0 ! videoconvert ! x264enc ! h264parse ! qtmux ! filesink location=hi.mp4 -e
按ctrl-c 结束录制,输入gst-play-1.0 hi.mp4 进行播放
三、使用gst-rtsp-server进行rtsp服务器搭建。
这里使用了gstreamer的另一个利器,gst-rtsp-server进行开发,实现了对摄像头画面的实时直播,用户可通过rtsp url进行订阅查看,支持多用户来同时查看摄像头的画面,这样我们就可以在其他局域网内的设备对摄像头的画面进行访问了,从而实现一个监控的功能。