注:首先说明这次的搭建过程使用的是老师自己弄的一块tx2,内核也编译过,所以不确定是否可以适用于其他地方,另外因为这块板子的内核被编译过,造成安装使用过程中出现了许多未知的错误,有可能记录的安装配置过程会有所遗漏,如果此时某个地方报错,建议百度查看是否能解决;
首先在开发板中输入
gst-launch-1.0 --version
可以查看当前开发板自带的gst-launch和GStreamer 的版本,一般安装的各种附件版本最好小于等于当前的版本
注意如果是0.1的版本和1.0的版本使用命令上是有区别的,所以建议最好升级到1.0的版本
查到当前版本后,我首先安装了一般来说需要的依赖库,就输入(这里因为我前期参考了许多帖子,找不到具体有哪些,随便复制粘贴了一份,如有错漏在行修改)
sudo apt-get install build-essential dpkg-dev flex bison autotools-dev automake liborc-dev autopoint libtool gtk-doc-tools
sudo apt-get install libxv-dev libasound2-dev libtheora-dev libogg-dev libvorbis-dev
sudo apt-get install libbz2-dev libv4l-dev libvpx-dev libjack-jackd2-dev libsoup2.4-dev libpulse-dev
sudo apt-get install faad libfaad-dev libfaac-dev
sudo apt-get install libx264-dev libmad0-dev
sudo apt-get install yasm
sudo apt-get install libssl-dev
随后在这个网址https://gstreamer.freedesktop.org/src/中下载配套的附件,我的版本是
gst-launch-1.0 version 1.8.1
GStreamer 1.8.3
所以我配套下载了,可以进行参考
gst-libav-1.80
gst-plugins-0.8.12
gst-plugins-bad-1.8.3
gst-plugins-good-1.8.3
gst-plugins-base-1.8.3
gst-plugins-ugly-1.8.3
orc-0.4.23
gst-rtsp-server-1.8.1
随后对每个附件解压后,使用
sudo ./configure
sudo ./autogen.sh
sudo make
suao make install
的语句进行安装,安装顺序一般是从 base–good–bad—ugly —lbav
如果出现什么错误,肯定是有依赖的附件没装上
比如
sudo apt-get install gtk-doc-tools
如果在安装gst-rtsp-server-1.8.1时,特别要注意,在使用
sudo ./configure
sudo ./autogen.sh
时观察是否有类似这样的语句输出
configure: No package ‘gstreamer-plugins-base-1.0’ found configure:
error: no gstreamer-plugins-base-1.0 >= 1.8.0 (GStreamer Base Plugins)
found configure failed
可以尝试使用下面的语句解决
sudo apt-get install libgstreamer-plugins-base1.0-dev libgstreamer-plugins-good1.0-dev libgstreamer-plugins-bad1.0-dev
然后重新安装good-bad的安装,在到gst-rtsp-server的文件中运行
sudo ./configure
sudo ./autogen.sh
如果还有上面的提示,可以试试用
sudo apt-get install gstreamer-plugins-base-1.0
sudo apt-get install gstreamer-plugins-bad-1.0
sudo apt-get install gstreamer-plugins-good-1.0
sudo apt-get install gstreamer-plugins-ugly-1.0
等看看是否成功
如果以上都安装好了,没问题了
测试udp传输到本地进行接收显示输入
发送端
gst-launch-1.0 videotestsrc ! video/x-raw,format=I420 ! omxh264enc ! video/x-h264,stream-format=byte-stream ! rtph264pay mtu=1400 ! udpsink host=127.0.0.1 port=5000
接收端
gst-launch-1.0 udpsrc port=5000 ! 'application/x-rtp,encoding-name=(string)H264' ! rtph264depay ! h264parse ! omxh264dec ! nvoverlaysink sync=false async=false
测试rtsp传输到本地进行接收显示输入
发送端
./test-launch "(videotestsrc ! video/x-raw,format=I420,framerate= 25/1 ! x264enc ! video/x-h264,stream-format=byte-stream ! rtph264pay name=pay0 pt=96)"
接收端
gst-launch-1.0 rtspsrc location=rtsp://127.0.01:8554/test ! rtph264depay ! h264parse ! omxh264dec ! nvoverlaysink sync=false async=false
在输入发射端和接收端的代码时,还是找一个老师帮忙解决的,因为对于板子编解码的过程完全没有数,查别人的编解码过程是不能帮助正确接收的
在开发板中输入
gst-inspect-1.0 rtph264
可以查看一些帮助文档
另外在整个实现过程中,如果实在写不来程序,还可以借助wireshark网络调试助手监听是否有数据传输。
也可以用vlc查看是否传输了正确的编码图像,咩有正确传输的时候,在vlc的codec中会显示成奇怪的mp3格式