Ubuntu用live555快速搭建一个RTSP视频流服务器
1 Live555 概述
根据百度百科的相关定义,Live555 是一个流媒体解决方案,它是用C++语言编写的开源项目,具有跨平台的特性,可以运行在多种主流操作系统上,它实现了对标准流媒体传输协议的支持,比如RTP/RTCP、RTSP、SIP等。Live555实现了对多种音视频编码格式的音视频数据的流化、接收和处理等支持,包括MPEG、H.264、H.265、DV、JPEG视频和多种音频编码。同时由于良好的设计,它非常容易扩展对其他格式的支持。目前,Live555已经被用于多款播放器的流媒体播放功能的实现,如VLC(VideoLan)和MPlayer。
LIVE555官网地址为 http://www.live555.com ,可以提供功能完备的RTSP服务器应用,它可以流式传输几种媒体文件,只需要将视频文件放到mediaServer当前工作目录或子目录中,视频的格式从文件的扩展名进行自动推测,比如 .264 则推测为 H.264 视频格式。它支持的格式如下所示:
".264" => a H.264 Video Elementary Stream file
".265" => a H.265 Video Elementary Stream file
".aac" => an AAC Audio (ADTS format) file
".ac3" => an AC-3 Audio file
".amr" => an AMR Audio file
".dv" => a DV Video file
".m4e" => a MPEG-4 Video Elementary Stream file
".mkv" => a Matroska audio+video+(optional)subtitles file
".mp3" => a MPEG-1 or 2 Audio file
".mpg" => a MPEG-1 or 2 Program Stream (audio+video) file
".ogg" or ".ogv" or ".opus" => an Ogg audio and/or video file
".ts" => a MPEG Transport Stream file
(a ".tsx" index file - if present - provides server 'trick play' support)
".vob" => a VOB (MPEG-2 video with AC-3 audio) file
".wav" => a WAV Audio file
".webm" => a WebM audio(Vorbis)+video(VP8) file
官网地址截图如下所示:
2 RTSP 概述
根据百度百科的相关定义,RTSP(Real Time Streaming Protocol)是一个实时流传输协议,是TCP/IP协议体系中的一个应用层协议。它使用TCP或UDP完成数据传输。HTTP与RTSP相比,HTTP请求由客户机发出,服务器作出响应;使用RTSP时,客户机和服务器都可以发出请求,即RTSP可以是双向的。RTSP是用来控制声音或影像的多媒体串流协议。
3 RSTP Server搭建
本文基于Ubuntu 18.04版本操作系统,其中已经安装了Python3.6和pip等环境。首先我们需要下载live源码包,执行如下命令即可:
su root
cd /home/jack/mysoft
wget http://www.live555.com/liveMedia/public/live.2021.11.23.tar.gz
tar -xvf live.2021.11.23.tar.gz
解压live.2021.11.23.tar.gz 压缩包后,得到live目录,继续编译操作,执行如下命令:
cd live
./genMakefiles linux-64bit
make
cd mediaServer
此时用 ls 命令可以查看目录列表,如下所示:
COPYING DynamicRTSPServer.o Makefile
COPYING.LESSER live555MediaServer Makefile.head
DynamicRTSPServer.cpp live555MediaServer.cpp Makefile.tail
DynamicRTSPServer.hh live555MediaServer.o version.hh
其中的 live555MediaServer 即为RTSP流媒体服务的启动程序,在启动程序之前,我们还需要准备一个视频素材,执行如下命令下载:
wget https://c7xcode.obs.cn-north-4.myhuaweicloud.com/models/YOLOV4_coco_detection_car_video/test_video/test.mp4
下载的 test.mp4备用,但由于前面提到,live555的RTSP服务采用文件名的扩展名来自动推测视频编码格式,因此无法直接用如下地址进行播放:
#无法直接播放
rtsp://10.0.2.15/test.mp4
#可以播放
rtsp://10.0.2.15/test.264
因此,下面我们下载 ffmpeg 和 opencv-python工具,执行如下命令:
apt-get install ffmpeg
#sudo snap install ffmpeg # version 4.3.1
ffmpeg
#############################################################
ffmpeg version 3.4.8-0ubuntu0.2 Copyright (c) 2000-2020 the FFmpeg developers
built with gcc 7 (Ubuntu 7.5.0-3ubuntu1~18.04)
configuration: --prefix=/usr --extra-version=0ubuntu0.2 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --enable-gpl --disable-stripping --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librubberband --enable-librsvg --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libopencv --enable-libx264 --enable-shared
libavutil 55. 78.100 / 55. 78.100
libavcodec 57.107.100 / 57.107.100
libavformat 57. 83.100 / 57. 83.100
libavdevice 57. 10.100 / 57. 10.100
libavfilter 6.107.100 / 6.107.100
libavresample 3. 7. 0 / 3. 7. 0
libswscale 4. 8.100 / 4. 8.100
libswresample 2. 9.100 / 2. 9.100
libpostproc 54. 7.100 / 54. 7.100
Hyper fast Audio and Video encoder
usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...
Use -h to get full help or, even better, run 'man ffmpeg'
注意,这个输出信息中,有一个configuration配置项,--prefix=/usr --extra-version=0ubuntu0.2 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --enable-gpl --disable-stripping --enable-avresample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librubberband --enable-librsvg --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-omx --enable-openal --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-chromaprint --enable-frei0r --enable-libopencv --enable-libx264 --enable-shared 这个在我们自行编译ffmpeg 时可以参考,比如 --enable-libx265 --enable-libx264 --enable-shared --enable-gpl 等。否则在自行编译的版本中,ffmpeg可能不支持视频的 H264和H265编码。
下面我们安装一个opencv python包,执行如下命令:
apt-get install opencv-python
成功安装后(opencv_python-4.5.4.60-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl),输出结果如下所示:
至此,我们可以用 ffmpeg 进行视频格式转换,执行如下命令:
#h264
ffmpeg -i test.mp4 -codec copy -bsf: h264_mp4toannexb -f h264 test.264
#h265
ffmpeg -i test.mp4 -vcodec libx265 -preset slow -b:v 2000k -crf 21 -strict -2 test.265
# ffmpeg -i test.mp4 -vcodec libx265 -preset slow -b:v 2000k -crf 21 -strict -2 test265.mp4
成功执行转换命令,则目录的列表如下所示:
其中有 test.264 和 test.265 文件,我们在安装一个 VLC 工具,则可以根据RTSP协议地址进行视频播放:
rtsp://10.0.2.15/test.264
rtsp://10.0.2.15/test.265
此时可以执行如下命令启动RTSP流媒体服务器:
./live555MediaServer
#################################
LIVE555 Media Server
version 1.10 (LIVE555 Streaming Media library version 2021.11.23).
Play streams from this server using the URL
rtsp://10.0.2.15/<filename>
where <filename> is a file present in the current directory.
打开VLC 工具,打开网络流,填写对应的RTSP视频流协议即可,截图如下所示:
单击【Play】按钮,即可播放视频,示例界面如下所示:
以上为H264编码格式的视频,下面为H265编码格式的视频,播放界面如下所示:
- 点赞
- 收藏
- 关注作者
评论(0)