gstreamer-rtsp-server环境安装(Linux环境下)

两种方式:
第一种方式,通过官网安装(如果是Linux环境,可以直接通过软件包工具进行安装),点击进入官网下载。

第二种方式,手动安装方式(Linux环境)
  第一步,终端执行以下命令,安装gstreamer基础库。

sudo apt-get install gtk-doc-tools
sudo apt-get install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
sudo apt-get install libgl1-mesa-dev
sudo apt-get install gstreamer1.0-libav
sudo apt-get install gstreamer1.0-plugins-bad
sudo apt-get install gstreamer1.0-plugins-base
sudo apt-get install gstreamer1.0-plugins-ugly
sudo apt-get install gstreamer1.0-plugins-good

  第二步,下载gstreamer-rtsp-server,执行以下命令行(下载源码并编译安装)

# download src
git clone git://anongit.freedesktop.org/gstreamer/gst-rtsp-servercd gst-rtsp-server# see all branches
# remotes/origin/1.8    8799fb5 tests: try to avoid using the same ports in different tests
git branch -av# create new branch
git checkout -B test
git reset --hard 8799fb5# compile
./autogen.sh && make -j12

  第三步,在主目录下的终端中执行

sudo gedit ~/.bashrc   //打开bashrc文件

  在bashrc文件中添加以下两句话设置环境变量。

#这个路径就是gstreamer安装的路径,一般系统默认的路径都是这个
export LD_LIBRARY_PATH=/usr/local/lib
export GST_PLUGIN_PATH=/usr/local/lib:/usr/lib/x86_64-linux-gnu/gstreamer-1.0

  然后source一下刚才的配置,这样就配好环境变量了。

source ~/.bashrc

  第四步,确认自己是否安装成功,终端执行以下命令

#若成功,则有对应版本信息
gst-inspect-1.0 --version

验证RTSP是否能够正常工作

第一步,验证是否能够拉流

#指令是这个,但是这个rtsp流地址可能不好用了,需要自己可以上网找一个可用的rtsp流链接替换掉location中的地址,或者在我下面参考资料的网页里面找到rtsp和rtmp的测试地址
gst-launch-1.0 rtspsrc latency=20 location="rtsp://184.72.239.149/vod/mp4://BigBuckBunny_175k.mov" ! rtph264depay ! h264parse ! avdec_h264 ! autovideosink

第二步,完成推流
  刚刚下载编译的gst-rtsp-server文件夹下边,有个examples文件夹,里面的test-launch.c就是我们测试的源码(未改动)
源码结构如下

#include <gst/gst.h>
#include <gst/rtsp-server/rtsp-server.h>
#define DEFAULT_RTSP_PORT "8554"static char *port = (char *) DEFAULT_RTSP_PORT;static GOptionEntry entries[] = {{"port", 'p', 0, G_OPTION_ARG_STRING, &port,"Port to listen on (default: " DEFAULT_RTSP_PORT ")", "PORT"},{NULL}
};int main (int argc, char *argv[])
{GMainLoop *loop;GstRTSPServer *server;GstRTSPMountPoints *mounts;GstRTSPMediaFactory *factory;GOptionContext *optctx;GError *error = NULL;optctx = g_option_context_new ("<launch line> - Test RTSP Server, Launch\n\n""Example: \"( videotestsrc ! x264enc ! rtph264pay name=pay0 pt=96 )\"");g_option_context_add_main_entries (optctx, entries, NULL);g_option_context_add_group (optctx, gst_init_get_option_group ());if (!g_option_context_parse (optctx, &argc, &argv, &error)) {g_printerr ("Error parsing options: %s\n", error->message);g_option_context_free (optctx);g_clear_error (&error);return -1;}g_option_context_free (optctx);loop = g_main_loop_new (NULL, FALSE);/* create a server instance */server = gst_rtsp_server_new ();g_object_set (server, "service", port, NULL);/* get the mount points for this server, every server has a default object* that be used to map uri mount points to media factories */mounts = gst_rtsp_server_get_mount_points (server);/* make a media factory for a test stream. The default media factory can use* gst-launch syntax to create pipelines.* any launch line works as long as it contains elements named pay%d. Each* element with pay%d names will be a stream */factory = gst_rtsp_media_factory_new ();gst_rtsp_media_factory_set_launch (factory, argv[1]);/* attach the test factory to the /test url */gst_rtsp_mount_points_add_factory (mounts, "/test", factory);/* don't need the ref to the mapper anymore */g_object_unref (mounts);/* attach the server to the default maincontext */gst_rtsp_server_attach (server, NULL);/* start serving */g_print ("stream ready at rtsp://127.0.0.1:%s/test\n", port);g_main_loop_run (loop);return 0;
}

  可以通过输入以下命令行编译

gcc test-launch.c -o test $(pkg-config --cflags --libs gstreamer-rtsp-server-1.0 gstreamer-1.0)

  编译完成后,会生成一个名为test的可执行文件。在当前目录下打开终端,输入

#其中device=/dev/video0是你读取的摄像头编号,如果是笔记本,video0应该是笔记本自带摄像头
./test "( v4l2src device=/dev/video0 norm=255 ! video/x-raw-yuv,format='fourcc'YUY2,width=640,height=480 ! x264enc tune="zerolatency" threads=4  ! rtph264pay name=pay0 pt=96 )"

  再新开一个终端,输入

#这里端口号8554与源文件test-launch.c开头定义的DEFAULT_RTSP_PORT "8554"相一致,如果不一样的话要改成一样的,两者相同就可以
gst-launch-1.0 rtspsrc latency=20 location="rtsp://127.0.0.1:8554/test" ! rtph264depay ! h264parse ! avdec_h264 ! autovideosink

  然后就可以看见你自己啦,这就实现了在本地拉/推流。
  类似的,我们也可以测试关于rtsp流的转发,这里附上一篇相关链接,本文一部分实现过程借鉴于此->基于gstreamer的rtsp推送和转发。

以上过程中的一些Q&A

Q1:关于gstreamer无组件修复的问题(无v4l2src,osssink,xvimagesink等组件)
  原因由anaconda引起,anaconda的环境有安装gstreamer,并为之配置了环境变量,系统一直找到的都是anaconda里低版本的gstreamer。
解决方法:https://blog.csdn.net/qq_41263444/article/details/120994179

Q2:关于库文件<gst/gst.h>不存在的问题
  可能安装过程中某些工具包之间的依赖关系不完善(因为此前remove过旧版本的gstreamer或者旧版工具包)
解决方法:
https://tieba.baidu.com/p/1495215022?red_tag=2587769120
下载synaptic重新安装相关的工具包

Q3:关于安装依赖包遇上E:unable to locate package如何解决
  在系统应用中”软件和更新“中把软件镜像源改为aliyun(阿里云),然后执行以下命令更新软件镜像源(一般改好镜像源后会自动更新一下,采用以下命令以防万一)。

sudo apt-get update
sudo apt-get upgrade

相关资料链接

Gstreamer-rtsp拉流播放
  https://blog.csdn.net/tuenbotuenbo/article/details/121285014

rtsp、rtmp流测试地址
  https://blog.csdn.net/tengkonglieying/article/details/106093350

gst-launch-1.0在linux下的命令(对v4l2src测试)
  https://blog.csdn.net/qq_41592091/article/details/88409402

ubuntu中usb摄像头gstreamer方式采集显示、录像及回放
  https://blog.csdn.net/qq_32196869/article/details/124495493

gstreamer学习(一) gstreamer-rtsp-server环境安装相关推荐

  1. 开始Python学习第二课(python环境安装)

    *** 开始Python学习第二课*** 一. Python语言简介 1. Python语言 1.1 Python的命名 2. Python基本概念 2.1 Python的简单介绍 2.2 Pytho ...

  2. 如何搭建mysql的学习环境_Mysql学习笔记【一、环境安装配置】

    安装 安装流程略去 注:此处有坑,重新安装mysql 8之后,发现mysql起不来,可能原因有以下几点 1.没有data文件,运行mysqld --initialize 2.没有配置文件,自己加一个 ...

  3. Mysql学习笔记【一、环境安装配置】

    安装 https://www.mysql.com/ 官网下载安装包msi 安装流程略去 注:此处有坑,重新安装mysql 8之后,发现mysql起不来,可能原因有以下几点 1.没有data文件,运行m ...

  4. 强化学习笔记(2)深度学习tensorflow2.5以上版本环境安装

    目前的强化学习趋势是和深度学习相结合,因此在配置环境时需要配置深度学习的那一套.这里详细描述一套可用的安装GPU开发套件和tensorflow2.6的流程. 系统环境:Ubuntu 20.04 显卡: ...

  5. 【selenium学习笔记】selenium自动化测试环境安装

    工作中需要用到selenium,因此将学习和工作过程中的笔记整理 下. [Install selenium] 联网情况下,直接利用pip安装按照如下命令安装selenium.[如何安装pip?]--- ...

  6. crank storyboard学习笔记(一)环境安装

    如有问题请联系我,微信 814565668. 目标:用crank实现仪表盘的动态效果. 参考博客:http://blog.csdn.net/guokehello/article/details/516 ...

  7. 唐宇迪学习笔记1:Python环境安装、Pytho科学计算库——Numpy

    目录 一.AI数据分析入门 ​1.案例来源 2.Python环境配置(Python3) Python的安装 Python库安装工具 Jupyter Notebook 二.Python科学计算库--Nu ...

  8. 基于gstreamer的支持动态获取多路流的rtsp server(笔记)

    上篇文章讲了streamer的rtsp推流的基本用法 下面讲搭建动态多路流的rtsp server.有两种方式能达到效果,一种采用main_loop_run运行在线程里,另一种则是创建factory等 ...

  9. gstreamer学习笔记:将音视频合成MPEG2-TS流并打包通过rtp传输

    一.通过rtpbin插件发送 (1)发送端 gst-launch -v gstrtpbin name=rtpbin latency=100 mpegtsmux name="mux" ...

最新文章

  1. C#把数据写到硬盘指定位置
  2. @html.ActionLink的几种参数格式
  3. POJ 3855 计算几何·多边形重心
  4. Android 第十一课 SQlite 数据库存储
  5. 编程范式:命令式编程(Imperative)、声明式编程(Declarative)和函数式编程(Functional)...
  6. 前端自动化构建工具gulp的使用介绍
  7. 全面拆解携程云原生实践,打造智能弹性的云端酒店直连系统!
  8. html论坛发帖案例
  9. SIP穿越NAT SIP穿越防火墙
  10. Verilog语言学习
  11. 如何访问云服务器的共享文件,怎么访问云服务器的共享文件夹
  12. 【BDTC 2016】蚂蚁金服人工智能部技术总监李小龙:人工智能驱动金融生活
  13. Android爬虫(一)使用OkHttp+Jsoup实现网络爬虫
  14. (附源码)计算机毕业设计SSM旅游分享平台
  15. 域控中将计算机账户移动到特定OU下
  16. 第十二届蓝桥杯(2021年)模拟赛 Python组(第一期) 题目+个人解答
  17. 唐尼vr眼镜好吗_USP和唐尼VR眼镜哪个好
  18. Hot scene AGAIN!
  19. 领导发微信:该回复 “收到” 还是 “好的” ?
  20. 海归首选“北广” 薪酬期望值不要太高 元芳你怎么看?

热门文章

  1. 12306打不开怎么办?
  2. C和C++中的struct
  3. 主成分分析法的理解与人脸摆正实例
  4. 《Java8实战》第11章 用 Optional 取代 null
  5. 梗概Kubernetes中的Pause容器为内部镜像源
  6. 多语言软件开发之new CultureInfo(“”)与CultureInfoCreateSpecificCulture(“”)的异同
  7. 第十章——维护索引(8)——在计算列中创建索引提高性能
  8. Transaction-事务
  9. 【流程挖掘的四个质量维度】简单度、拟合度、精确度和泛化度介绍
  10. Pixhawk飞控代码(2019.11.28)