论坛风格切换切换到宽版
  • 2438阅读
  • 0回复

[辅助教学]校园网络视频直播系统,内附教程 [复制链接]

上一主题 下一主题
离线海豚
 

发帖
13950
金钱
436105
威望
0
贡献值
1
只看楼主 正序阅读 使用道具 0 发表于: 2020-08-30
软件是QQ群好友陈炯提供。









1 / 14
校园网络视频直播服务
直播流程
推流:将音视频推送到流媒体服务器的过程。
拉流:从服务器获取音视频数据的过程。
一、 采集
(一) 视频采集方案
1、 USB 高清摄像头(网络主播常用,做小讲座、微课直播很方便)
2、 摄像机加 HDMI/SDI 采集卡或 HDMI/SDI 编码器
3、 IP 网络摄像头
4、 手机摄像头
(二) 声音采集方案
1、 摄像头、 摄像机、手机等自带麦
2、 麦克风加外置声卡或调音台
(三) 录播设备
部分学校有、多机位音视频采集
二、 推流
(一) 常用流媒体协议
协议 播放器 延迟(秒) 系统兼容性
RTSP 专用 APP 1
RTMP 浏览器 FLASH 1-3 PC
HTTP-FLV 浏览器 FLASH、 HTML5 1-3 PC
HLS 浏览器 HTML5 10-20 PC、手机
备注: IP 网络摄像头使用 RTSP 协议
某些硬盘录像机也可以通过 RTSP 协议访问
推流采用 RTMP 协议
播放可采用 RTMP、 HTTP-FLV、 HLS
音视频采集 编码、推流 流媒体服务器 拉流、播放2 / 14
(二) 推流方式
1. PC 软件, OBS Studio 支持导播、录屏、叠加、 抠像等。
OBS 自带媒体源 拉取 IP 摄像头 RTSP 流不稳定,推荐使用 VLC 插件
2. PC 软件, VMIX 常用于 LED 大屏播放, 可控制 IP 摄像头云台。
同样拉取 IP 摄像头 RTSP 流不稳定,需 22 版以上才支持 VLC 插件
3. 录播机
4. FFmpeg.exe 命令行程序, 有录制、转码、流化音视频等功能。
5. 手机 Android 版 禾苗 play 有导播功能、 微信小程序 禾苗 Live
6. 某些摄像机带 WIFI 功能(可直接推流)
7. HDMI 编码器(可直接推流)
8. IP 网络摄像头(可直接推流)3 / 14
三、 流媒体服务器
网络宽带需求:
码流为 1280*720 1500 Kbps, 100M 网络大概支持 100M/1500K≈66 路左右。
使用 Windows 系统、 开源服务端软件:
(一) node-media-server v2.1.4
项目地址: https://github.com/illuspas/Node-Media-Server
先下载 node.js node-v12.14.0-win-x64.zip 解压到 D 盘
CMD 命令行下,进入 d:\ node-v12.14.0-win-x64
执行 npm install node-media-server
建立配置文件 app.js
启动服务 node.exe app.js
浏览器访问: http://127.0.0.1:8000 查看服务状态4 / 14
(二) srs-2.0-258
开箱即用,解压、运行 run.bat
SRS2 文档 https://github.com/ossrs/srs/wiki/v2_CN_Home
SRS 在线控制台 http://ossrs.net:1985/console/ng_index.html
SRS 文档特别完善,学习流媒体技术推荐
(三) nginx-rtmp-win32
项目地址: https://github.com/illuspas/nginx-rtmp-win32
同样开箱即用,解压、运行 nginx.exe
支持 RTMP、 HLS, 不支持 FLV
(四) ZLMediaKit
项目地址: https://github.com/xiongziliang/ZLMediaKit
UI 硬盘录相机风格: https://github.com/chenxiaolei/ZLMediaKit_NVR_UI
大同二小易和军推荐5 / 14
(五) 局域网同网段 UDP 组播推流
无需服务器, 一对多发送,宽带占用小。 加入组内的电脑都可接收。
1. OBS 组播设置,注意是录像, 采用组播地址,端口自定义, 容器格式 mpegts、 视
频编码 libx264、 音频编码采用 aac, ffplay.exe win7 默认不能解码声音。
需要先加一条环境变量 : set SDL_AUDIODRIVER=directsound
运行: cmd /c set SDL_AUDIODRIVER=directsound&&ffplay udp://234.0.0.1:6666
Vlc 无法播放。
2. Vmix 不支持组播, 可以录制成 WMV 流, 使用 windows media paly 播放。
另外可以打开外部输出,再用 ffmpeg 推流。
Ffmpeg.exe -f dshow -i video="vMix Video" -f dshow -i audio="vMix Audio" -vcodec
libx264 -acodec aac -s 1280*720 -b:v 1500k -f mpegts udp://234.0.0.1:6666
3. iAVCast 串流直播 输入源较单一、只支持 USB 摄像头、采集卡,输出流较丰富。
支持 HTTP、 RTSP、 UDP,也可 RTMP 推流。 另外此软件非常占资源。
可与 Vmix 配合、 Vmix 做导播,打开外部输出、 iAVCast 采集,再输出流。
UDP 流设置: 输出流#1, 视频编码 MPEG-2 或 MPEG-4 音频编码 AAC-LC, UDP
应用到流#1。
VLC 播放 IP 地址前需要加@符号,如命令行启动: vlc udp://@234.2.3.4:64006 / 14
四、 拉流
1、 VLC 播放器
2、 FFplay 播放器
3、 WEB 网页播放:
1) FLASH 播放器 Ckplayer 、 SrsPlayer ;
2) HTML5 播放器 FLV.js
测试电脑: i7-4790, 16G 内存, 单机测试, 2020 年 1 月 5 日
未测试手机端播放,学校使用一般不需要。
软件 CPU 占用 播放方式 进程数 内存占用
OBS Studio 推流 3% 1280*720 1500 Kbps 推流 1 209M
SRS-win 流媒体服务 1% RTMP + FLV 1 11M
Chrome 浏览器 6% 3 个页面,FLASH + FLASH + HTML5 14 897M
IE11 浏览器 5% 2 个页面,FLASH + FLASH
不支持 FLV.js 3 295M
Maxthon 浏览器 6% 3 个页面,FLASH + FLASH + HTML5 11 698M
VLC 播放器 2% RTMP + FLV 2 264M
FFplay 播放器 3% RTMP + FLV 2 160M
WEB 播放器:
播放器 协议 播放方式 备注
FLV.js FLV HTML5 不支持 IE
ckplayer RTMP、 FLV FLASH
ksplayer-web RTMP、 FLV FLASH、 HTML5 自动切换
cyberplayer RTMP、 FLV FLASH、 HTML5 支持 IE87 / 14
五、 录制
(一) node-media-server v2.1.4
配置文件 app.js
录制文件可以设置到 public 目录, NMS 有完整的 HTTP 服务器,可做视频点播回放。
mediaroot: './node_modules/node-media-server/public/media'
(二) srs-2.0-258
配置文件 conf\srs.conf 开启录制参数
SRS 不可做回放点播。可另外用 nginx 做视频点播。
(三) nginx-rtmp-win32
WIN 版不支持录制8 / 14
六、 压力测试
测试电脑: i7-4790, 16G 内存。单机测试, 2020 年 1 月 6 日,各 1 小时左右。
OBS Studio 1280*720 1500 Kbps 推流
测试 1:
客户端软件 客户端数量
flazr-0.7-RC2 150
VLC 10
FFplay 10
浏览器 5
测试结果:
服务端软件 CPU 内存 网络 测试结果
node-media-server v2.1.4 5% 105M 320M 正常
srs-2.0-258 5% 43M 283M 正常
nginx-rtmp-win32 1.21 5% 16M 285M
Vlc 偶尔卡顿
Ffplay 卡顿更严重
浏览器播放正常9 / 14
node-media-server v2.1.4
srs-2.0-258 (管理面板部分时间不准确,)
nginx-rtmp-win32 1.2.1 (测试时间未满 1 小时)10 / 14
测试 2:
客户端测试软件 服务端 数量 CPU 内存
flazr-0.7-RC2 node-media-server v2.1.4 601 路 7% 95M
flazr-0.7-RC2 srs-2.0-258 601 路 7% 90M
flazr-0.7-RC2 nginx-rtmp-win32 1.21 601 路 7% 22M11 / 14
附一:
1. 使用 nssm 安装 node.js 为系统服务
下地载地址: http://www.nssm.cc/download
命令行运行 nssm install
APP 设置
日志文件:
2. SRS 安装为系统服务同样使用 nssm。
不需设置日志文件, SRS 配置文件可以开启保存日志文件。
srs_log_tank file;
srs_log_file ./objs/srs.log;
3. Nginx 直接启动即可,自带进程守护。12 / 14
附二:
1、 文件推流
ffmpeg -re -i file.mp4 -vcodec libx264 -acodec aac -f flv rtmp://127.0.0.1/live/test1
2、 Windows 桌面推流
ffmpeg -f gdigrab -i desktop -vcodec libx264 -preset ultrafast -acodec libfaac -f flv
rtmp://127.0.0.1/live/test1
3、 播放 RTMP 流:窗口宽 320 、无需缓存
ffplay rtmp://192.168.1.2/live/test1 -x 320 -fflags nobuffer
4、 枚举采集设备
ffmpeg -list_devices true -f dshow -i dummy
5、 视频截图
ffmpeg -i "dvr.flv" -ss 0:0:10 -vframes 1 -s 400x240 image-1.jpg
6、 湖南卫视 RTMP 地址 测试用
rtmp://58.200.131.2:1935/livetv/hunantv
7、13 / 14
附三:
视频格式,这玩意实在太多了,估计有上百种。
每种格式还有很多版本,光看文件名是不能判断视频文件格式,有些是代表容器。
比如:MP4 文件, 编码方式有好几种, 看图, 目前大多是 H264
大多视频播放器,可以查看到视音频的编码信息, ffmpeg.exe –i 文件名,也可查看编码
信息和 Metadata 数据。
视频码率,这个就直接关系视频质量。网络下载几个视频查看 720P 动态码率 500 左右。
帧率:国标 PAL 每秒 25 帧。
关键帧:流视频直接影响就是播放体验, 打开视频是秒播或者先黑屏才播放。
常用格式:
1. MP4
HTML5 浏览器默认支持的格式,现在的主流
2. FLV、 F4V
FLASH 的视频格式,在手机还不是很流行的时候, 网络在线视频基本都是这种格式。
很可惜 FLASH 已经死了,目前还有些技术是领先的,并没有完美的替代方案。
3. WMV
这个是微软的,做 PPT 插入视频推荐,兼容性最好。
4. M3U8
目前比较常见,主要兼容苹果手机, 实际就是一个文本文件,里面保存着视频文件
列表,为 TS 文件, 一个 ts 文件大概几秒左右。 因为切片分段的方式,有一定的防
止下载的作用。
通过转码软件 ShanaEncoder 和格式工厂, 查看 mp4 支持的编码器有:14 / 14
附四:
SRS-回看点播服务,使用 node.js 写的,大部分功能完成,不想继续了。
录制好的 FLV 文件需要 yamid.exe 修复 Metadata 数据, 在线点播时才能随意拖动。
大概实现方法,开启 SRS 录制完成回调 API,收到 API 后得到录制文件名,调用 yamid.exe
修复视频头,调用 FFmpeg.exe 给视频截图,生成 HTML, 回放文件列表,通过 WEB 点播。
最后更新: 2020 年 1 月 18 日
2020 年 3 月 8 日
开福区第一小学 陈炯

下载地址:
https://www.lanzoui.com/iRxJKg7ql1g

评价一下你浏览此帖子的感受

精彩

感动

搞笑

开心

愤怒

无聊

灌水
我爱潜水!
快速回复
限100 字节
 
上一个 下一个