为了模拟客户端对视频流的推流和拉流,决定下一个流媒体服务器,据说EasyDarwin很一个开源又简单,就选它了。
下载从它的官网http://www.easydarwin.org/来到git仓库,选则easydarwin项目后进入releases,选安装包:
问题是git下载网速被限制了,下了一丢丢就没了,除非自己下载源码、编译和打包。为求方便,先将就下个老版本用用https://download.csdn.net/download/wuxun1997/12239168
下完后解压,按readme.txt操作一番即可安装成功:
1、运行EasyDarwin/start.bat启动EasyDarwin
D:EasyDarwinEasyDarwin-Windows-x86_64-v7.3.17.0325EasyDarwin>cd ./ D:EasyDarwinEasyDarwin-Windows-x86_64-v7.3.17.0325EasyDarwin>EasyDarwin -c ./easydarwin.xml -d EasyDarwin/7.3 ( Build/17.0325; Platform/Win32; Compile_Flags/_RELEASE;Release/EasyDarwin; State/Development; ) Built on: Mar 25 2017, 17:14:41
2、运行nginx-1.11.12/nginx.exe,双击exe图标后nginx是以后台进程运行的
3、在浏览器输入localhost:10080后进入easydarwin的登陆页面
4、敲入账号密码(默认都是admin)后进入后台管理页面
5、作为流媒体服务器,自然是用来接收流媒体的,我们通过ffmpeg推流给它,敲入命令:
C:Userswulf>ffmpeg -re -i d:vedioVID_20200223_153448.mp4 -rtsp_transport tcp -f rtsp rtsp://127.0.0.1/test ffmpeg version git-2020-03-06-cfd9a65 Copyright (c) 2000-2020 the FFmpeg developers built with gcc 9.2.1 (GCC) 20200122 configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libdav1d --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libaom --enable-libmfx --enable-ffnvcodec --enable-cuda-llvm --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth --enable-libopenmpt --enable-amf libavutil 56. 42.100 / 56. 42.100 libavcodec 58. 73.102 / 58. 73.102 libavformat 58. 39.101 / 58. 39.101 libavdevice 58. 9.103 / 58. 9.103 libavfilter 7. 77.100 / 7. 77.100 libswscale 5. 6.100 / 5. 6.100 libswresample 3. 6.100 / 3. 6.100 libpostproc 55. 6.100 / 55. 6.100 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'd:vedioVID_20200223_153448.mp4': Metadata: major_brand : mp42 minor_version : 0 compatible_brands: isommp42 creation_time : 2020-02-23T07:34:48.000000Z com.android.version: 9 Duration: 00:08:30.66, start: 0.000000, bitrate: 9987 kb/s Stream #0:0(eng): Video: h264 (Constrained Baseline) (avc1 / 0x31637661), yuv420p(tv, bt709), 1280x720, 9783 kb/s, SAR 1:1 DAR 16:9, 30.18 fps, 30 tbr, 90k tbn, 60 tbc (default) Metadata: rotate : 90 creation_time : 2020-02-23T07:34:48.000000Z handler_name : VideoHandle Side data: displaymatrix: rotation of -90.00 degrees Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 192 kb/s (default) Metadata: creation_time : 2020-02-23T07:34:48.000000Z handler_name : SoundHandle Stream mapping: Stream #0:0 -> #0:0 (h264 (native) -> mpeg4 (native)) Stream #0:1 -> #0:1 (aac (native) -> aac (native)) Press [q] to stop, [?] for help Output #0, rtsp, to 'rtsp://127.0.0.1/test':014:32:22.77 bitrate=N/A speed=N/A Metadata: major_brand : mp42 minor_version : 0 compatible_brands: isommp42 com.android.version: 9 encoder : Lavf58.39.101 Stream #0:0(eng): Video: mpeg4, yuv420p, 720x1280 [SAR 1:1 DAR 9:16], q=2-31, 200 kb/s, 30 fps, 90k tbn, 30 tbc (default) Metadata: encoder : Lavc58.73.102 mpeg4 creation_time : 2020-02-23T07:34:48.000000Z handler_name : VideoHandle Side data: cpb: bitrate max/min/avg: 0/0/200000 buffer size: 0 vbv_delay: N/A displaymatrix: rotation of -0.00 degrees Stream #0:1(eng): Audio: aac (LC), 48000 Hz, stereo, fltp, 128 kb/s (default) Metadata: creation_time : 2020-02-23T07:34:48.000000Z handler_name : SoundHandle encoder : Lavc58.73.102 aac frame=10877 fps= 30 q=31.0 size=N/A time=00:06:02.53 bitrate=N/A dup=6 drop=68 speed= 1x
6、然后我们刷新下界面,可以看到直播流列表来了一条数据:
7、通过ffmpeg播放器来拉流,接收从EasyDarwin流媒体服务器过来的流:
C:Userswulf>ffplay -i -rtsp_transport tcp rtsp://127.0.0.1:10554/test ffplay version git-2020-03-06-cfd9a65 Copyright (c) 2003-2020 the FFmpeg developers built with gcc 9.2.1 (GCC) 20200122 configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-fontconfig --enable-gnutls --enable-iconv --enable-libass --enable-libdav1d --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libtheora --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-zlib --enable-gmp --enable-libvidstab --enable-libvorbis --enable-libvo-amrwbenc --enable-libmysofa --enable-libspeex --enable-libxvid --enable-libaom --enable-libmfx --enable-ffnvcodec --enable-cuda-llvm --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 --enable-avisynth --enable-libopenmpt --enable-amf libavutil 56. 42.100 / 56. 42.100 libavcodec 58. 73.102 / 58. 73.102 libavformat 58. 39.101 / 58. 39.101 libavdevice 58. 9.103 / 58. 9.103 libavfilter 7. 77.100 / 7. 77.100 libswscale 5. 6.100 / 5. 6.100 libswresample 3. 6.100 / 3. 6.100 libpostproc 55. 6.100 / 55. 6.100 Input #0, rtsp, from 'rtsp://127.0.0.1:10554/test':q= 0B f=0/0 Metadata: title : No Name Duration: N/A, start: 0.000000, bitrate: N/A Stream #0:0: Video: mpeg4 (Simple Profile), yuv420p, 720x1280 [SAR 1:1 DAR 9:16], 30 tbr, 90k tbn, 30 tbc Stream #0:1: Audio: aac (LC), 48000 Hz, stereo, fltp [mpeg4 @ 00000211fc56d940] warning: first frame is no keyframe 169.27 A-V: -0.000 fd= 154 aq= 2KB vq= 7KB sq= 0B f=0/0
看起来播放的画面并不是很清晰: