<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont

简介:        使用red5和OBS搞出自己的直播平台来挑战bilibili(B站),为什么文章标题叫这个,其实我学习red5和fms方面的东西是很久了的,加上我最近借助flex,要开发一套医疗远程会诊的系统(web端的视频聊天)。

       使用red5和OBS搞出自己的直播平台来挑战bilibili(B站),为什么文章标题叫这个,其实我学习red5和fms方面的东西是很久了的,加上我最近借助flex,要开发一套医疗远程会诊的系统(web端的视频聊天)。所以我对流媒体使用和环境搭建,还有客户端开发都已经很熟悉了。笔者混迹于B站多年(我大概是是2012年使用哔哩哔哩的,那时候只有弹幕,没有游戏和直播之类的东西),我之前是打算去面试B站做视频直播这块带头人的。可惜我那时候打听的时候人家不做直播方面的考虑。后来我就自己去开发一套图片网站,图片网站毕竟带宽不是很大 不挣钱的情况我还可以承受。所以今天来写个博客就是教大家自己搭建一个自己的专属直播平台,这样子就不怕哔哩哔哩封你房间什么,前提你是会自己技术,服务器管理。会java flash等啊。不会的也可以问我。


一、准备工作

    1  在你电脑上安装jdk1.8 。我提供的这个red5必须使用jdk1.8,要不然不能运行

    2 下载red5-1.0.6,下载地址:    http://download.csdn.net/detail/wk313753744/9374983

    3  就是去下载OBS(open broadcast software),

    4 你要能看见效果,你还需要准备一个flash播放器。

   


.二、安装说明

1 安装jdk

2 安装red5-server-1.0.6,首先确保你已经下载好了red5-server-1.0.6.zip,解压

(1 ) 进入到red5-server-1.0.6目录,看起是这样子的。因为新版的red5不在使用jetty作为内置服务器,而是使用tomcat(1.0.6使用的tomcat8容器的),所以看起来tomcat的目录结构很像,conf存放就是一些配置文件,我们主要修改是conf/red5.properties,根据自己需要修改端口号,log是日志目录,webapps下,就是你自己开发的red5的程序了,比如直播,点播,聊天等,共享对象的案例等。


( 2 ) 在启动red5,我们需要注意一点。如果你系统中的环境默认安装时jdk8,那么你不需要调整,直接进入下一步骤,但是如果你安装了其他版本的jdk,比如常见的jdk1.7.*。那么你就必须修改你red5使用的jdk是jdk1.8以上,找到red5.bat,用文本编辑工具打开,找到32行。

:launchRed5
echo Starting Red5
"%JAVA_HOME%\bin\java" %JAVA_OPTS% -cp "%RED5_CLASSPATH%" %RED5_MAINCLASS% %RED5_OPTS%
goto finally
把上边%JAVA_HOME% 变量修改成C:\Program Files\Java\jdk1.8.0_05\bin\java 使用你jdk8的绝对路径。下面修改之后的配置文件。

:launchRed5
echo Starting Red5
"C:\Program Files\Java\jdk1.8.0_05\bin\java" %JAVA_OPTS% -cp "%RED5_CLASSPATH%" %RED5_MAINCLASS% %RED5_OPTS%
goto finally

(3) 启动red5。在window中双击red5.bat 。即可启动。在linux上双击red5.sh,但是在linux中为了不是交互式模式运行,你启动的red5-highperf.sh。这个经过参数优化过的。也可以后台运行。

以上服务器环境就准备好了,下面开始介绍obs怎么发送视频流到red5服务器上,


二、OBS发布流到Red5服务器,

(1)打开OBS客户端,安装什么的我就不讲了。主要有两个地方FMS URL和播放路径/串流码(如果存在)。

FMS URL:  rtmp://127.0.0.1/live

播放路径/串流码(如果存在): test

注:播放路径/串流码(如果存在)在OBS意思就是playPath。 在red5你理解为一个流名字(streamname)。随便取一个就是了,然后在你播放该流地方制定你现在取得这个名字,我这里就是test了。



(2)OBS设定点击确定之后,回到OBS主界面,在来源区域右键,添加-》显示获取。这样就创建了一个捕捉源,当然也可以使用摄像头作为捕捉源。

(3) 为了保险起见,你如果是第一次使用OBS,那么你应该点击预览串流。看看效果

(4)点击开始串流,就会把你视频流发布到Red5服务器。这里顺便说一句,这里开始串流就跟flash或者flex中的NetStream中publish()方式是一样。


三、预览效果

就是使用rtmp协议来播放你发布的视频流. 我用red5自带的这个案例来播放流,之前那个用自己开发一个flex程序播放是一样的。



主要有两个地方需要需要修改,就是Location中路径要跟你OBS的FMS URL一直,而且你RED5服务器上要有live这个程序,我给你下载red5压缩包中是有的。

第二个就是修改Name 为test,然后点击Play就可以播放了。


最后大功告成欢迎访问我图片网站 http://lockbur.com/

目录
相关文章
|
Web App开发 前端开发
|
Web App开发 前端开发 Java
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
 Connection reset by peer的常见原因: 1)服务器的并发连接数超过了其承载量,服务器会将其中一些连接关闭;    如果知道实际连接服务器的并发客户数没有超过服务器的承载量,看下有没有网络流量异常。
827 0
|
Java
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
深度分析Java的ClassLoader机制(源码级别) 写在前面:Java中的所有类,必须被装载到jvm中才能运行,这个装载工作是由jvm中的类装载器完成的,类装载器所做的工作实质是把类文件从硬盘读取到内存中,JVM在加载类的时候,都是通过ClassLoader的loadClass()方法来加载class的,loadClass使用双亲委派模式。
1044 0
|
Web App开发 Java Apache
|
Web App开发 前端开发
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
一个典型的星型模式包括一个大型的事实表和一组逻辑上围绕这个事实表的维度表。  事实表是星型模型的核心,事实表由主键和度量数据两部分组成。
511 0
|
Web App开发 监控 前端开发
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
zookeeper的maxSessionTimeout默认值导致hbase regionserver超时 在hbase中经常会遇到regionserver挂掉的情况,查看日志会看到这样的错误信息 2016-02-16 11:51:24,882 WARN  [master/hadoop02/192.
721 0
|
Web App开发 前端开发 大数据
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
提  纲     1、移动DSP与传统营销有什么不同?     2、为什么移动DSP是大势所趋?     3、哪些因素决定移动DSP的精准与否?     4、如何辨别移动DSP的真伪优劣?     ...
928 0
|
Web App开发 监控 前端开发
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
最近在监控中发现HiveServer2连接到zookeeper里的连接持续上涨,很奇怪,虽然知道HiveServer2支持并发连接,使用ZooKeeper来管理Hive表的读写锁,但我们的环境并不需要这些,我们已经关闭并发功能,以下是线上的配置,甚至把这些值都改成final了。
708 0
|
Web App开发 前端开发 Java
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html><head><meta http-equiv="Cont
在hadoop测试集群运行job的过程中发现部分运行失败,有Cannot obtain block length for LocatedBlock,使用hdfs dfs -cat ${文件}的时候也报这个错,看过代码后发现...
673 0