red5+obs+ffmpeg 推流实现单方直播 window +linux

red5  windows:

jdk :1.8   red5:1.0.8  (版本很重要。。)

一般来说,一个完整的流媒体服务系统需要三个部分组成:编码器、流服务器和播放器。.

编码器通过对内容来源(如MP3文件或者麦克风输入)进行编码,并将编码过的内容发送到流服务器;流服务器再将它们发布到Internet,这样客户端的播放器只要连接到流服务器就可以进行在线播放了。

主流开源流媒体服务器有哪些?
流媒体解决方案 Live555(C++)
流媒体平台框架 EasyDarwin(C++)
实时流媒体播放服务器程序DarwinStreamingSrvr(C++)
流媒体实时传输开发包 jrtplib
多媒体处理工具 ffmpeg
多媒体编码工具包Libav
Flash流媒体服务器 Red5(Java)
流媒体服务器 Open Streaming Server (Java)
FMS流媒体服务器(Adobe,收费的)
Wowza流媒体服务器(Java)
开源流媒体平台FreeCast(Java)

商用系统
1.NTV Media Server G3
2.Flash Media Server5
3.Windows Media Server

Red5 服务器搭建
JDK自行安装
下载Red5
https://github.com/Red5/red5-server/releases

http://www.red5.org/red5-server/

解压到自己的一个能记住的文件夹中 eg:D\Red5

配置Red5相关参数
修改red5.properties配置文件..\conf\red5.properties

只需要配置HTTP 和RMTP节点的host和port即可 默认也行host配置成0.0.0.0 输入局域网IP或者127.0.0.1都可以正常访问

 

 

配置完成后,双击Red5目录下的red5.bat即可启动Red5服务器。
启动完成后,输入http://192.168.7.96:5080,出现画面则表示成功。(如果不改配置文件,用http://localhost:5080即可)


视频直播开始准备
下载demo
上图可以看到install红色的那行字。点击进去。选择OLFA 安装

 

如果下载不成功请看这里
确定webapps下面没有oflaDemo文件夹。

下载地址链接: https://pan.baidu.com/s/1Qd0UggtEhBv5nbVxQGPSzQ 密码: 4xqf

 

点击进入后,可看到swplayer播放的本地视频。视频内容后面会说到。

 

直播和流媒体播放都要用到"oflaDemo",选择后点击"Install"安装即可。
安装完成后,在webapps下面出现oflaDemo文件夹。

设置信息发布直播
进入发布设置界面:http://localhost:port/demos/publisher.html    本地是http://localhost:5080/demos/publisher.html

查看Settings区域。选择Video后在Device中选择摄像头,并点击Start,出现视频画面(有可能会提示是否允许。选择允许即可)

 

Server设置
回到Server画面,在Location中输入rtmp://localhost:1935/oflaDemo,地址与red5.properties中的rtmp协议的设置必须相同。
点击Connect

右侧出现NetConnection.Connect.Success ,说明连接服务器成功。

推送视频流
切换到Video点击Publish页面中的Publish按钮即可对外发布直播

点击Publish页面中的Publish按钮即可对外发布直播。
View页面就是观看的直播,稍微有点延迟。
修改Name可以改变发布的名称。(相当于房间名)

 

查看视频流
切换到Server点击play即可看推送的视频流

用自己的页面观看直播
1.需要jwplayer。为了方便大家已经放在oflaDemo里面。在上面的百度云链接下载即可。

2.在webapps/oflaDemo下面建一个jwPlayer.html
(我使用了jwplayer来播放,下载地址:http://download.csdn.net/detail/sunroyi666/9668965
把jwplayer.js和player.swf放在同级目录下)

修改相关内容 file的值是直播页面的Name的值。streamer则为Location里面的URL

主要修改2个地方,streamer就是发布页面的rtmp的地址,file是发布页面中的Name。

<html>
<head>
<title>Red5 - OFLADemo</title>
<script type='text/javascript' src='jwplayer.js'></script>
</head>
<body>
<div id="player">
<script type='text/javascript'>
  jwplayer('player').setup({
    'flashplayer': 'player.swf',
    'file': '直播页面的Name',
    'streamer': 'rtmp://自己服务的IP:1935/oflaDemo',
    'controlbar': 'bottom',
    'width': '848',
    'height': '360'
  });
</script>
</div>
</body>
</html>

 

使用浏览器观看

输入地址 http://localhost:port/oflaDemo/jwPalyer.html 即可查看

 

四. 流媒体播放
直播搞定以后,流媒体的视频播放就简单多了。
在oflaDemo下面的streams文件夹下,把需要的视频文件放进去。(上传功能可以自己做)

在jwPlayer.html中,把file改为视频文件名即可观看。

用Red5流媒体播放还有一个优点在于,可以保证视频的安全性。
客户端无论是输入http://192.168.7.96:5080/oflaDemo/(streams)/Avengers2.mp4
还是rtmp://192.168.7.96:1935/oflaDemo/(streams)/Avengers2.mp4
都无法直接下载视频的源文件哦~
————————————————

参考链接:
https://blog.csdn.net/sunroyi666/article/details/52981639  (有OpenMeetings远程视频会议

https://blog.csdn.net/u010651369/article/details/80886676

OBS安装:

接下来,我们研究一下推流的实现。推流的工具这里我推荐两个:OBS(Open Broadcaster Software)和VLC,以OBS为例子,OBS下载地址:https://obsproject.com/选择下载对应的版本。安装完成后如下图所示(当前的OBS版本为20.0.1):

Red5之基于Red5的直播系统开发(二)

默认情况下,启动OBS是黑屏的。我们在“来源”中点击左下角的“+”,添加“显示器捕获”,就可以显示当前的桌面,除此之外,还可以添加“音频输入捕获”、“音频输出捕获”等。

  点击右下角的“设置”,界面如下图所示:

Red5之基于Red5的直播系统开发(二)

我们先关注左边栏的“流”设置,我们自定义流媒体服务器,URL为:

rtmp://localhost/myOnline,与Red5的web端界面Locations一致,流名称是自定义的,这里设置值为11111,可以任意取,如果有多人在推流,那么这个流名称不能重复。

当设置好后,点击右下角的“确定”,回到OBS主界面。然后点击右下角的“开始推流”,如下图所示:

Red5之基于Red5的直播系统开发(二)

可以看到OBS在向Red5本地服务器推流,下面是推流的数据流。这里就相当于是直播间的播主,当然也可以进行推流的录制等,录制的文件位置在“设置”的“输出”中设置。

   推流的实现已经完成,那么拉流呢?我们回到Red5的web端界面,将Names的值也设置为11111,点击connect,点击play,可以看到Web端在同步播放OBS的视频内容,就相当于直播一样,完成了拉流的工作。

Red5之基于Red5的直播系统开发(二)

到这里,Red5的基本推拉流工作已经可以实现了

再补充如下几点吧。

  1.因为RTMP是Red5最主要的协议和服务,该协议在视频同步上是有延迟的,延迟大概在2~3秒左右。

  2.Red5是可以在手机移动端完成推流和拉流工作的,这里推荐一款推拉流APP:易推流,

本人使用的是iphone手机,这个app可以直接在AppStore下载。手机端拉流的App还可以使用VLC,一样效果很不错。

     App打开的界面如下,在"直播地址"栏,添加自己的直播地址进行推流,然后在电脑端通过VLC拉流,当然你想用手机端进行拉流也可以。

Red5之基于Red5的直播系统开发(二)

 

---------------------------------------------------------------------------------------------

 

参考资料:

https://www.cnblogs.com/yanglily/p/6047130.html

http://www.zuidaima.com/blog/4130742917532672.htm

 

ffmpeg + RED5 RTSP转换RTMP

 

在实际的项目开发中,需要网站平台接入实时视频流,实现远程监控。使用海康的摄像机器;传送的是rtsp格式的视频流。之前采用flv网络插件,但是chrome与ff升级之后,对vlc插件的支持不理想,于是想用ffmpeg的转码技术将rtsp码流转换成rtmp。

安装ffmpeg,官网上下载的是免安装版本,只要解压到指定的文件夹就可以。然后在环境变量里添加path的配置

 

PATH:/你的ffmpeg安装目录/bin

7、cmd打开命令行,输入 ffmpeg -version 成功显示版本信息,则表示安装成功

 

ffmpeg -version

 

8、流媒体转换器和流媒体的服务器都安装好了,接下来就是转转转啦。
在命令行里输入

ffmpeg -i  rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_115k.mov  -f flv -r 25 -s 640x480 -ar 44100 rtmp://localhost/oflaDemo/hello
接着在red5目录文件中的webapps\oflaDemo中index.html 文件,将jwplay的文件属性更改成hello,访问http://localhost:5080/oflaDemo/index.html,将会出现连接摄像头的视频信号。

红框中更改成hello

 

注意:

1、oflademo文件夹是在installer界面安装的demo程序
2、ffmpeg参数参考http://blog.csdn.net/leixiaohua1020/article/details/12751349
3、转换成功后,明显会有丢帧的情况,原因研究中


-----------------------------------------------------------------
参考链接:
https://www.jianshu.com/p/e3e90acfd41d
 

 

red5 :linux 

1,这个需要java的jdk,我是直接通过yum命令装的

2,去github下载了red5

https://github.com/Red5/red5-server/releases

https://github.com/Red5/red5-server

讲道理下载最新版的吧,我的jdk也是1.8的。(red5最好是1.0.8)

3,解压,一般解压目录都是在usr/local/red5/楼下图

4,设置为可执行

cd /usr/local/red5  进入red5的目录:

chmod +x *.sh  

5,安装

red5.sh

由于这种执行方式不能关闭执行窗口  所以将其添加为系统服务

6,编辑启动脚本

vi /etc/init.d/red5

7,把下面写进去,貌似都这样写的【这里建议用xsell写不然会造成windows多俩空格无法启动red5】,

下面内容中的RED5_HOME根据自己的red5解压目录为准,这里是/usr/local/red5

#!/bin/bash  
# For RedHat and cousins:  
# chkconfig: 2345 85 85  
# description: Red5 flash streaming server  
# processname: red5  
# Created By: Sohail Riaz ([email protected])  
  
PROG=red5  
RED5_HOME=/usr/local/red5  
DAEMON=$RED5_HOME/$PROG.sh  
PIDFILE=/var/run/$PROG.pid  
  
# Source function library  
. /etc/rc.d/init.d/functions  
  
[ -r /etc/sysconfig/red5 ] && . /etc/sysconfig/red5  
  
RETVAL=0  
  
case "$1" in  
start)  
echo -n $"Starting $PROG: "  
cd $RED5_HOME  
$DAEMON >/dev/null 2>/dev/null &  
RETVAL=$?  
if [ $RETVAL -eq 0 ]; then  
echo $! > $PIDFILE  
touch /var/lock/subsys/$PROG  
fi  
[ $RETVAL -eq 0 ] && success $"$PROG startup" || failure $"$PROG startup"  
echo  
;;  
stop)  
echo -n $"Shutting down $PROG: "  
killproc -p $PIDFILE  
RETVAL=$?  
echo  
[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$PROG  
;;  
restart)  
$0 stop  
$0 start  
;;  
status)  
status $PROG -p $PIDFILE  
RETVAL=$?  
;;  
*)  
echo $"Usage: $0 {start|stop|restart|status}"  
RETVAL=1  
esac  
  
exit $RETVAL

8,设置为本地服务启动【这里你注意init.d路径,是否有快捷方式啥的】

chmod +x /etc/rc.d/init.d/red5  
chkconfig --add red5  
chkconfig red5 on

9,red5用的端口是5080下行,1935上行,确认打开

10,启动red5

/etc/init.d/red5 start 
/etc/init.d/red5 stop

11,在浏览器输入

http://******:5080/    (注意***换成你的服务器ip)如果不能正常访问,可以查看端口是否开启,以及防火墙状态。

在配合上面的OBS就可以了。。

-------------------------------

参考:

https://www.cnblogs.com/yanglily/p/6047130.html

https://blog.csdn.net/wozaiguyuan/article/details/53583470

 

ffepeg:linux

参考:https://blog.csdn.net/qq_38631503/article/details/80007128

https://blog.csdn.net/mydudu2005/article/details/84508962

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章