在上一篇文章 使用搬瓦工搭建 ShadowSocks 翻墙(VPN) 中提到了我购买了 VPS 服务资源,所谓物尽其用,仅让其充当 VPN 服务的工具有点浪费,可以在上面跑一些其它服务,比如流媒体直播服务、流媒体转码服务等。关于主机购买,也可以购买国内供应商的提供的主机服务,像阿里云、腾讯云、百度云等,可以关注他们的一些促销活动,在优惠力度大的时候囤机。
我的 VPS 服务器的操作系统为:
1 Operating system: Centos 7 x86_64 bbr
一、登陆 VPS 服务器 我使用的是 MacBook Pro 笔记本,在 MacBook Pro 笔记本上的终端输入命令 ssh root@IP地址 -p ssh端口,其中 IP 地址和 SSH 端口换成你自己的 VPS 信息
1 suntongmiandeMacBook-Pro:~ suntongmian$ ssh root@ 111.11 .111 .111 -p 1111
执行命令后的结果如下:
1 2 3 4 suntongmiandeMacBook-Pro: ~ suntongmian$ suntongmiandeMacBook-Pro: ~ suntongmian$ ssh root@111 .11.111 .111 -p 1111 root@111 .11.111 .111 's password: [root@host ~]#
二、安装 gcc 编译器 给 VPS 主机安装 gcc 编译器
1 [root@host ~]# yum install gcc-c++
三、下载 live55 源码 在主机根目录创建目录 streamingserver
1 2 3 [root@host ~]# [root@host ~]# mkdir streamingserver [root@host ~]#
进入目录 streamingserver
1 2 3 [root@host ~]# [root@host ~]# cd streamingserver [root@host streamingserver]#
从 live555 官网 下载 live555 源码 在终端执行命令下载或者直接在官网下载,以在终端执行命令下载为例子
1 [root@host streamingserver]# curl -O http:
四、解压 在终端执行文件的解压缩命令
1 [root@host streamingserver] # tar -xvf live .2019 .03 .06 .tar .gz
使用 ls 命令查看当前目录下的文件
1 2 3 4 [root@host streamingserver] # [root@host streamingserver] # ls live live .2019 .03 .06 .tar .gz [root@host streamingserver] #
五、编译 第一步:进入 live55 源码目录 live
1 [root@host streamingserver]# cd live
第二步:执行脚本
1 [root@ host live]# ./genMakefiles linux-64 bit
因为我的系统是 Centos, 64bit,执行的是上面的脚本。如果系统是 Mac 系统,那么就要执行脚本 ./genMakefiles macosx
第三步:执行编译
六、启动流媒体服务 第一步:进入 mediaServer 目录
1 2 3 [root@host live]# [root@host live]# cd mediaServer [root@host mediaServer]#
第二步:启动流媒体服务
1 2 [root@host mediaServer]# [root@host mediaServer]# ./live555MediaServer
命令执行后的结果如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 [root@host mediaServer]# [root@host mediaServer]# ./live555MediaServer LIVE555 Media Server version 0.96 (LIVE555 Streaming Media library version 2019.03.06). Play streams from this server using the URL rtsp: where <filename> is a file present in the current directory. Each file 's type is inferred from its name suffix: ".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 See http: (We use port 80 for optional RTSP-over-HTTP tunneling, or for HTTP live streaming (for indexed Transport Stream files only).)
从上面显示的信息可看出,live555 默认支持 .264, .265, .aac, ac3, .amr, .dv, .m4e, .mkv, .mp3, .mpg, .ogg, .ts, .vob, .wav, .webm 视频格式。
七、本地文件上传到服务器 第一步:获取 .mkv 格式的视频文件
如果在网络上找不到合适的 .mkv 格式的视频文件,那么可以使用 ffmpeg 转码获取。ffmpeg 的安装,可参看我的文章 在Mac OSX上安装ffmpeg && ffmpeg命令行将h264封装为mp4
在 MacBook Pro 笔记本的终端输入 ffmpeg 转码命令
1 suntongmiandeMacBook-Pro :myTestVideo suntongmian$ ffmpeg -i SampleVideo_1280x720_10mb.mp4 -vcodec copy -acodec copy output.mkv
执行结果如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 suntongmiandeMacBook-Pro:myTestVideo suntongmian$ suntongmiandeMacBook-Pro:myTestVideo suntongmian$ ls SampleVideo_1280x720_10mb.mp4 suntongmiandeMacBook-Pro:myTestVideo suntongmian$ suntongmiandeMacBook-Pro:myTestVideo suntongmian$ ffmpeg -i SampleVideo_1280x720_10mb.mp4 -vcodec copy -acodec copy output.mkv ffmpeg version 4.1 .2 Copyright (c) 2000 -2019 the FFmpeg developers built with Apple LLVM version 10.0 .0 (clang-1000.11 .45 .5 ) configuration: --prefix=/usr/local/Cellar/ffmpeg/4.1 .2 --enable-shared --enable-pthreads --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags='-I/Library/Java/JavaVirtualMachines/openjdk-11.0.2.jdk/Contents/Home/include -I/Library/Java/JavaVirtualMachines/openjdk-11.0.2.jdk/Contents/Home/include/darwin' --host-ldflags= --enable-ffplay --enable-gnutls --enable-gpl --enable-libaom --enable-libbluray --enable-libmp3lame --enable-libopus --enable-librubberband --enable-libsnappy --enable-libtesseract --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-libxvid --enable-lzma --enable-libfontconfig --enable-libfreetype --enable-frei0r --enable-libass --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-librtmp --enable-libspeex --enable-videotoolbox --disable-libjack --disable-indev=jack --enable-libaom --enable-libsoxr libavutil 56. 22.100 / 56. 22.100 libavcodec 58. 35.100 / 58. 35.100 libavformat 58. 20.100 / 58. 20.100 libavdevice 58. 5.100 / 58. 5.100 libavfilter 7. 40.101 / 7. 40.101 libavresample 4. 0. 0 / 4. 0. 0 libswscale 5. 3.100 / 5. 3.100 libswresample 3. 3.100 / 3. 3.100 libpostproc 55. 3.100 / 55. 3.100 Input #0 , mov,mp4,m4a,3 gp,3 g2,mj2, from 'SampleVideo_1280x720_10mb.mp4' : Metadata: major_brand : isom minor_version : 512 compatible_brands: isomiso2avc1mp41 creation_time : 1970 -01 -01 T00:00 :00.000000 Z encoder : Lavf53.24 .2 Duration: 00 :01 :02.32 , start: 0.000000 , bitrate: 1347 kb/s Stream #0 :0 (und): Video: h264 (Main) (avc1 / 0x31637661 ), yuv420p, 1280 x720 [SAR 1 :1 DAR 16 :9 ], 959 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc (default ) Metadata: creation_time : 1970 -01 -01 T00:00 :00.000000 Z handler_name : VideoHandler Stream #0 :1 (und): Audio: aac (LC) (mp4a / 0x6134706D ), 48000 Hz, 5.1 , fltp, 383 kb/s (default ) Metadata: creation_time : 1970 -01 -01 T00:00 :00.000000 Z handler_name : SoundHandler Output #0 , matroska, to 'output.mkv' : Metadata: major_brand : isom minor_version : 512 compatible_brands: isomiso2avc1mp41 encoder : Lavf58.20 .100 Stream #0 :0 (und): Video: h264 (Main) (avc1 / 0x31637661 ), yuv420p, 1280 x720 [SAR 1 :1 DAR 16 :9 ], q=2 -31 , 959 kb/s, 25 fps, 25 tbr, 1 k tbn, 12800 tbc (default ) Metadata: creation_time : 1970 -01 -01 T00:00 :00.000000 Z handler_name : VideoHandler Stream #0 :1 (und): Audio: aac (LC) ([255 ][0 ][0 ][0 ] / 0x00FF ), 48000 Hz, 5.1 , fltp, 383 kb/s (default ) Metadata: creation_time : 1970 -01 -01 T00:00 :00.000000 Z handler_name : SoundHandler Stream mapping: Stream #0 :0 -> #0 :0 (copy) Stream #0 :1 -> #0 :1 (copy) Press [q] to stop, [?] for help frame= 1557 fps=0.0 q=-1.0 Lsize= 10249 kB time=00 :01 :02.29 bitrate=1347.9 kbits/s speed= 973 x video:7298 kB audio:2919 kB subtitle:0 kB other streams:0 kB global headers:0 kB muxing overhead: 0.316002 % suntongmiandeMacBook-Pro:myTestVideo suntongmian$ suntongmiandeMacBook-Pro:myTestVideo suntongmian$ ls SampleVideo_1280x720_10mb.mp4 output.mkv suntongmiandeMacBook-Pro:myTestVideo suntongmian$
第二步:上传本地文件到远端服务器
我使用的是 MacBook Pro 笔记本,在 MacBook Pro 笔记本上的终端上执行下面的命令,将视频文件上传到 VPS 服务器上。
1 suntongmiandeMacBook-Pro: myTestVideo suntongmian$ scp -P 1111 output.mkv root@111 .11.111 .111 :/root/streamingserver/live/mediaServer
命令执行后的结果如下:
1 2 3 4 5 suntongmiandeMacBook-Pro: myTestVideo suntongmian$ suntongmiandeMacBook-Pro: myTestVideo suntongmian$ scp -P 1111 output.mkv root@111 .11.111 .111 :/root/streamingserver/live/mediaServer root@111 .11.111 .111 's password: output.mkv 100% 30MB 511.1KB/s 01:00 suntongmiandeMacBook-Pro:myTestVideo suntongmian$
其中,myTestVideo 是我的 MacBook Pro 笔记本上存放测试视频的文件夹。/root/streamingserver/live/mediaServer 为 VPS 主机的目录层级。
关于 scp 命令的使用,可参看文章 Linux SSH远程文件/目录传输命令scp
第二步:检测文件是否上传成功
在 VPS 主机上执行命令 ls 查看相应的目录下是否存在文件 output.mkv 。若存在 output.mkv ,就说明上面的第一步操作成功了。
1 2 3 4 5 6 7 [root@host mediaServer] # [root@host mediaServer] # ls COPYING DynamicRTSPServer .o Makefile version .hh COPYING .LESSER live555MediaServer Makefile .head DynamicRTSPServer .cpp live555MediaServer .cpp Makefile .tail DynamicRTSPServer .hh live555MediaServer .o output .mkv [root@host mediaServer] #
八、重新启动流媒体服务 第一步:使用 ctrl+c 终止之前启动的流媒体服务
执行结果如下:
1 2 ^C [root@host mediaServer]#
第二步:重新启动流媒体服务
1 2 [root@host mediaServer]# [root@host mediaServer]# ./live555MediaServer
九、测试视频流 第一步:安装 VLC 视频播放器。我使用的是 MacBook Pro 笔记本,在笔记本上下载并安装了 VLC 视频播放器。
第二步:播放视频流。在 VLC 中打开视频流地址 rtsp://111.11.111.111/output.mkv ,即可看到 live555 服务器推送出来的视频流。