本文主要介绍Java Red5服务器实现流媒体视频播放。对视频播放感兴趣的同学可以参考一下。
目录
简介Red5概述Red5服务器构建配置Red5相关参数启动Red5直播视频启动准备就绪设置信息发布直播服务器设置推送视频流查看视频流使用自己的页面观看直播视频流使用浏览器
引言
流媒体文件是目前最流行的在线媒体格式之一,它允许用户同时下载和播放,从而大大减少了用户的等待时间。另外,流媒体文件通过网络播放时,文件本身不会存储在本地磁盘中,从而节省了大量的磁盘空间开销。正是这些优点使得流媒体文件在网络广播中得到了广泛的应用。
流媒体服务器通过建立发布点来发布流媒体内容和管理用户连接。流媒体服务器可以发布从视频采集卡或摄像机传输过来的直播流,或者预存的流媒体文件,发布直播流和流媒体文件的组合。媒体流可以由一个媒体文件、多个媒体记录组或一个媒体文件目录组成。
Flash Media Server,简称FMS,是Flash家族中的一员,被称为开发Web音视频应用(例如,视频聊天室、视频会议系统、播客系统、音视频消息等)最方便快捷的解决方案。).它也广泛应用于web应用程序开发。当然,FMS的这种优秀功能并不是免费提供给用户的,每点几千块钱的价格让很多开发者望而却步。于是大家开始尝试寻找更合适的解决方案,开源的Red5成为了人们的新宠。
Red5是Java开发的开源Flash流媒体服务器,功能上类似于FMS。它支持:转换音频(MP3)和视频(FLV)到播放流;记录客户端播放流(仅限FLV);是支持的);共享对象;直播流发布;远程呼叫。Red5采用RSTP作为流媒体传输协议,包括在线录制、Flash流媒体播放、在线聊天、视频会议等一些基本功能。国内外基于Red5的流媒体应用也在推广,如在线视频会议Openmeeting、大型Flash网游《功夫之王2》等。
Red5 概述
Red5是Java开发的开源Flash流媒体服务器。免费开源让软件更容易扩展,下载后可以修改源代码;更经济,相对于FMS的高成本,Red5对于一般应用来说可以省下不少钱;同时,服务器端的Java面向对象语言比FMS服务器端的ActionScript2语言更加成熟。鉴于Red5的优点,很快被用户接受。
红色5支持:
将音频(MP3)和视频(FLV、F4V、MP4、3GP)转换成播放流;
录制客户端播放流,保存摄像头、麦克风等录制的传入音视频。到服务器;
共享对象;
直播流发布;
远程呼叫;
协议:RTMP、RTMPT、RTMPS和RTMPE。
Red5 服务器搭建
JDK自行安装下载Red5
https://github.com/Red5/red5-server/releases
解压到自己的一个能记住的文件夹中 eg:F:\Red5
配置Red5相关参数
修改red5.properties配置文件..\conf\red5.properties
只需要配置HTTP 和RMTP节点的host和port即可 默认也行host配置成0.0.0.0 输入局域网IP或者127.0.0.1都可以正常访问
#套接字策略
policy.host=0.0.0.0
policy.port=843
# HTTP
http.host=0.0.0.0
http.port=8855
https.port=5443
http。URIEncoding=UTF-8
http . max _ keep _ alive _ requests=-1
http.max_threads=20
接受者线程计数=10
http.processor_cache=20
# RTMP
rtmp.host=0.0.0.0
rtmp.port=1935
rtmp.io_threads=16
rtmp.send_buffer_size=65536
rtmp.receive_buffer_size=65536
rtmp.ping_interval=1000
rtmp.max_inactivity=60000
rtmp.max_handshake_time=5000
rtmp.tcp_nodelay=true
rtmp.tcp_keepalive=false
rtmp . default _ server _ bandwidth=1000000
rtmp . default _ client _ bandwidth=1000000
rtmp . client _ bandwidth _ limit _ type=2
rtmp .带宽检测=假
rtmp . encode _ base _ tolerance=5000
rtmp . encoder _ drop _ live _ future=false
#流量优化提示。要禁用将流量类别设置为-1
#低延迟高吞吐量==24 (0x18)
rtmp.traffic_class=-1
#请求的传入连接队列的最大长度
rtmp.backlog=32
#每次吞吐量计算之间的时间间隔(秒)
rtmp。吞吐量计算间隔=15
#启用默认迈纳接收器的使用
rtmp.default_acceptor=true
#默认接收器被禁用时使用的套接字输入输出池大小
rtmp.initial_pool_size=0
rtmp.max_pool_size=2
rtmp。最大处理器池大小=16
rtmp。executor _ keepalive _ time=60000
mina.logfilter.enable=false
调度程序配置数量(每个应用程序)
rtmp.scheduler.pool_size=16
rtmp。deadlockguard。调度程序。池大小=16
#消息执行器配置(每个应用程序)-如果任务被拒绝,请根据需要调整这些配置
rtmp.executor.core_pool_size=4
rtmp.executor.max_pool_size=32
rtmp。执行人。queue _ capacity=64
#队列快满时丢弃音频数据包,要禁用此功能,请设置为0
rtmp。执行人。队列大小到丢弃音频数据包=60
#分配给处理单个rtmp消息/数据包的最大时间,以毫秒为单位,设置为0可禁用超时
rtmp.max_handling_time=2000
#连接调整-除非你知道自己在做什么,否则不要修改
rtmp。渠道。首字母。容量=3
rtmp。渠道。并发性。级别=1
rtmp.stream.initial.capacity=1
rtmp。溪流。并发性。级别=1
rtmp。待定。电话。首字母。容量=3
rtmp。待定。电话。并发性。级别=1
rtmp。保留。溪流。首字母。容量=1
rtmp。保留。溪流。并发性。级别=1
# RTMPS
rtmps.host=0.0.0.0
rtmps.port=8443
rtmps.ping_interval=5000
rtmps.max_inactivity=60000
RTM PS。最大保持活动请求数=-1
rtmps.max_threads=20
rtmps.acceptor_thread_count=2
rtmps.processor_cache=20
# RTMPS密钥和信任存储参数
rtmps.keystorepass=密码
rtmps。密钥库文件=conf/keystore。jks
rtmps.truststorepass=密码
RTM PS。信任存储文件=conf/信任存储。jks
# RTMPT
rtmpt.host=0.0.0.0
rtmpt.port=8088
rtmpt.ping_interval=5000
rtmpt.max_inactivity=60000
rtmpt.max_handshake_time=5000
rtmpt。最大保持活动请求数=-1
rtmpt.max_threads=20
rtmpt.acceptor_thread_count=2
rtmpt.processor_cache=20
rtmpt。编码器_基础_公差=5000
rtmpt。编码器_ drop _ live _ future=true
#流媒体的更好设置
rtmpt。目标响应大小=32768
#小邮件或共享对象的最佳设置
# rtmpt。target _ reponse _ size=8192
#一次要处理的最大传入消息数100 . FP貌似最多发166
rtmpt.max_in_msg_process=166
#向输入或输出队列提供数据时等待的最长时间(毫秒)
rtmpt.max_queue_offer_time=125
#最大出价尝试次数
rtmpt。最大队列报价尝试次数=4
# WebSocket
ws.host=0.0.0.0
ws.port=8081
#调试代理(需要在red5-core.xml中激活)
代理服务器。源主机=127.0.0.1
proxy.source_port=1936
代理服务器。目的主机=127.0.0.1
proxy.destination_port=1935
# JMX
JMX。RMI。主机=本地主机
jmx.rmi.port=9999
jmx.rmi.sport=9998
jmx.rmi.port.remoteobjects=
jmx.keystorepass=密码
jmx.mina.monitor.enable=false
JMS。米娜。民意测验。间隔=1000
#是否总是在进程中创建注册表,而不是尝试
#在指定端口找到现有注册表。按顺序设置为"真"
#以避免在需要时查找现有注册表的开销
#无论如何都要创建一个新的注册表。
jmx.registry.create=true
MBeanServerFactoryBean是否应尝试定位正在运行的
# MBeanServer,然后创建一个
jmx.reuse.existing.server=true
#是否向MBeanServerFactory工厂注册MBeanServer,使其
#可通过mbean服务器工厂。查找mbean服务器()获得
jmx.register.factory=true
#是否应将为JMXConnectorServer启动的任何线程作为守护程序线程启动
jmx.daemon=true
JMXConnectorServer是否应在单独的线程中启动
jmx.threaded=true
#服务器属性
在单次更新中发送的最大事件数
so.max.events.per.update=64
so.scheduler.pool_size=4
keyframe.cache.entry.max=500
war . deploy . server . check . interval=600000
file consumer . delayed . write=true
fileconsumer.queue.size=120
subscriber stream . buffer . check . interval=5000
subscriber stream . under run . trigger=100
broadcast stream . auto . record=false
启动Red5
双击red.bat即可启动Red5服务器浏览器访问查看是否搭建成功http://localhost:port(localhost和port是在配置文件中设置的)正确如下图所示。
视频直播开始准备
下载demo
你可以在上图中看到安装的红线。点击进入。选择OLFA安装
如果下载不成功请看这里
确保webapps下没有oflaDemo文件夹。下载压缩包,解压后放进去。
下载地址链接: https://pan.baidu.com/s/1Qd0UggtEhBv5nbVxQGPSzQ 密码: 4xqf
设置信息发布直播
进入发布设置界面:http://localhost:port/demos/publisher . html
检查设置区域。选择视频后,在设备中选择摄像头,点击开始,会出现一个视频画面(可能会提示您是否允许。仅选择)
Server设置
返回到服务器屏幕,在Location中输入rtmp://localhost:1935/oflaDemo。地址必须与red5.properties中rtmp协议的设置相同
单击连接。
右边是网络连接。Connect.Success出现,表示与服务器的连接成功。
推送视频流
切换到视频,点击发布页面的发布按钮,发布直播。
查看视频流
切换到服务器,点击播放,观看推送的视频流。
用自己的页面观看直播
Jwplayer是必需的。为了您的方便,它已被放在oflaDemo中。从上面的百度云链接下载。
修改相关内容file的值是直播页面的Name的值。streamer则为Location里面的URL
超文本标记语言
头
titled 5-of lademo/title
script type=' text/JavaScript ' src=' jwp player . js '/script
/头
身体
div id='player '
脚本类型='文本/javascript '
jwp player(' player ')。设置({
flashplayer': 'player.swf ',
File ':'实时页面的名称',
Streamer': 'rtmp://其自身服务的IP:1935/oflademo ',
控制条':'底部',
宽度':' 848 ',
高度':' 360 '
});
/脚本
/div
/body
/html
使用浏览器观看
输入地址http://localhost:port/of lademo/jw player . html即可查看。
以上是Java Red5服务器播放流媒体视频的详细内容。关于Java Red5播放流媒体视频的更多信息,请关注我们的其他相关文章!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。