Ubuntu14.04下安装Gstreamer以测试UVC H264 Camera

来源:互联网 发布:淘宝懒人软件靠谱么 编辑:程序博客网 时间:2024/06/05 10:49

Ubuntu14.04下安装Gstreamer以测试UVC H264 Camera



最近调试 UVC H264 Camera,需要在Ubuntu下测试摄像头,所以借助gstreamer来实现。


gtreamer 是一个基于glib库(目前最新版本需要glib2.0)来构建流媒体应用的编程框架,其目标是要简化音/视频应用程序的开发,目前已经能够被用来处理 像 MP3、Ogg、MPEG1、MPEG2、AVI、Quicktime 等多种格式的多媒体数据。


一、安装依赖库:
sudo apt-get install bison  flex zlib1g yasm 


二、下载安装包:


1、gstreamer-1.3.1.tar.xz

http://gstreamer.freedesktop.org/src/gstreamer/


2、gst-plugins-base-1.3.1.tar.xz

http://gstreamer.freedesktop.org/src/gst-plugins-base/


3、gst-plugins-good-1.3.1.tar.xz

http://gstreamer.freedesktop.org/src/gst-plugins-good


 
4、gst-plugins-ugly-1.3.1.tar.xz
http://gstreamer.freedesktop.org/src/gst-plugins-ugly/


5、gst-plugins-bad-1.3.1.tar.xz 
https://gstreamer.freedesktop.org/src/gst-plugins-bad/gst-plugins-bad-1.3.1.tar.xz 


使用插件avdec_h264需要安装gst-ffmpeg(gst-ffmpeg版本V1.0之后改名为gst-libav),安装gst-ffmpeg需要安装last_x264.tar.bz2
6、last_x264.tar.bz2
https://pan.baidu.com/share/link?shareid=2659340460&uk=4027341910&fid=588638103197893


7、gst-libav-1.3.1.tar.xz
http://gstreamer.freedesktop.org/data/src/gst-libav/


三、安装步骤


安装注意事项:
gst-plugins-good-1.3.1依赖于gst-plugins-base-1.3.1,所以先安装gst-plugins-good-1.3.1再安装gst-plugins-base-1.3.1。


1、安装gstreamer-1.3.1
xz -d gstreamer-1.3.1.tar.xz
tar xvf gstreamer-1.3.1.tar
cd gstreamer-1.3.1
./configure //默认安装到/usr/local目录下;如果自定义目录,使用 --prefix=绝对路径;
make
sudo make install


2、安装gst-plugins-base-1.3.1
xz -d gst-plugins-base-1.3.1.tar.xz
tar xvf gst-plugins-base-1.3.1.tar
cd gst-plugins-base-1.3.1
./configure //同上一致
make
sudo make install


3、安装gst-plugins-good-1.3.1
xz -d gst-plugins-good-1.3.1.tar.xz
tar xvf gst-plugins-good-1.3.1.tar
cd gst-plugins-good-1.3.1
./configure //同上一致
make
sudo make install


4、安装gst-plugins-ugly-1.3.1
xz -d gst-plugins-ugly-1.3.1.tar.xz
tar xvf gst-plugins-ugly-1.3.1.tar
cd gst-plugins-ugly-1.3.1
./configure //同上一致
make
sudo make install


5、安装gst-plugins-bad-1.3.1
xz -d gst-plugins-bad-1.3.1.tar.xz
tar xvf gst-plugins-bad-1.3.1.tar
cd gst-plugins-bad-1.3.1
./configure //同上一致
make
sudo make install


6、安装last_x264
xz -d last_x264.tar.xz
tar xvf last_x264.tar
cd last_x264
./configure //同上一致
make
sudo make install


6、安装gst-libav-1.3.1
xz -d gst-libav-1.3.1.tar.xz
tar xvf gst-libav-1.3.1.tar
cd gst-libav-1.3.1
./configure //同上一致
make
sudo make install


四、运行测试

    插件介绍:
1、v4l2src:视频采集
2、ximagesink和xvimagesink
  两者都是用来显示视频图像的sink插件,但支持的格式不同。ximagesink支持rgb格式,不支持yuv格式;xvimagesink支持yuv等多种格式。



    下面开始测试:
(1)、gst-launch-1.0 v4l2src ! xvimagesink
采集视屏并显示,一般情况下是不会出错的。(OK:执行命令后会弹出一个界面卡住)


(2)、gst-launch-1.0 --gst-debug-level=4 -vvv v4l2src device=/dev/video0 ! video/x-h264, width=1920, height=1080, framerate=30/1 ! h264parse ! filesink location="test.264"
从UVC摄像头接收H264码流, 将H264码流解析出来并保存到"test.264"文件中(H264格式)(OK:保存成功,可以播放)
--gst-debug-level=4:打印log,数字(4)代表级别
device=/dev/video0:指定设备节点,默认是/dev/video0
video/x-h264, width=1920, height=1080, framerate=30/1:指定采集的数据格式(数据格式、像素和帧率)。video/x-h264:格式过滤插件,限制pipeline中数据流的格式(如果不限制格式,则整个pipeline中的各个插件会自动协商出一个最合适的数据格式)。
h264parse:解析H264数据
filesink location="test.264": 保存为 test.264 文件


(3)、gst-launch-1.0 --gst-debug-level=4 -vvv v4l2src device=/dev/video0 ! video/x-h264, width=1920, height=1080, framerate=30/1 ! h264parse ! avdec_h264 ! filesink location="test.yuv"
从UVC摄像头接收H264码流, 将H264码流解析出来再进行解码,解码成YUV格式数据后保存到“test.yuv”文件中(YUV格式)(OK:保存成功,可以播放)
avdec_h264:解码H264数据,解码后为yuv格式。


(4)、gst-launch-1.0 --gst-debug-level=4 -vvv v4l2src device=/dev/video0 ! video/x-h264, width=1920, height=1080, framerate=30/1 ! h264parse ! avdec_h264 ! xvimagesink
从UVC摄像头接收H264码流, 将H264码流解析出来再进行解码,解码成YUV格式数据后输出显示(失败,加上颜色空间转换后就OK了,如下(5)所示)


(5)、gst-launch-1.0 --gst-debug-level=4 -vvv v4l2src device=/dev/video0 ! video/x-h264, width=1920, height=1080, framerate=30/1 ! h264parse ! avdec_h264 ! videoconvert ! xvimagesink
从UVC摄像头接收H264码流, 将H264码流解析出来再进行解码,解码成YUV格式数据后输出显示(OK:正常显示)
videoconvert:做颜色空间转换


五、运行错误及解决办法:

1、使用gstreamer-0.10 或 gstreamer-0.11 版本时出现如下问题: 

$ gst-launch-0.10 v4l2src ! xvimagesink
   Caught SIGSEGV accessing address 0x48
   Spinning.  Please run 'gdb gst-launch 13362' to continue debugging, Ctrl-C to quit, or Ctrl-\ to dump core.

解决办法:换成gstreamer-1.0版本就正常了。


2、缺少uvch264src插件

$  gst-launch-1.0 uvch264src ! xvimagesink
    WARNING: erroneous pipeline: no element "uvch264src"

解决办法:
  gst-plugins-bad-1.3.1/sys/uvch264目录下是uvch264src插件的代码(旧版本没有),进去发现没有编译。执行./configure后发现配置信息log里存在如下信息:

  configure: *** checking feature: UVC H264 ***
  configure: *** for plug-ins: uvch264 ***
  checking linux/uvcvideo.h usability... yes
  checking linux/uvcvideo.h presence... yes
  checking for linux/uvcvideo.h... yes
  checking for GST_VIDEO... yes
  checking for G_UDEV... no
  checking for LIBUSB... no
  configure: *** These plugins will NOT be built: uvch264
  
  no:说明缺少该库,导致h264插件无法安装,因此需要手动安装:sudo apt-get install libusb-dev libgudev-1.0-dev,然后重新编译gst-plugins-bad-1.3.1。
  再次执行./configure后变成:
  configure: *** checking feature: UVC H264 ***
  configure: *** for plug-ins: uvch264 ***
  checking linux/uvcvideo.h usability... yes
  checking linux/uvcvideo.h presence... yes
  checking for linux/uvcvideo.h... yes
  checking for GST_VIDEO... yes
  checking for G_UDEV... yes
  checking for LIBUSB... yes
  configure: *** These plugins will be built: uvch264
  说明h264插件已正确安装


3、缺少avdec_h264插件

#  gst-launch-1.0 v4l2src device=/dev/video0 ! video/x-h264, width=1920, height=1080, framerate=30/1 ! h264parse ! avdec_h264 ! filesink location="test.yuv"
   WARNING: erroneous pipeline: no element "uvch264src"

解决办法:

安装gst-libav-1.3.1.tar.xz。


原创粉丝点击