赞
踩
前面文章已经介绍过如何安装Gstreamer以及简单使用。接下来学习一下如何简单的使用Gstreaner RTSP推流和播放。
这一步其实是在我们使用apt-get方式安装Gstreamer时才需要,如果我们是下载了整个源码的方式使用Gstreamer是不需要这一步的。因为Gstreamer rtsp已经包含在其中了。
而我的目的只是想使用gst-rtsp服务,所以这边文章将在apt-get 安装gstreamer的基础上编译gst-rtsp-server来使用(因为rtsp-server不是以插件的方式存在的,所以我们需要自己下载源码编译才能使用它)。
首先先安装Gstreamer 的基础功能部分,这个已在上编文章讲过,也可以参考官方文档:
https://gstreamer.freedesktop.org/documentation/installing/on-linux.html?gi-language=c
然后下载code:
git clone git://anongit.freedesktop.org/gstreamer/gst-rtsp-server
在切到对应分支上面 Ubuntu 18.04 应该切到 1.14分支。
然后编译code,编译方式与编译Gstreamer 源码一样
- cd gst-rtsp-server
- meson out -Dprefix=/home/用户/gst-rtsp-server/install
- ninja -C out install
-
编译完成后会在install目录下有生成一些库文件。将这些生成的文件的路径加东环境变量里面。设置方法与上编文章相同,只是路径不同。然后就可以使用RTSP服务了。我们也可以在上面的编译命令中不指定-Dprefix让编译出来的库直接安装到/usr/local/lib include share下面。这样不用配置环境变量也可以直接使用。我们还可以直接将生成的那些文件直接链接或者拷贝到/usr/或者/usr/local目录下面。
当然如果你是下载了整个源码编译使用gstreamer的就不用单独下载rtsp的code了。
在rtsp-server git下面有一些测试bin,可以使用它快速测试。
它们是由上面的.c文件编译出来的。需要注意的是,编译想要单独编译这些.c文件必须要有gstreamer-rtsp-server-1.0库。但是我们apt安装方式并不带这个库,所以直接编译它肯定报错。
有两种方法可以编译它。一个是编译整个gst-rtsp-server 。它编译的bin会在out目录下面的对应目录下。第二个就是将编译gst-rtsp-server生成的install目录下面的lib添加到环境变量中。然后使用下面的命令编译.c文件。
gcc test-launch.c -o test-launch `pkg-config --cflags --libs gstreamer-rtsp-server-1.0 gstreamer-1.0`
然后就可以对Gstreamer rtsp做一些简单的测试了
首先先安装一下gstreamer1.0-rtsp,不安装这个我试的会有一些错误。
sudo apt-get install gstreamer1.0-rtsp
使用test-launch推流:
下面这个命名使用videotestsrc生成测试数据流。
- 推流:
- ./test-launch "( videotestsrc ! x264enc ! rtph264pay name=pay0 pt=96 )"
- 拉流播放:
- gst-launch-1.0 playbin uri=rtsp://127.0.0.1:8554/test
- 推流
- ./test-launch "( v4l2src device=/dev/video0 ! image/jpeg,width=1280,height=720,framerate=30/1 ! jpegdec ! timeoverlay ! tee name=vsrc vsrc. ! queue ! videoconvert ! ximagesink vsrc. ! queue ! x264enc tune=zerolatency ! rtph264pay name=pay0 pt=96 )"
-
- 播放:
- gst-launch-1.0 rtspsrc latency=20 location="rtsp://127.0.0.1:8554/test" ! rtph264depay ! h264parse ! avdec_h264 ! autovideosink
这编文章其实还是在讲搭建环境。接下来准备开始学习写应用了。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。