CentOS 7下Red5流媒体服务器的搭建与测试

article/2025/10/30 12:07:40

Red5流媒体服务器的搭建

  • 一、Red5流媒体简介
  • 二、搭建流程
      • 1、下载Red5
      • 2、修改Red5相关配置
      • 3、启动Red5服务器
      • 4、问题解决
        • 问题1:
        • 问题2:
      • 5、测试环节
      • 6、结语

一、Red5流媒体简介

Red5流媒体服务器是一个采用Java开发的开源免费的Flash流媒体服务器。并且相对于其他开源的流媒体服务器Red5易搭建、易理解。比其他收费的流媒体服务器更经济,它支持把音频(MP3)和视频(FLV)转换成播放流;录制客户端播放流(只支持FLV);共享对象;现场直播流发布;远程调用。本人是因为需要做一个服务器来保存用户上传的音频和视频,并且用户可以随时观看和下载服务器上有的音频或视频。因此接触到流媒体服务器,因为Red5开源免费,并且性能还可,就学习了一下Red5,接下来我就分享一下我的搭建过程、遇到的问题和如何解决问题的。

二、搭建流程

1、下载Red5

下载Red5压缩包到自己熟悉的文件夹中下载。(如:cd /usr/local)

wget https://github.com/Red5/red5-server/releases/download/v1.2.6/red5-server-1.2.6.tar.gz

解压缩Red5

tar -zxvf red5-server-1.2.6.tra.gz

然后进入到red5-server
在这里插入图片描述

2、修改Red5相关配置

打开conf文件夹下的red5.properties

[root@localhost red5-server]# vim conf/red5.properties

这里我们先把HTTP和RTMP的host修改为我们本机的IP,端口可以使用默认的,也可自定义修改。这里我修改host为我本机IP:10.6.3.104

# Socket policy
policy.host=0.0.0.0
policy.port=843# HTTP
http.host=10.6.3.104
http.port=5080
https.port=5443
http.URIEncoding=UTF-8
http.max_headers_size=8192
http.max_keep_alive_requests=-1
http.max_threads=20
http.acceptor_thread_count=10
http.processor_cache=20# RTMP
rtmp.host=10.6.3.104
rtmp.port=1935
rtmp.io_threads=8
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=10000000
rtmp.default_client_bandwidth=10000000
rtmp.client_bandwidth_limit_type=2
rtmp.bandwidth_detection=false
rtmp.encoder_base_tolerance=5000
rtmp.encoder_drop_live_future=false
# traffic optimization hinting. to disable set traffic class set to -1
# low delay + high throughput == 24 (0x18)
rtmp.traffic_class=-1
# requested maximum length of the queue of incoming connections
rtmp.backlog=32
# the interval (seconds) between each throughput calculation
rtmp.thoughput_calc_interval=15
# enable use of the default mina acceptor
rtmp.default_acceptor=true
# socket i/o pool sizes used when default acceptor is disabled
rtmp.initial_pool_size=0
rtmp.max_pool_size=2
rtmp.max_processor_pool_size=8
rtmp.executor_keepalive_time=60000
mina.logfilter.enable=false
# scheduler configs (per application)
rtmp.scheduler.pool_size=8
rtmp.deadlockguard.sheduler.pool_size=8
# message executor configs (per application) - adjust these as needed if you get tasks rejected
rtmp.executor.core_pool_size=4
rtmp.executor.max_pool_size=32
rtmp.executor.queue_capacity=64
# drop audio packets when queue is almost full, to disable this, set to 0
rtmp.executor.queue_size_to_drop_audio_packets=60
# maximum amount of time allotted to process a single rtmp message / packet in milliseconds, set it as 0 to disable timeout
rtmp.max_handling_time=2000
# connection tweaks - dont modify unless you know what you're doing
rtmp.channel.initial.capacity=3
rtmp.channel.concurrency.level=1
rtmp.stream.initial.capacity=1
rtmp.stream.concurrency.level=1
rtmp.pending.calls.initial.capacity=3
rtmp.pending.calls.concurrency.level=1
rtmp.reserved.streams.initial.capacity=1
rtmp.reserved.streams.concurrency.level=1
# maximum packet size allowed in bytes
rtmp.max_packet_size=3145728# RTMPS
rtmps.host=0.0.0.0
rtmps.port=8443
rtmps.ping_interval=5000
rtmps.max_inactivity=60000
rtmps.max_keep_alive_requests=-1
rtmps.max_threads=8
rtmps.acceptor_thread_count=2
rtmps.processor_cache=20
# RTMPS Key and Trust store parameters
rtmps.keystorepass=password
rtmps.keystorefile=conf/keystore.jks
rtmps.truststorepass=password
rtmps.truststorefile=conf/truststore.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.max_keep_alive_requests=-1
rtmpt.max_threads=8
rtmpt.acceptor_thread_count=2
rtmpt.processor_cache=20
rtmpt.encoder_base_tolerance=5000
rtmpt.encoder_drop_live_future=true
# better setting for streaming media
rtmpt.target_reponse_size=32768
# best setting for small messages or shared objects
#rtmpt.target_reponse_size=8192
# max incoming messages to process at a time. the most that FP appears to send is 166
rtmpt.max_in_msg_process=166
# max time in millis that we will wait when offering data to the in or out queue
rtmpt.max_queue_offer_time=125
# max offer attempts
rtmpt.max_queue_offer_attempts=4# Debug proxy (needs to be activated in red5-core.xml)
proxy.source_host=127.0.0.1
proxy.source_port=1936
proxy.destination_host=127.0.0.1
proxy.destination_port=1935# JMX
jmx.rmi.host=localhost
jmx.rmi.port=9999
jmx.rmi.sport=9998
jmx.rmi.port.remoteobjects=
jmx.keystorepass=password
jmx.mina.monitor.enable=false
jmx.mina.poll.interval=1000
# Whether to always create the registry in-process, not attempting to 
# locate an existing registry at the specified port. Set to "true" in order
# to avoid the overhead of locating an existing registry when you always intend
# to create a new registry in any case.
jmx.registry.create=true
# Whether or not the MBeanServerFactoryBean should attempt to locate a running 
# MBeanServer before creating one
jmx.reuse.existing.server=true
# Whether to register the MBeanServer with the MBeanServerFactory, making it 
# available through MBeanServerFactory.findMBeanServer()
jmx.register.factory=true
# Whether any threads started for the JMXConnectorServer should be started as daemon threads
jmx.daemon=true
# Whether the JMXConnectorServer should be started in a separate thread
jmx.threaded=true# Server properties
# max events to send in a single update
so.max.events.per.update=64
so.scheduler.pool_size=4
keyframe.cache.entry.max=500
war.deploy.server.check.interval=600000
fileconsumer.delayed.write=true
fileconsumer.queue.size=120
fileconsumer.wait.for.keyframe=true
subscriberstream.buffer.check.interval=5000
subscriberstream.underrun.trigger=100
subscriberstream.max.pending.frames=10
subscriberstream.max.sequential.frames=10
broadcaststream.auto.record=false

3、启动Red5服务器

修改完以上的配置,我们就可以启动Red5服务器啦。

[root@localhost red5-server]# ./red5.sh

你以为这就启动成功了?我在两台Linux下搭Red5都遇到了问题,你也不例外。。。

4、问题解决

问题1:

[root@localhost red5-server]# ./red5.sh
Running on  Linux
Starting Red5
Unrecognized VM option 'UseZGC'
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.

对于这个问题我们还需要改一下配置文件,进入到red5.sh文件

[root@localhost red5-server]# vim red5.sh

找到下面文件里的-XX:+UseZGC,删去即可

。。。。。。。。。上面还有我就没复制了
# JAVA options
# ZGC collector https://wiki.openjdk.java.net/display/zgc
# You can set JVM additional options here if you want
if [ -z "$JVM_OPTS" ]; thenJVM_OPTS="-XX:+UnlockExperimentalVMOptions -XX:+UseZGC -Xms256m -Xmx1g -Xverify:none -XX:+UseBiasedLocking -XX:InitialCodeCacheSize=8m -XX:MaxGCPauseMillis=500 -XX:ReservedCodeCacheSize=32m"
fi
# Set up security options
SECURITY_OPTS="-Djava.security.debug=failure"
# Set up tomcat options
TOMCAT_OPTS="-Dcatalina.home=$RED5_HOME -Dcatalina.useNaming=true"export JAVA_OPTS="$SECURITY_OPTS $JAVA_OPTS $JVM_OPTS $TOMCAT_OPTS $NATIVE"if [ -z "$RED5_MAINCLASS" ]; then

再到第3步重启Red5服务器,然后又报错,就是问题2了。

问题2:

[root@localhost red5-server]# ./red5.sh
Running on  Linux
Starting Red5
Error: A JNI error has occurred, please check your installation and try again
Exception in thread "main" java.lang.UnsupportedClassVersionError: org/red5/server/Bootstrap has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0at java.lang.ClassLoader.defineClass1(Native Method)at java.lang.ClassLoader.defineClass(ClassLoader.java:763)at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)at java.net.URLClassLoader.access$100(URLClassLoader.java:73)at java.net.URLClassLoader$1.run(URLClassLoader.java:368)at java.net.URLClassLoader$1.run(URLClassLoader.java:362)at java.security.AccessController.doPrivileged(Native Method)at java.net.URLClassLoader.findClass(URLClassLoader.java:361)at java.lang.ClassLoader.loadClass(ClassLoader.java:424)at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:338)at java.lang.ClassLoader.loadClass(ClassLoader.java:357)at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:495)

这个报错原因就是openjdk的版本低了,然后打开Red5的配置文件发现默认使用的是jdk11,然后我把他的配置文件该文jdk8,再次启动,结果还是报这个错,没办法,下载jdk11吧。
jdk下载方法和上面Red5压缩包的下载一样,后期我也会发一篇关于openjdk的下载方法,大家可以关注一下,哈哈哈。。。
下载完jdk11之后,再次修改./red5.sh文件

#!/bin/bashif [ -z "$RED5_HOME" ]; thenexport RED5_HOME=`pwd`;
fi# Java 11
export JAVA_HOME=/opt/jdk-11P=":" # The default classpath separator
OS=`uname`
case "$OS" inCYGWIN*|MINGW*) # Windows Cygwin or Windows MinGWP=";" # Since these are actually Windows, let Java know# Native pathNATIVE="-Djava.library.path=$RED5_HOME/lib/amd64-Windows-msvc";;

将JAVA_HOME的路径改为你jdk11的路径。然后再次启动

。。。。。上面巴拉巴拉一大堆
[INFO] [pool-1-thread-5] org.red5.net.websocket.WebSocketScope - Application scope: Scope [name=oflaDemo, path=/default, type=APPLICATION, autoStart=true, creationTime=1619008576027, depth=1, enabled=true, running=true]
[INFO] [pool-1-thread-5] org.red5.net.websocket.WebSocketScopeManager - addWebSocketScope: WebSocketScope [path=/oflaDemo, listeners=0, connections=0]
[INFO] [pool-1-thread-5] org.red5.net.websocket.WebSocketScope - WebSocket scope added
[INFO] [pool-1-thread-3] org.red5.net.websocket.WebSocketPlugin - Creating WebSocketScopeManager for org.red5.server.adapter.MultiThreadedApplicationAdapter@337edd9c
[INFO] [pool-1-thread-3] org.red5.net.websocket.WebSocketPlugin - WebSocketPlugin application: org.red5.server.adapter.MultiThreadedApplicationAdapter@337edd9c
[INFO] [pool-1-thread-3] org.red5.net.websocket.WebSocketScope - Application scope: Scope [name=SOSample, path=/default, type=APPLICATION, autoStart=true, creationTime=1619008576039, depth=1, enabled=true, running=true]
[INFO] [pool-1-thread-3] org.red5.net.websocket.WebSocketScopeManager - addWebSocketScope: WebSocketScope [path=/SOSample, listeners=0, connections=0]
[INFO] [pool-1-thread-3] org.red5.net.websocket.WebSocketScope - WebSocket scope added
[INFO] [pool-6-thread-1] org.red5.server.tomcat.WarDeployer - Deploy wars with app start

然后打开浏览器访问http://你的IP:端口,我的就是http:10.6.3.104:5080,出现以下页面,,恭喜你,说明你搭建成功了。
在这里插入图片描述

5、测试环节

red5的播放默认使用的是Flash,但是目前很多浏览器不使用Flash了,因此我们先自己使用Xftp上传一段视频到red5上,然后再通过url进行访问。
1、进入red5的demo
在这里插入图片描述
通过对demo的探索,我发现可以直接使用他也是一个Web项目可以通过Xftp向Linux上传视频或者音频,然后通过url进行访问。
2、上传视频
在这里插入图片描述
点击这个Xftp可以往Linux下上传视频,我上传了一个叫1.mp4的视频。
在这里插入图片描述
然后重启Red5服务器,通过http://你的主机:端口/视频路径,我的就是http://10.6.3.104:5080/oflaDemo/1.mp4。如果能正常播放你上传的视频,然后说明你的Red5流媒体服务器搭建完全成功。

6、结语

因为我们是搭建在Linux上,我们每次上传视频或音频不可能打开Xftp,通过Xftp来上传。因此我们需要继续研究Red5,看它对外提供了哪些接口,如何与项目的Web通信。本人也会继续研究Red5,后续可能会继续发布Red5的相关知识,请大家多多支持,如有问题,欢迎大家指正批评。


http://chatgpt.dhexx.cn/article/PdiPfZAp.shtml

相关文章

常用流媒体服务器

1、Mediasoup mediasoup是相对比较新的一个WebRTC服务器端的开源项目。它更多是通过集成包方式和其他应用服务器来集成。它支持SFU模式,主要支持视频聊天,媒体流广播等。 其特点是: 通过底层API实现和第三方集成,安装简单&#…

开源流媒体服务器Red5实施案列分析

Red5是一个采用Java开发开源的Flash流媒体服务器。它支持:把音频 (MP3)和视频(FLV)转换成播放流; 录制客户端播放流(只支持FLV);共享对象;现场直播流发布&…

Red5流媒体服务器的搭建与使用

什么是流媒体服务器 流媒体指以流形式在网络中传送音频、视频和多媒体文件的媒体形式。相对于下载后观看的网络播放形式而言,流媒体的典型特征是把连续的音频和视频信息压缩后放到网络服务器上,用户边下载边观看,而不必等待整个文件下载完毕…

Red5流媒体服务器初探——Red5服务器的搭建

由于个人的兴趣爱好,想利用手中的树莓派搭建一个环境监控系统。由于需要一个流媒体服务器用于多媒体数据的接收与推送,所以最近稍微了解了下Red5 Media Server方面的东西。 搭建Red5服务器 首先在百度中搜索“Red5”关键字可以获得以下链接:…

Red5流服务器搭建(实现在线直播,流媒体视频播放和在线视频会议)

最近研究了一下流媒体技术,也试着用免费开源的Red5搭建了流服务器,实现了直播,视频播放,远程视频会议等功能,下面是近期实践的总结, 一. 先介绍一下流媒体技术: 所谓流媒体技术,是…

搭建Windows Red5流媒体服务器详解

搭建Windows Red5流媒体服务器详解 环境 win7 64 位 一、下载程序 setup-Red5-1.0.0-java6.exe 或者 setup-Red5-1.0.1-java6.exe 推荐 下载1.0.1 版本 , 后面rtmp 播放使用的是1.0.1 版本的red5 red51.0.0 下载地址 http://download.csdn.net/detail/keepin…

Red5流媒体服务器的搭建

Red5搭建耗了我很多时间,尝试了Red5的N多个版本,从0.9.0~1.0.5都试过了。 还有JDK的版本,也尝试了很多从jdk6u43到jdk7u79都试过了。 我主要的一个问题就是,在Red5的安装页面看不到安装的AppName,因此我试了很多都不…

(一)使用RED5搭建流媒体服务器

——–本次是在windows中搭建成功,并且成功演示demo 1.安装好jdk red5-server-1.05 以下需要JDK-1.7 red5-server-1.06 以上需要JDK-1.8 2.到官方下载red5-server-1.04 压缩文件 https://github.com/Red5/red5-server/releases 安装步骤: 1&#…

nginx+red5流媒体服务器搭建

公司 近期要开展演练投票,需要对演练视频进行观看,由于服务器资源有限,所以决定将视频部署到多个流媒体上,并且通过nginx进行负载调节; 一、red5流媒体搭建 Red5 是一个采用 Java 开发开源的 Flash 流媒体服务器。 下…

【Java】Red5服务器搭建(实现在线直播,流媒体视频播放)

为什么80%的码农都做不了架构师?>>> 引言 流媒体文件是目前非常流行的网络媒体格式之一,这种文件允许用户一边下载一边播放,从而大大减少了用户等待播放的时间。另外通过网络播放流媒体文件时,文件本身不会在本地磁盘中…

Red5流媒体服务器的完整尝试

1、下载Red5以及Java环境 所需要的文件如下:JDK可利用华为镜像快速下载 然后解压JDK与red5,配置JDK环境变量JAVA_HOMEE:\Program Files\Java\jdk1.8.0_20 配置好运行环境后,点击red5.bat即可启动,在浏览器地址栏输入http://localhost:5080/出…

流媒体服务器之Red5环境搭建

首先先介绍一下RED5,Red5的主要功能和Macromedia公司的FMS类似,提供基于Flash的流媒体服务的一款基于Java的开源流媒体服务器。它由Java语言编写,使用RTMP作为流媒体传输协议,这与FMS完全兼容。它具有流化FLV、MP3文件&#xff0c…

java语言【#106. 求绝对值】(已通过)

题目描述 ​ 在数学中,对于小于 0 的实数 n 来说,它的绝对值等于 −n,而对于大于等于 0 的实数来说,它的绝对值等于自身。 ​ 输入一个实数,输出它的绝对值。 输入 ​ 输入一个实数 n (−100.0≤n≤100.0…

java求数字的绝对值

1.代码如下: package com.aaa;import java.util.Scanner;public class Shuzi {public static void main(String[] args) { // 求数字的绝对值Scanner scnew Scanner(System.in);while (true) {System.out.println("请输入你要判断的数字");double…

java中负数取绝对值,面试篇

前言: 这篇文章主要介绍了26道Spring经典面试题总结(附带答案)的相关资料,小编在网上看到的觉得挺不错的,现在分享给大家,希望对你们有所帮助。 另外本人整理收藏了多家公司面试知识点整理 ,以及各种Java核心知识点免费分享给大家,下方只是部分截图 想要资料的话也可以在…

CentOS7.4配置OpenLDAP Client集成AD服务及SSSD服务与SSH服务

一、前置准备 1、基础环境说明 客户端操作系统:CentOS 7.4 core AD服务器:WinServer 2012 R2 2、AD证书导出 1).服务器管理 服务器管理→AD CS→证书颁发机构→所有任务→备份CA 2).证书备份(导出) 备份项目→设置密码(默认为空)→完成 二、OpenL…

通过AD域验证登录Linux系统(Linux安装sssd加入Windows AD域)

背景 有一台Centos 7 的Linux服务器,需要每个IT管理员都可以登录并进行维护,为了方便账户管理,统一认证,要求Linux服务器登录实现Windows AD域验证。 环境说明 AD域:Windows server 2019 AD域主机IP : 192.168.100.…

使用AFS, Active Directory和SSSD搭建用于集成电路设计的分布式存储系统 【十七】部署 AFS 客户端 2 统一身份登录

使用AFS, Active Directory和SSSD搭建用于集成电路设计的分布式存储系统 【十七】部署 AFS 客户端 2 统一身份登录 Linux 统一身份登录和查询POSIX 属性 (POSIX Attributes)安装组件程序加入 AD 域测试 LDAP 查询配置 NSS 和 PAM配置 SSSD验证 SSSD 配置针对 AFS 进一步配置 PA…

linux 7 realm,系统运维|Samba 系列(十五):用 SSSD 和 Realm 集成 Ubuntu 到 Samba4 AD DC...

本教程将告诉你如何将 Ubuntu 桌面版机器加入到带有 SSSD 和 Realm 服务的 Samba4 活动目录域中,以在活动目录中认证用户。 要求: 第 1 步:初始配置 1、 在把 Ubuntu 加入活动目录前确保主机名被正确设置了。使用 hostnamectl 命令设置机器名字或者手动编辑 /etc/hostname 文…

linux的sssd服务,使用FreeIPA为SS信任用户在SSSD上设置默认登录Shell

本文介绍使用FreeIPA为SS信任用户在SSSD上设置默认登录Shell的方法。 前言 IPA身份管理服务器提供与Microsoft Active Directory的双向用户身份和密码同步,但是在配置IPA和Active Directory之后,用户的默认shell是/bin/sh,本文将讨论如何在Fr…