1 安装gstreamer
gstreamer的编译较麻烦,要安装gstreamer的源码包和插件包
网上有的方法直接使用apt包安装,但是安装的版本比较低是1.14 后面编译webrtc插件时要求gstreamer要求>1.19 所以使用源码编译的方式
1.1 编译gstreamer和插件
参考链接
gstreamer源码编译参考 !!!
glib编译升级链接
编译ffmpeg在编译源码包之前
编译完gstreamer后
1.2 编译gstreamer-example
2 简便安装与使用gstreamer
2.1安装gstreamer 基本库
sudo apt update
sudo apt upgrade
下载基本的包
apt-get install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev libgstreamer-plugins-bad1.0-dev gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav gstreamer1.0-tools gstreamer1.0-x gstreamer1.0-alsa gstreamer1.0-gl gstreamer1.0-gtk3 gstreamer1.0-qt5 gstreamer1.0-pulseaudio
//查看版本
gst-inspect-1.0 --version
安装参考:安装参考链接
2.2 显示v4l2摄像头
gst-launch-1.0 v4l2src device=/dev/video0 ! image/jpeg,width=1280,height=720,framerate=30/1 ! jpegdec ! videoconvert ! xvimagesink
------- 先查看摄像头的配置信息
v4l2-ctl --list-formats-ext -d /dev/video0
!!! 一定要满足摄像头的格式、帧率和分辨率
------ YUYV USB摄像头
gst-launch-1.0 v4l2src device=/dev/video0 ! "video/x-raw, format=(string)YUY2, width=640, height=480, framerate=30/1" ! videoconvert ! autovideosink
------- mjpg USB摄像头
gst-launch-1.0 v4l2src device=/dev/video0 ! image/jpeg,width=1920,height=1080,framerate=60/1 ! jpegparse ! jpegdec ! videoconvert ! autovideosink
// jpeg 的格式为压缩过的图像编码,需要解码成YUYV或nv12
------- 自适应 USB摄像头
gst-launch-1.0 v4l2src device=/dev/video0 ! videoconvert ! autovideosink
2.3 使用gstreamer推送rtmp流
gst-launch-1.0 -v v4l2src device=/dev/video4 ! video/x-raw, format=YUY2, width=640, height=480, framerate=30/1 ! videoconvert ! x264enc tune=zerolatency ! flvmux streamable=true ! rtmpsink location='rtmp://127.0.0.1:1935/live/livestream'
format = YUY2表示v4l2摄像头的输出数据格式,一般为 YUY2(未压缩的年YUYV图像帧)或mjpeg(视频编码)。因此要推rtmp需要转码或编码为h264。推rtmp到srs参考
----- 使用GPU进行推流