基础知识:
简单的说就是把视频设备(摄像机,监控头等)的视频信号采集到服务器,供网络访问。能够像Web服务器发布HTML文件一样发布流媒体文件和从摄像机、视频采集卡等设备传来的实况流。
nginx-rtmp-module
NGINX的流媒体插件,除了直播发布音视频流之外具备流媒体服务器的常见功能
- 比如推拉流媒体资源
- 基于HTTP的FLV/MP4 VOD点播
- HLS (HTTP Live Streaming) M3U8的支持
- 基于http的操作(发布、播放、录制)
- 可以很好的协同现有的流媒体服务器以及播放器一起工作
- 在线调用ffmpeg对流媒体进行转码
- H264/AAC音视频编码格式的支持
- linux/BSD/MAC系统的支持
simple-rtmp-server
一个采用MIT协议授权的国产的简单的RTMP/HLS 直播服务器,其核心的价值理念在于简单高效。
tep 1: build srs
tar xf simple-rtmp-server-*.*.tar.gz
cd simple-rtmp-server-*.*/trunk
./configure --with-ssl --with-hls
make
step 2: start srs
./objs/simple_rtmp_server -c conf/srs.conf
step 3(optional): start nginx for HLS
sudo ./objs/nginx/sbin/nginx
step 4: publish live stream
FMS URL: rtmp://127.0.0.1:1935/live
Stream: livestream
For example, use ffmpeg to publish:
ffmpeg -re -i source.flv -vcodec copy -acodec copy \
-f flv -y rtmp://127.0.0.1:1935/live/livestream
step 5: play live stream
rtmp url: rtmp://127.0.0.1:1935/live/livestream
m3u8 url: http://127.0.0.1:80/live/livestream.m3u8
Flazr
Flazr 是一个实现了 RTMP 流媒体传输协议的 Java 类库,该项目包含一个流媒体服务器和相关的工具。
Red5 Pro
是Red5的升级版,它不仅支持RTMP协议,还支持RTSP、HLS协议。是一个采用Java开发开源的Flash流媒体服务器。它支持:把音频(MP3)和视频(FLV)转换成播放流; 录制客户端播放流(只支持FLV);共享对象;现场直播流发布;远程调用。Red5使用RTMP, RTMPT, RTMPS, 和RTMPE作为流媒体传输协议,在其自带的一些示例中演示了在线录制,flash流媒体播放,在线聊天,视频会议等一些基本功能。
Darwin streaming server(简称DSS)
DSS是Apple公司提供的开源实时流媒体播放服务器程序。整个程序使用C++编写,在设计上遵循高性能,简单,模块化等程序设计原则,务求做到程序高效,可扩充性好。并且DSS是一个开放源代码的,基于标准的流媒体服务器,可以运行在Windows NT和Windows 2000,以及几个UNIX实现上,包括Mac OS X,Linux,FreeBSD,和Solaris操作系统上的。
EasyDarwin
EasyDarwin开源流媒体服务器是基于Apple的开源项目Darwin Streaming Server v6.0.3开发和扩展的,EasyDarwin支持标准RTSP/RTP/RTCP协议,具备RTSP直播功能,适应PC、安卓、IOS直播等各终端平台,最大程度贴近安防监控、移动互联网流媒体需求。
EasyRMS
EasyRMS是EasyDarwin开源流媒体平台的录像与回放服务,能够直接对接安防摄像机、EasyDarwin流媒体服务器、其他标准RTSP服务,基于HLS协议,录像存储为ts流,支持本地存储与阿里云对象存储(OSS云存储),接口调用非常简单,架构灵活,而且非常易于扩展,开发者可以用EasyRMS进行扩展,开发成自己需要的云存储服务。
Kurento
Kurento 是一个 WebRTC 流媒体服务器以及一些客户端API,有了它,开发WWW及智能手机平台的高级视频应用就变得更加容易。可以利用Kurento开发的应用类型包括,视频会议,音视频广播,音视频录制、转码等。
Feng
Feng是LSCUBE维护的开源流媒体服务器,兼容IETF标准,实现了RTSP、RTP/RTCP。
Feng支持的编码标准:
音频:
- MPEG Audio (MPEG-1/2 Layer I/II/III) (rfc2250)
- Vorbis (draft)
- AAC (MPEG-4 Part 3) (rfc3640)
视频:
- MPEG Video (MPEG-1/2) (rfc2250)
- MPEG 4 Visual (MPEG-4 Part 2) (rfc3016)
- H.264 (MPEG-4 Part 10) (rfc3984)
- H.263 / H.263+ (rfc4629)
- VP8 (draft)
- Theora (draft)
Feng的主要特性包括:多格式支持、媒体定位、模块化架构。
Feng由C语言编写,依赖Glib、ffmpeg、libev和netembryo等库。
Live555
Live555 是一个为流媒体提供解决方案的跨平台的C++开源项目,它实现了对标准流媒体传输协议如RTP/RTCP、RTSP、SIP等的支持。Live555实现了对多种音视频编码格式的音视频数据的流化、接收和处理等支持,包括MPEG、H.263+、DV、JPEG视频和多种音频编码。同时由于良好的设计,Live555非常容易扩展对其他格式的支持。目前,Live555已经被用于多款播放器的流媒体播放功能的实现,如VLC(VideoLan)、MPlayer。