全网最新整理覆盖全平台电脑、手机的7个开源免费流媒体直播平台以及完整源码和文档。
如今上到太空站、下到在家养猪,各行各业都在直播。直播之所以如此盛行,就是因为其能够给粉丝观众亲临现场的感受,以及直播过程中所附带着巨大的经济效益。这种方式可以为无法亲自到场的人表演、分享知识、与粉丝互动,在这个过程中人们对知识、商品等内容深入地了解,提升了分享者或者相关商品的知名度,产生了消费欲望。
从技术角度讲,直播是一种通过互联网实时播放视频和音频的方式。其核心正是流媒体服务器。流媒体服务器就是处理流媒体的服务器。直播过程需要使用流媒体服务器,一个完整的直播过程,包括采集、处理、编码、封包、推流、传输、转码、分发、解码、播放等过程,流媒体服务器主要负责采集,传输和播放等过程。
流媒体服务的传输方式有两种:顺序流传输和实时流传输。其中顺序流传输是在下载文件的同时用户可观看在线媒体。实时流传输是实时传送,特别适合用于直播。
主流的流媒体协议有:HLS、RTSP、RTMP、WebRTC等。HLS是Apple的动态码率自适应技术,主要用于PC和Apple终端的音视频服务。HLS 延迟大,适合视频点播;RTSP虽然实时性最好,但是实现起来比较复杂,适合视频聊天和视频监控;RTMP主要用于互联网音视频传输,它使用的是TCP传输,因为互联网环境相对较差,采用RTMP保证了视频的传输质量,但是其传输延迟相对较高,传输效率相对较低。WebRTC目前更多用在视频会议等场景,但各厂商也在逐渐向更广阔场景发力。
以下是一些开源免费的直播平台,可以作为流媒体系统或者直播平台私有化部署。
01 OwnCast
https://github.com/owncast/owncast
Owncast是一个开源直播视频流和聊天服务器,风格类似于大型主流选项。通常,Owncast与任何使用RTMP向远程服务器广播的软件兼容。OBS、Streamlabs、Restream等工具都与Owncast一起使用。后端是用Go编写的,前端是React写的。
Docker安装:
docker run -v pwd
/data:/app/data -p 8080:8080 -p 1935:1935 -it owncast/owncast:latest
02 Ant Media Server
https://github.com/ant-media/Ant-Media-Server
Ant Media Server是一款实时流媒体引擎,通过WebRTC技术提供网络自适应的超低延迟流媒体服务,延迟约为0.5秒。Ant Media Server具备较高可扩展性,可以在本地服务器或云上运行。
功能特性:
超低延迟流:Ant Media Server基于WebRTC的流媒体技术提供超低延迟流媒体,非常适合游戏和实时通信等应用。
自适应比特率流:Ant Media Server支持自适应网络速度,这意味着它可以根据观众的连接速度自动调整流的质量。
多协议支持:Ant Media Server支持一系列流媒体协议,包括RTMP、HLS和WebRTC,使其与各种设备和平台兼容。
点播流媒体:除了流媒体直播,Ant Media Server还支持点播流媒体,允许观众在自己方便的时候观看预先录制的内容。
03 Monibuca
https://github.com/langhuihui/monibuca
Monibuca是一个用Go编写的开源流媒体服务开发框架。它没有任何外部依赖,并支持任何流协议。该框架由引擎、插件和实例项目三部分组成。引擎提供了一个通用的流数据缓存和转发机制;而插件提供了可以无限扩展的附加功能;实例项目使用了引擎和插件,并且可以根据需求进行自定义扩展。
功能特性:
引擎方面
提供插件机制,对插件的启动,配置解析,事件派发等进行统一管理
提供H264、H265、AAC、G711格式的转发
提供可复用的AVCC格式、RTP格式、AnnexB格式、ADTS格式等预封装机制
提供多Track机制,支持大小流,加密流扩展
提供DataTrack机制,可用于实现房间文字聊天等功能
提供时间戳同步机制,限速机制
提供RTP包乱序重排机制
提供订阅者追帧跳帧机制(首屏秒开)
提供发布订阅对外推拉的基础架构
提供鉴权机制的底层架构支持
提供内存复用机制
提供发布者断线重连机制
提供按需拉流机制
提供HTTP服务端口
提供HTTP API接口自动注册机制
提供HTTP接口中间件机制
提供结构化日志
提供流信息统计和输出
提供事件总线机制,可以对所有插件广播事件
提供配置热更新机制
插件方面
提供RTMP协议的推拉流,对外推拉流(支持RTMPS)
提供RTSP协议的推拉流,对外推拉流
提供HTTP-FLV协议的拉流,对外拉流,读取本地FLV文件
提供WebSocket协议的拉流
提供HLS协议的拉流,对外拉流
提供WebRTC协议的推拉流
提供GB28181协议的推流,提供dump回放分析能力
提供Onif协议的支持
提供WebTransport协议的拉流
提供fmp4协议的拉流
提供边缘服务器功能,实现级联拉流
提供录像功能,支持flv、mp4、hls、raw格式
提供日志持久化功能,支持按天、按小时、按分钟、按秒、按大小、按文件数等多种方式
提供截屏功能
提供HTTP回调功能
提供预览功能(集成Jessibuca Pro)
提供房间功能(可实现视频会议)
提供对接Prometheus的功能
远程控制台
提供多实例管理功能
提供流媒体详情
提供配置可视化编辑
提供日志可视化显示
提供插件可视化管理
提供GB设备管理
提供动态添加远程推拉流界面
提供WebRTC背景墙功能
提供多人视频演示
docker安装:
docker run -id -p 1935:1935 -p 8080:8080 -p 8443:8443 -p 554:554 -p 58200:58200 -p 5060:5060/udp -p 8000:8000/udp -p 9000:9000 langhuihui/monibuca:latest
04 SRS
https://github.com/ossrs/srs
SRS视频服务器是一款可靠、高效的工具,可用于实时传输高质量视频内容。它支持RTMP、WebRTC、HLS、HTTP-FLV、SRT、MPEG-DASH和GB 28181等多种协议,为跨各种平台和跨设备的流媒体视频内容提供了全面的解决方案。SRS在设计时考虑到了简单性和效率,使其非常易于使用且高效。
其实时功能可确保视频内容以最小的延迟进行流式传输,为观众提供无缝体验。此外,SRS内置了高质量和高级功能,使用户能够优化其视频流体验。它支持多种协议,确保用户根据自己的需求和偏好有广泛的选择。总的来说,SRS是任何希望实时传输高质量视频内容的人的优秀工具,其多功能性和可靠性使其成为视频流媒体行业的杰出解决方案。
使用方式
docker安装/运行:
docker run --rm -it -p 1935:1935 -p 1985:1985 -p 8080:8080
-p 8000:8000/udp -p 10080:10080/udp ossrs/srs:5
使用ffmpeg推流:
ffmpeg -re -i ./doc/source.flv -c copy -f flv -y rtmp://localhost/live/livestream
使用VLC Player 播放:
RTMP:rtmp://localhost/live/livestream
http-flv : http://localhost:8080/live/livestream.flv
HLS:http://localhost:8080/live/livestream.m3u8.
05 LiveGo
https://github.com/gwuhaolin/livego
LiveGo是一款高效且友好的直播服务器,旨在满足现代直播的需求。它基于纯Golang框架,兼容各种平台,易于使用。
该服务器支持RTMP、AMF、HLS、HTTP-FLV、FLV、TS、H264、AAC和MP3等常用传输协议,是寻求通用性和灵活性的用户的理想选择。此外,LiveGo的先进编码格式确保您的广播具有高质量,并且没有任何延迟。
LiveGo还为用户提供各种工具和资源,以增强直播体验。例如,可以通过添加覆盖层、徽标和其他视觉元素来自定义广播。此外,服务器提供了一系列的分析工具,使您能够跟踪您的观众参与和其他重要指标.
总的来说,LiveGo是一个特殊的直播服务器,旨在满足现代流媒体的需求。凭借其令人印象深刻的功能,用户友好的界面和高性能的功能,它是任何寻找可靠和高效的直播解决方案的人的理想选择。
docker启动方式:
docker run -p 1935:1935 -p 7001:7001 -p 7002:7002 -p 8090:8090 -d gwuhaolin/livego
使用方式:
(1)访问 http://localhost:8090/control/get?room=movie
获取一个房间的 channelkey(channelkey用于推流,movie用于播放)。
(2)推流
通过RTMP协议推送视频流到地址
rtmp://localhost:1935/{appname}/{channelkey} (appname默认是live),
例如:
ffmpeg -re -i demo.flv -c copy -f flv rtmp://localhost:1935/{appname}/{channelkey}
(3)播放
支持多种播放协议,播放地址如下:
RTMP:rtmp://localhost:1935/{appname}/movie
FLV:http://127.0.0.1:7001/{appname}/movie.flv
HLS:http://127.0.0.1:7002/{appname}/movie.m3u8
06 pingos
https://github.com/pingostack/pingos
PingOS依赖NGINX构建,并且继承arut和AlexWoo的nginx-rtmp-module模块。修复arut和AlexWoo版本存在的部分问题外,PingOS在编码和直播协议以及其他方面做了多项功能扩展。
功能特性:
直播协议:RTMP、HTTP(S)-FLV、HTTP(S)-TS、HLS(支持HTTPS)、HLS+(支持HTTPS)、DASH(支持HTTPS)。
音视频编码:H264、H265、MP3、AAC。
直播录像:FLV文件格式和TS文件格式。
GOP缓存: 实现秒开和内存复用。
application支持通配符: “ * ”号通配符实现自动匹配推拉流时使用的application名字,无需累赘的配置。
VHOST功能: 支持配置多个server域名。
控制台接口: 通过HTTP API接口控制推流、拉流以及录像过程。
配置动态加载: 修改配置文件后无需对nginx做任何操作就可读取最新配置。
流量计费: 通过配置自定义流量日志。
变量参数配置: 配置文件中使用变量。
进程间拉流: 进程间相互拉流,解决了原生nginx-rtmp-module模块多进程拉流失败的问题。
集群化功能: 服务器间推拉流功能(http-flv、rtmp协议)。
html5网页播放器:pingos-player播放器将持续兼容各浏览器平台,以及多种直播协议。
Docker安装部署:
# 添加可执行权限
chmod +x run.sh
# 编译镜像, 可选操作(./run.sh up -d时若镜像不存在则自动编译)
./run.sh build
# 默认以同目录docker-compose.yml文件作为配置文件启动容器
# 使用docker/compose容器启动容器
./run.sh up -d
# 或
docker-compose up -d
推流地址:rtmp://ip/live/流名
播放地址:
rtmp 播放:rtmp://ip/live/流名
http(s)-flv 播放:http(s)/ip/flv/流名
hls 播放:http(s)/ip/hls/流名.m3u8
hls+ 播放:http(s)/ip/hls2/流名.m3u8
http(s)-ts 播放:http(s)/ip/ts/流名
直播流监控后台:
访问地址:http://ip/rtmp_stat 。通过该页面可以查看当前正在执行的推流和播放记录。
html5播放器:
访问地址:http://ip/h5player/flv 这个播放器是基于flv.js的网页播放器,可以实现无插件播放http-flv直播流。 一旦你能够访问这个页面,说明你的直播服务器已经成功搭建起来了。
07 LiveKit
https://github.com/livekit/livekit
LiveKit是一个可用于提供WebRTC多用户会议服务的开源项目。该项目旨在帮助开发人员实现实时视频音频功能。
通过利用LiveKit的强大功能,开发人员可以创建无缝、可扩展、可靠的会议解决方案,例如在线教育平台、商业通信工具等等。LiveKit能够处理多个用户并提供高质量的会议体验,是应用程序开发的视频音频功能首选。
功能特征:
可扩展的分布式WebRTC SFU(选择性转发单元)
现代、功能齐全的客户端SDK
专为生产环境而构建,支持JWT身份验证
强大的网络和连接,UDP/TCP/TURN
易于部署:单个二进制文件、Docker或Kubernetes
高级功能包括:说话人检测、联播、端到端优化、开发人员友好的API、webhooks、分布式多区域。
提供多个客户端,包括JavaScript、Swift UI、Flutter、React Native、科特林、Rust和Unity WebGL。
丰富的生态系统
MacOS安装:
brew install livekit
Linux安装:
curl -sSL https://get.livekit.io/cli | bash
windows安装下载地址:
https://github.com/livekit/livekit-cli/releases/latest