基於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也做完。
沒有留言:
張貼留言