1. 前言
最近经常使用英伟达的Orin和瑞芯微RK3588做开发,自己还买了好几块开发板,很多需要自己琢磨,今天忽然发现了一篇文章,意外解决了一些之前的问题,以此作为记录:
文章链接:https://doc.embedfire.com/linux/rk356x/quick_start/zh/latest/lubancat_rk_software_hardware/software/gstreamer/gstreamer.html#:~:text=rtspsrc%E5%92%8Crt2. Gstreamer工具以及MPP插件 — 快速使用手册—基于LubanCat-RK356x系列板卡 文档 (embedfire.com)https://doc.embedfire.com/linux/rk356x/quick_start/zh/latest/lubancat_rk_software_hardware/software/gstreamer/gstreamer.html#:~:text=rtspsrc%E5%92%8Crt
以下是备份的,防止那个文章没了:
2. Gstreamer工具以及MPP插件
本章节主要介绍Gstreamer工具及相关插件测试⽅法。
2.1. Gstreamer简介
GStreamer是一个开源的多媒体框架,用于构建音频和视频处理应用程序。它提供了丰富的功能,可以处理各种格式的媒体流,包括录制、播放、编辑和流式传输。 通过其插件架构,GStreamer支持许多编解码器和容器格式,使开发者能够轻松地构建复杂的多媒体应用,适用于桌面、嵌入式系统和服务器环境。
2.2. Gstreamer常⽤命令
2.2.1. gst-launch-1.0
gst-launch-1.0是GStreamer框架中的一个命令行工具,用于快速创建和测试多媒体管道。 它允许用户构建数据流管道,以处理音频和视频数据,进行实时流处理、编码、解码、转码等操作。简单示例如下:
1 2 |
#使⽤videotestsrc⽣成⼀段视频,并使⽤xvimagesink显⽰ gst-launch-1.0 videotestsrc ! xvimagesink |
2.2.2. gst-play-1.0
gst-play-1.0是GStreamer的一个简单媒体播放器工具,旨在快速播放音频和视频文件。 它支持多种媒体格式,并能够使用 GStreamer 的插件架构进行扩展。 通过命令行参数,用户可以轻松地播放本地文件或流式媒体,非常适合测试和演示多媒体功能。
1 2 |
# 播放test.mp4,并通过xvimagesink显⽰ gst-play-1.0 test.mp4 --videosink=xvimagesink |
2.2.3. gst-inspect-1.0
gst-inspect-1.0 是 GStreamer 的一个工具,用于查看 GStreamer 中可用的插件、元素和它们的属性。 通过这个工具,用户可以获取有关特定插件的信息,例如支持的格式、属性、信号和功能。
1 2 3 4 |
# 不带任何参数,列出所有插件 gst-inspect-1.0 # 列出xvimagesink插件的所有信息 gst-inspect-1.0 xvimagesink |
2.3. Gstreamer常⽤插件
2.3.1. Source
GStreamer的Source插件用于生成和提供媒体数据流。它们可以从不同的数据源读取音频或视频,比如文件、网络、设备等。 常见的Source插件包括文件源(如 filesrc)、网络源(如 tcpserversrc)、设备源(如 v4l2src),这些插件允许开发者灵活地构建多媒体管道, 以满足不同的应用需求。通过配置Source插件,用户可以轻松获取和处理多种类型的媒体数据。
2.3.1.1. filesrc
从⽂件读取数据,⽰例如下:
1 2 3 4 5 6 7 8 |
#创建/tmp/test echo 666 > /tmp/test #读取文件数据到/tmp/test2 gst-launch-1.0 filesrc location=/tmp/test ! filesink location=/tmp/test2 #查看 cat /tmp/test2 |
2.3.1.2. videotestsrc
⽣成视频数据,⽰例如下:
1 2 3 4 |
# 使⽤默认格式输出视频 gst-launch-1.0 videotestsrc ! xvimagesink # 使⽤指定格式输出视频 gst-launch-1.0 videotestsrc ! "video/x-raw,width=1920,height=1080,format=(string)NV12" ! xvimagesink |
2.3.1.3. v4l2src
从摄像头获取视频数据,⽰例如下:
1 2 3 4 5 |
#如果不指定摄像头编号,默认使用系统的第一个视频设备/dev/video0 gst-launch-1.0 v4l2src ! video/x-raw,width=1920,height=1080,format=NV12 ! xvimagesink #如果需要使用特定的摄像头,可以通过device属性指定设备,例如 gst-launch-1.0 v4l2src device=/dev/video0 ! video/x-raw,width=1920,height=1080,format=NV12 ! xvimagesink |
2.3.1.4. rtspsrc和rtspclientsink
rtspsrc和rtspclientsink是GStreamer中用于处理RTSP流的两个不同元素。
rtspsrc:这是一个源元素,用于接收RTSP流。它可以从RTSP服务器拉取音视频流,并将其传递给管道的下游元素进行处理。
rtspclientsink:这是一个接收元素,用于将处理后的音视频流发送到RTSP服务器。
简单来说,rtspsrc用于接收流,rtspclientsink用于发送流。
系统默认没有安装插件,需要进行安装:
1 2 |
#安装插件 sudo apt install gstreamer1.0-rtsp |