挑战一个人搭建一套完整直播系统6: 直播网页播放的实现

之前尝试了使用rtmp-nginx-flash发现总是有问题,查询后发现,自2020年底,所有浏览器不再支持flash插件,rtmp的视频流就不能在浏览器中播放了,这个时候可以采用将rtmp重新封装成http-flv的视频流,首先配置nginx的http-flv模块:

nginx配置http-flv模块并重新编译,首先获取代码

git clone https://github.com/winshining/nginx-http-flv-module.git

nginx配置该模块

./configure --add-module=../../live/nginx-http-flv-module/

重新编译和安装:

make && make install

接着配置html网页demo,这里采用flv.js来进行播放,所以尝试使用flv.js,这里直接给出一个现成的html代码:

git clone https://github.com/godblesszhouzhou/flv.git

直接将flv文件夹放在nginx的html路径下,这里对应的是

/usr/local/nginx/html/

配置nginx.conf文件:

worker_processes  1;

#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;
#error_log  logs/error.log  debug;

#pid        logs/nginx.pid;

events {
    worker_connections  1024;
}

# 添加RTMP服务
rtmp {

    server {
        listen 1935;
        application live {  
            live on;#开启直播
            hls on;#开启hls
            hls_path /usr/local/m3u8File; #配置HLS m3u8文件存放地址   
        }
	}

}
# 添加http-flv服务
http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    keepalive_timeout  65;
    server {
        listen       80;
        server_name  localhost;
        location / {
            root   html/flv;
            index  index.html index.htm;
        }
        
        location /mylive_hls{
            types {
                #m3u8 type设置
                application/vnd.apple.mpegurl m3u8;
                # ts 分片文件设置
                video/mp2t ts;
            }
        alias /usr/local/m3u8File;
            add_header Cache-Control no-cache; #禁止缓存
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
    server {
        listen       8080;
        server_name	 localhost;
		
		location /live {
			flv_live on;
            chunked_transfer_encoding  on; #open 'Transfer-Encoding: chunked' response
			add_header 'Access-Control-Allow-Credentials' 'true'; #add additional HTTP header
			add_header 'Access-Control-Allow-Origin' '*'; #add additional HTTP header
			add_header Access-Control-Allow-Headers X-Requested-With;
			add_header Access-Control-Allow-Methods GET,POST,OPTIONS;
			add_header 'Cache-Control' 'no-cache';
        }
	}
}

可以看到这里配置了两个http服务,一个是网页服务,入口网页是html/flv文件夹下的index.html,一个是http-flv服务,另外保留原有的rtmp服务,重启nginx服务浏览器输入:

http://127.0.0.1:80

再次进入网页可以看到如下界面:

 参照第3节,使用ffmpeg进行推流:

ffmpeg -i movie.mp4 -vcodec libx264 -acodec aac -f flv rtmp://127.0.0.1:1935/live/1

刷新网页,选择stream url,输入播放网址为:

http://127.0.0.1:8080/live?port=1935&app=live&stream=1

可以看到推流的视频。

概述: iShow是一套基于P2P技术的在线视频直播系统,iShow依存于web网页,无需下载插件,可实现低延时高清的视频语音直播体验。现已广泛应用于教育、娱乐、客服等各个行业,随着国内带宽的提升和各类新技术的加入,视频直播技术已经逐渐成为下一代互联网的主流,多媒体在线直播体验势必将会涵盖各类终端,成为全民参与的新一代互联网主旋律。 随着国家网络带宽的升级,民用宽带的价格逐渐降低以及微博等即时交流的网络媒体的兴盛,视频多媒体将将成为下一代网络的主流力量,iShow作为国内第一个也是唯一一个使用点对点视频技术开发的网站应用,正在引领一股新的流媒体平民化浪潮。 功能列表: 1、即时视频语音直播 2、视频状态检测 3、局域网内的P2P直播,不消耗任何外网带宽 4、可设置的视频清晰度和缓冲时间 5、无延时的即时文字和表情传输 6、礼物/消费/主播结算/房间类型等功能 7、播放录像功能 iShow的技术优势: 1、直播低延时、文本数据即时传输 2、多媒体直播不耗费任何服务器资源,对服务器无负载 3、带宽占用低 4、视频高清,采用高清编码,影响更清晰,传输更流畅 5、无需架设额外的视频流媒体服务器,节省60%~90%的运营开支 6、可扩展,可跨平台同步直播 7、兼容任何开发语言,简单几步可与任何网站进行对接整合 8、智能识别用户的在线状态 9、可脱离动态程序和数据库独立运行,如:无需任何架设,即可直接集成到任何网站,进行直播或文字沟通 目前同行业唯一一款成熟产品,处于行业绝对领跑者
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值