随笔七、开启gst-rtsp-server服务及推流测试

目录

1. 环境

2. 启用gst-rtsp-server服务

3. 交叉编译测试程序examples

4. 推流测试


1. 泰山派开发板环境

泰山派RK3566开发板的SDK使用了GStreamer媒体编解码框架,其扩展能力应该是优于ffmpeg,因此目前不考虑移植ffmpeg。要实现摄像头推流,还需要流体服务器。之前已经使用mediamtx做了测试,但后续需要在应用层面控制摄像头,也可能涉及一些功能需求,必须使用库函数方式。

分析了SDK文件,在\tspi_linux_sdk\buildroot\package\gstreamer1文件夹里,不仅包含gstreamer1和gst1-plugins-xxx插件,还看到了gst1-rtsp-server文件夹,里面集成1.18和1.20两个版本供选择,其中1.20是默认选项。浏览1_20.inc文件

################################################################################
#
# gst1-rtsp-server
#
################################################################################

GST1_RTSP_SERVER_VERSION = 1.20.0
GST1_RTSP_SERVER_SOURCE = gst-rtsp-server-$(GST1_RTSP_SERVER_VERSION).tar.xz
GST1_RTSP_SERVER_SITE = https://gstreamer.freedesktop.org/src/gst-rtsp-server
GST1_RTSP_SERVER_LICENSE = LGPL-2.1+
GST1_RTSP_SERVER_LICENSE_FILES = COPYING COPYING.LIB
GST1_RTSP_SERVER_CPE_ID_VENDOR = gstreamer_project
GST1_RTSP_SERVER_CPE_ID_PRODUCT = gst-rtsp-server
GST1_RTSP_SERVER_INSTALL_STAGING = YES

可以看到,如果启用gst-rtsp-server服务,buildroot会去gstreamer.freedesktop.org自行下载对应版本的安装包。但在默认状态编译泰山派kernel时后没有提供gst-rtsp-server服务,说明SDK里并没有启用。

2. 启用gst-rtsp-server服务

由于SDK里已经包含了相关的必要的设置和工具,启用gst-rtsp-server服务仅需要3个步骤:

第一步是确认需要选择的gst-rtsp-server服务的版本,按照官方说明,必须和gstreamer的版本一致。先在开发板上查看gstreamer的版本。

#确定GStreamer版本
root@RK356X:/# gst-inspect-1.0 --version
gst-inspect-1.0 version 1.20.0
GStreamer 1.20.0
Unknown package origin

的确是1.20,与SDK默认版本的是一致的。

第二步就是开启gst-rtsp-server服务选项,让SDK编译并打包进去。去官网直接下载1.20包(不预先准备应该也是可以的,上面分析是能够自行下载包的),将其放在tspi_linux_sdk\buildroot\dl文件夹里,dl这个文件夹存放buildroot所有压缩包。下载链接

第三步是修改sdk/buildroot/configs/rockchip/video_gst.config文件,最后面添加一行

BR2_PACKAGE_GST1_RTSP_SERVER=y

使能gst-rtsp-server服务,然后就可以重新编译。同意更新定义

在output目录多了一个gst1-rtsp-server-1.20.0文件夹,在其中的gst子目录里有rtsp-server和rtsp-sink两个子目录,提供了rtsp server

但是,在gst1-rtsp-server-1.20.0/build这个编译输出文件夹里,并没有生成examples文件夹。打开gst-rtsp-server-1.20.0.tar.xz包可以看到里面有examples和tests文件夹,里面是测试程序。我们需要使用它们来测试,就只能自己来编译了。

3. 交叉编译测试程序examples

进入tspi_linux_sdk/buildroot/output/rockchip_rk3566/build/gst1-rtsp-server-1.20.0目录,在examples子目录里面有很多test测试源码,比如test-lanuch.c是启动rtsp服务后拉流

gstreamer新版本的包没用makefile,采用的是meson,应该是更加便捷,使用ninja工具编译。

进入<sdk>/buildroot/output/rockchip_rk3566/build/gst1-rtsp-server-1.20.0文件夹,修改meson.build文件199行,把if判断注释掉,这样就可以编译examples文件夹里的文件了

subdir('gst')
#if not get_option('tests').disabled()
  subdir('tests')
#endif
#if not get_option('examples').disabled()
  subdir('examples')
#endif
subdir('docs')

进入build目录,执行ninja编译后会生成examples及tests文件夹,里面是编译好的程序

cd build

ninja

4. 开发板推流测试

将镜像烧写到开发板,将编译好的测试程序test-launch等这些文件拷贝到开发板,记得确认下文件的运行权限。我这里是直接打包到镜像里了。进入程序所在目录执行test-launch启动rtsp服务并从摄像头推流

#摄像头推流,有1s多延迟

./test-launch "( v4l2src device=/dev/video0 ! video/x-raw, format=NV12, width=1920, height=1080, framerate=30/1 ! mpph264enc ! rtph264pay name=pay0 pt=96 )" &

没有摄像头也可以用测试信号推流

#测试信号推流

./test-launch "( videotestsrc ! mpph264enc ! rtph264pay name=pay0 pt=96 )" &

本地拉流,在屏幕上输出

#本地拉流

gst-launch-1.0 playbin uri=rtsp://127.0.0.1:8554/test

电脑端用vlc拉流

由于摄像头是定焦的,自拍距离近了点,不太清晰。

后续将参考测试程序编写应用程序,实现摄像头控制及其他扩展需求。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值