2021年4月11日 星期日

Gstreamer 搭建RTSP伺服器

基於Gstreamer1.x搭建Rtsp Server, gst-rtsp-server不是以plugin的形式存在,需要下載原始碼編譯。

0.安裝依賴包

# sudo apt-get install gtk-doc-tools libgstreamer1.0-0 gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav gstreamer1.0-doc gstreamer1.0-tools gstreamer1.0-x gstreamer1.0-alsa gstreamer1.0-gl gstreamer1.0-gtk3 gstreamer1.0-qt5 gstreamer1.0-pulseaudio


1.下載、編譯gst-rtsp-server

# sudo git clone git://anongit.freedesktop.org/gstreamer/gst-rtsp-server

# sudo git checkout remotes/origin/1.8

# sudo ./autogen.sh 

# sudo make

# cd example


2.推流

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

or

# ./test-launch "v4l2src device=/dev/video0 ! videoconvert ! video/x-h264,framerate=(fraction)15,width=800,height=592,profile=baseline,stream-format=(string)=byte-stream ! x264enc profile=baseline tune=zerolatency threads=4 bitrate=500 ! rtph264pay pt=96 name=pay0 alsasrc ! audioconvert ! audio/x-raw ! voaacenc ! queue ! rtpmp4apay pt=97 name=pay1"

3.拉流

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


使用test-uri


推流
# ./test-uri "rtsp://id:pw@192.168.0.51:554"
# ./test-uri "file:///home/user/media/carsideimpactslow.mov"

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

Cross compile

先準備一個corss copmile配置檔,這裡命名為opt.cross
TARGET_ARCH=aarch64-linux-gnu
ROOTFOLDER=/YOUR_PATH
CC=$(ROOTFOLDER)/bin/$(TARGET_ARCH)-gcc
CXX=$(ROOTFOLDER)/bin/$(TARGET_ARCH)-c++
AR=$(ROOTFOLDER)/bin/$(TARGET_ARCH)-ar
AS=$(ROOTFOLDER)/bin/$(TARGET_ARCH)-as
LD=$(ROOTFOLDER)/bin/$(TARGET_ARCH)-ld
STRIP=$(ROOTFOLDER)/bin/$(TARGET_ARCH)-strip
RANLIB=$(ROOTFOLDER)/bin/$(TARGET_ARCH)-ranlib
NM=$(ROOTFOLDER)/bin/$(TARGET_ARCH)-nm
RTSP_CFLAGS = -g -Wall -fPIC --sysroot=$(ROOTFOLDER)
RTSP_LDFLAGS = -L$(ROOTFOLDER)/lib/aarch64-linux-gnu \
-L$(ROOTFOLDER)/usr/lib/aarch64-linux-gnu \
-Wl,-rpath-link=$(ROOTFOLDER)/lib/aarch64-linux-gnu \
-Wl,-rpath-link=$(ROOTFOLDER)/usr/lib/aarch64-linux-gnu \

rtsp-server-config:
(export CC=$(CC); \
export CXX="$(CXX)"; \
export AR="$(AR)"; \
export AS=$(AS); \
export LD=$(LD); \
export STRIP=$(STRIP); \
export RANLIB=$(RANLIB); \
export NM=$(NM); \
export CFLAGS="$(RTSP_CFLAGS)"; \
export LDFLAGS="$(RTSP_LDFLAGS)"; \
./configure --prefix=$(ROOTFOLDER)/usr --host=$(TARGET_ARCH) --enable-introspection=no);

rtspServer:rtsp-server-config
make

在要編譯的根目錄執行
make -f opt.cross rtspServer
rtspServer是opt.cross裡的target
這樣在configure完成後會自動把make也做完。


沒有留言:

張貼留言