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

打印 上一主题 下一主题

主题 982|帖子 982|积分 2956

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 视频格式。它支持的格式如下所示:
  1. ".264" => a H.264 Video Elementary Stream file
  2.     ".265" => a H.265 Video Elementary Stream file
  3.     ".aac" => an AAC Audio (ADTS format) file
  4.     ".ac3" => an AC-3 Audio file
  5.     ".amr" => an AMR Audio file
  6.     ".dv" => a DV Video file
  7.     ".m4e" => a MPEG-4 Video Elementary Stream file
  8.     ".mkv" => a Matroska audio+video+(optional)subtitles file
  9.     ".mp3" => a MPEG-1 or 2 Audio file
  10.     ".mpg" => a MPEG-1 or 2 Program Stream (audio+video) file
  11.     ".ogg" or ".ogv" or ".opus" => an Ogg audio and/or video file
  12.     ".ts" => a MPEG Transport Stream file
  13.         (a ".tsx" index file - if present - provides server 'trick play' support)
  14.     ".vob" => a VOB (MPEG-2 video with AC-3 audio) file
  15.     ".wav" => a WAV Audio file
  16.     ".webm" => a WebM audio(Vorbis)+video(VP8) file
复制代码
 官网地址截图如下所示:

      根据百度百科的相关定义,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源码包,执行如下命令即可:
  1. su root
  2. cd /home/jack/mysoft
  3. wget http://www.live555.com/liveMedia/public/live.2021.11.23.tar.gz
  4. tar -xvf live.2021.11.23.tar.gz
复制代码
       解压live.2021.11.23.tar.gz 压缩包后,得到live目次,继续编译操作,执行如下命令:
  1. cd live
  2. ./genMakefiles linux-64bit
  3. make
  4. cd mediaServer
复制代码
     此时用 ls 命令可以查察目次列表,如下所示:
  1. COPYING                DynamicRTSPServer.o     Makefile
  2. COPYING.LESSER         live555MediaServer      Makefile.head
  3. DynamicRTSPServer.cpp  live555MediaServer.cpp  Makefile.tail
  4. DynamicRTSPServer.hh   live555MediaServer.o    version.hh
复制代码
     其中的 live555MediaServer 即为RTSP流媒体服务的启动步伐,在启动步伐之前,我们还需要准备一个视频素材,执行如下命令下载:
  1. wget https://c7xcode.obs.cn-north-4.myhuaweicloud.com/models/YOLOV4_coco_detection_car_video/test_video/test.mp4
复制代码
     下载的 test.mp4备用,但由于前面提到,live555的RTSP服务采用文件名的扩展名来主动推测视频编码格式,因此无法直接用如下地址举行播放:
  1. #无法直接播放
  2. rtsp://10.0.2.15/test.mp4
  3. #可以播放
  4. rtsp://10.0.2.15/test.264
复制代码
     因此,下面我们下载 ffmpeg 和 opencv-python工具,执行如下命令:
  1. apt-get install ffmpeg
  2. #sudo snap install ffmpeg  # version 4.3.1
  3. ffmpeg
  4. #############################################################
  5. ffmpeg version 3.4.8-0ubuntu0.2 Copyright (c) 2000-2020 the FFmpeg developers
  6.   built with gcc 7 (Ubuntu 7.5.0-3ubuntu1~18.04)
  7.   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
  8.   libavutil      55. 78.100 / 55. 78.100
  9.   libavcodec     57.107.100 / 57.107.100
  10.   libavformat    57. 83.100 / 57. 83.100
  11.   libavdevice    57. 10.100 / 57. 10.100
  12.   libavfilter     6.107.100 /  6.107.100
  13.   libavresample   3.  7.  0 /  3.  7.  0
  14.   libswscale      4.  8.100 /  4.  8.100
  15.   libswresample   2.  9.100 /  2.  9.100
  16.   libpostproc    54.  7.100 / 54.  7.100
  17. Hyper fast Audio and Video encoder
  18. usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...
  19. 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包,执行如下命令:
  1. apt-get install opencv-python
复制代码
     成功安装后(opencv_python-4.5.4.60-cp36-cp36m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl),输出结果如下所示:



    至此,我们可以用 ffmpeg 举行视频格式转换,执行如下命令:
  1. #h264
  2. ffmpeg -i test.mp4 -codec copy -bsf: h264_mp4toannexb -f h264 test.264
  3. #h265
  4. ffmpeg -i test.mp4  -vcodec  libx265 -preset slow -b:v 2000k  -crf  21 -strict -2 test.265
  5. # ffmpeg -i test.mp4  -vcodec  libx265 -preset slow -b:v 2000k  -crf  21 -strict -2 test265.mp4
复制代码
    成功执行转换命令,则目次的列表如下所示:



    其中有  test.264 和  test.265 文件,我们在安装一个 VLC 工具,则可以根据RTSP协议地址举行视频播放:
  1. rtsp://10.0.2.15/test.264
  2. rtsp://10.0.2.15/test.265
复制代码
    此时可以执行如下命令启动RTSP流媒体服务器:
  1. ./live555MediaServer
  2. #################################
  3. LIVE555 Media Server
  4.         version 1.10 (LIVE555 Streaming Media library version 2021.11.23).
  5. Play streams from this server using the URL
  6.         rtsp://10.0.2.15/<filename>
  7. where <filename> is a file present in the current directory.
复制代码
打开VLC 工具,打开网络流,填写对应的RTSP视频流协议即可


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

篮之新喜

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表