浏览器中使用WebRTC方式实现视频流低延迟的无插件播放的技术方案。
WebRTC需要SRS的最低版本:SRS4.0.14,所以我们部署的srs的时候版本需要大于SRS4.0.14。
SRS4.0.14,支持了RTMP推流,WebRTC播放。
SRS部署安装
进入指定目录,进行下载
wget https://github.com/ossrs/srs/archive/v4.0.76.tar.gz
解压
tar -zxvf srs-4.0.76.tar.gz
进入目录
cd /usr/local/srs-4.0.76/trunk
编译安装
./configure --with-hls --with-ssl --with-http-server --with-http-callback --with-http-api --with-ingest --with-stream-caster && make
启动
./objs/srs -c conf/rtc.conf
查看状态
./etc/init.d/srs status
停止
./etc/init.d/srs stop
查看srs版本
./objs/srs -v
默认配置如下:
listen 1935;
max_connections 1000;
daemon off;
srs_log_tank console;//打印日志配置: srs_log_tank ./logs/srs.log;
http_server {
enabled on;
listen 8080;
dir ./objs/nginx/html;
}
http_api {
enabled on;
listen 1985;
}
stats {
network 0;
}
rtc_server {
enabled on;
# Listen at udp://8000
listen 8000;
#
# The $CANDIDATE means fetch from env, if not configed, use * as default.
#
# The * means retrieving server IP automatically, from all network interfaces,
# @see https://github.com/ossrs/srs/issues/307#issuecomment-599028124
candidate $CANDIDATE;
}
vhost __defaultVhost__ {
rtc {
enabled on;
bframe discard;
}
}
FFmpeg推流
推流验证
推流命令行实例:
ffmpeg -i rtsp://admin:abc12345@10.5.12.30:554/h264/ch1/main/av_stream -c copy -f flv rtmp://127.0.0.1:1935/live/mystream
前端页面
浏览器H5使用JSwebrtc播放webrtc流,需要下载jswebrtc.min.js文件并保存在本地。
<video id="video" class="video" controls autoplay style="" >
<script src="/static/js/jswebrtc.min.js"></script>
<script>
var video = document.getElementById('video');
var url = 'webrtc://127.0.0.1/live/livestream';
var player = new JSWebrtc.Player(url, { video: video, autoplay: true, });
</script>
打开浏览器请求播放成功,视频延迟低。