Ubuntu用live555快速搭建一个RTSP视频流服务器

举报
jackwangcumt 发表于 2021/12/07 21:36:03 2021/12/07
【摘要】 RTSP(Real Time Streaming Protocol)是一个实时流传输协议,是TCP/IP协议体系中的一个应用层协议。它使用TCP或UDP完成数据传输。本文在Ubuntu上用live555快速构建了一个RTSP视频流服务器,并通过ffmpeg完成h264和h265的视频格式转换。

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
     官网地址截图如下所示:

1.png
2 RTSP 概述


      根据百度百科的相关定义,RTSP(Real Time Streaming Protocol)是一个实时流传输协议,是TCP/IP协议体系中的一个应用层协议。它使用TCP或UDP完成数据传输。HTTP与RTSP相比,HTTP请求由客户机发出,服务器作出响应;使用RTSP时,客户机和服务器都可以发出请求,即RTSP可以是双向的。RTSP是用来控制声音或影像的多媒体串流协议。

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),输出结果如下所示:

2.png
    至此,我们可以用 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

    成功执行转换命令,则目录的列表如下所示:

3.png
    其中有  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视频流协议即可,截图如下所示:

5.png
   单击【Play】按钮,即可播放视频,示例界面如下所示:

6.png
   以上为H264编码格式的视频,下面为H265编码格式的视频,播放界面如下所示:

7.png

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。