Top Related Projects
OpenVidu Platform main repository
Janus WebRTC Server
Ant Media Server is a live streaming engine software that provides adaptive, ultra low latency streaming by using WebRTC technology with ~0.5 seconds latency. Ant Media Server is auto-scalable and it can run on-premise or on-cloud.
Complete open source web conferencing system.
Jitsi Videobridge is a WebRTC compatible video router or SFU that lets build highly scalable video conferencing infrastructure (i.e., up to hundreds of conferences per server).
Quick Overview
Red5/red5-server is an open-source media streaming server written in Java. It supports various streaming protocols, including RTMP, RTSP, and HLS, making it suitable for live streaming, video on demand, and real-time communication applications.
Pros
- Supports multiple streaming protocols (RTMP, RTSP, HLS)
- Open-source and actively maintained
- Scalable and customizable through plugins and extensions
- Cross-platform compatibility (runs on Windows, Linux, and macOS)
Cons
- Steeper learning curve compared to some commercial alternatives
- Documentation can be sparse or outdated in some areas
- Performance may not match some proprietary solutions for large-scale deployments
- Limited built-in monitoring and analytics tools
Code Examples
- Connecting to Red5 server using RTMP:
import org.red5.client.net.rtmp.RTMPClient;
RTMPClient client = new RTMPClient();
client.connect("rtmp://localhost/live", new Object[] { "myStream" });
- Publishing a stream:
import org.red5.server.api.stream.IClientBroadcastStream;
import org.red5.server.api.stream.IBroadcastStream;
IClientBroadcastStream stream = Red5.getConnectionLocal().getStreamByName("myStream");
stream.saveAs("recordedStream", false);
stream.start();
- Playing a stream:
import org.red5.server.api.stream.ISubscriberStream;
ISubscriberStream stream = Red5.getConnectionLocal().getStreamByName("myStream");
stream.play("recordedStream", -2000, -1);
Getting Started
- Download the latest Red5 server release from the GitHub repository.
- Extract the downloaded archive to a directory of your choice.
- Open a terminal/command prompt and navigate to the extracted directory.
- Run the server using the following command:
./red5.sh
- Access the Red5 admin panel by opening a web browser and navigating to:
http://localhost:5080
- Start developing your streaming application using the Red5 API and supported protocols.
Competitor Comparisons
OpenVidu Platform main repository
Pros of openvidu
- Easier to set up and use, with a more user-friendly API
- Better documentation and tutorials for quick start
- Built-in support for recording and screen sharing
Cons of openvidu
- Less flexible for custom streaming protocols
- More resource-intensive, especially for large-scale deployments
- Limited support for legacy streaming formats
Code Comparison
openvidu:
var OV = new OpenVidu();
var session = OV.initSession();
session.connect(token)
.then(() => console.log("Connected"))
.catch(error => console.error(error));
red5-server:
RTMPClient client = new RTMPClient();
client.setHost("localhost");
client.setPort(1935);
client.connect(null, new INetConnectionListener() {
public void onConnectionSuccess(RTMPConnection conn) {
System.out.println("Connected");
}
});
Both projects aim to provide real-time communication solutions, but they differ in their approach and target use cases. openvidu focuses on WebRTC-based video conferencing with a higher-level API, making it easier for developers to implement video chat features quickly. red5-server, on the other hand, is a more general-purpose streaming server that supports multiple protocols, offering greater flexibility for custom streaming applications.
openvidu is better suited for developers looking to add video conferencing features to their applications with minimal effort, while red5-server is more appropriate for those requiring a highly customizable streaming solution or support for legacy protocols.
Janus WebRTC Server
Pros of Janus-gateway
- Written in C, offering better performance and lower resource usage
- Supports WebRTC natively, ideal for modern real-time communication applications
- Modular architecture allows for easy extension and customization
Cons of Janus-gateway
- Steeper learning curve due to C programming and WebRTC complexity
- Less extensive documentation compared to Red5-server
- Smaller community and ecosystem than Java-based alternatives
Code Comparison
Red5-server (Java):
public class Application extends MultiThreadedApplicationAdapter {
@Override
public boolean appStart(IScope app) {
System.out.println("Application started");
return true;
}
}
Janus-gateway (C):
static int janus_echotest_init(janus_callbacks *callback, const char *config_path) {
JANUS_LOG(LOG_INFO, "%s initialized!\n", JANUS_ECHOTEST_NAME);
return 0;
}
Both repositories provide server-side solutions for real-time communication, but they differ in their primary focus and implementation. Red5-server is a Java-based streaming server with support for various protocols, while Janus-gateway is a C-based WebRTC server focusing on modern web technologies. The choice between them depends on specific project requirements, performance needs, and developer expertise.
Ant Media Server is a live streaming engine software that provides adaptive, ultra low latency streaming by using WebRTC technology with ~0.5 seconds latency. Ant Media Server is auto-scalable and it can run on-premise or on-cloud.
Pros of Ant-Media-Server
- More active development with frequent updates and releases
- Better documentation and community support
- Offers additional features like WebRTC support and adaptive bitrate streaming
Cons of Ant-Media-Server
- Steeper learning curve for beginners
- More complex configuration and setup process
- Limited free version with some features restricted to enterprise edition
Code Comparison
Ant-Media-Server (Java):
@RestController
public class StreamsSourceRestService {
@Autowired
private AntMediaApplicationAdapter appAdapter;
@PostMapping("/start")
public Result startStreaming(@RequestBody StreamSource streamSource) {
return appAdapter.startStreaming(streamSource);
}
}
Red5-Server (Java):
public class Application extends MultiThreadedApplicationAdapter {
@Override
public void streamPublishStart(IBroadcastStream stream) {
super.streamPublishStart(stream);
System.out.println("Stream " + stream.getPublishedName() + " is now published");
}
}
Both projects are open-source media servers written in Java, but Ant-Media-Server offers more modern features and active development. Red5-Server has a simpler architecture and may be easier for beginners to understand and implement. The code examples show that Ant-Media-Server uses Spring Boot for RESTful services, while Red5-Server relies on a more traditional approach with method overrides for stream handling.
Complete open source web conferencing system.
Pros of BigBlueButton
- More comprehensive web conferencing solution with features like whiteboard, screen sharing, and breakout rooms
- Active development with frequent updates and a larger community
- Better documentation and easier setup process for new users
Cons of BigBlueButton
- Higher resource requirements and more complex infrastructure
- Less flexibility for customization compared to Red5 Server
- Steeper learning curve for developers looking to extend functionality
Code Comparison
BigBlueButton (HTML5 client):
import { Meteor } from 'meteor/meteor';
import { Session } from 'meteor/session';
import Auth from '/imports/ui/services/auth';
import { setCustomLogoUrl } from '/imports/ui/components/user-list/service';
Red5 Server (Java):
public class Application extends MultiThreadedApplicationAdapter {
@Override
public boolean appStart(IScope app) {
return true;
}
}
BigBlueButton focuses on a full-featured web conferencing experience, while Red5 Server provides a more low-level streaming server foundation. BigBlueButton's code reflects its web-based nature, utilizing Meteor for real-time updates. Red5 Server's code showcases its Java-based architecture, allowing for more direct control over streaming functionality.
Jitsi Videobridge is a WebRTC compatible video router or SFU that lets build highly scalable video conferencing infrastructure (i.e., up to hundreds of conferences per server).
Pros of jitsi-videobridge
- Specifically designed for WebRTC-based video conferencing
- Supports large-scale conferences with multiple participants
- Active development and regular updates
Cons of jitsi-videobridge
- Limited to WebRTC protocol
- Steeper learning curve for integration
Code Comparison
jitsi-videobridge (Java):
public class VideoChannel extends RtpChannel {
private final List<RtpEncoder> rtpEncoders = new ArrayList<>();
private final List<RtcpFeedbackMessageSender> rtcpFeedbackMessageSenders = new ArrayList<>();
// ...
}
red5-server (Java):
public class RTMPConnection extends RTMPMinaConnection {
private volatile IoSession ioSession;
private volatile IScope scope;
private volatile String clientId;
// ...
}
Both projects are written in Java, but they focus on different aspects of real-time communication. jitsi-videobridge is tailored for WebRTC video conferencing, while red5-server is a more general-purpose streaming server supporting multiple protocols like RTMP.
jitsi-videobridge has a more specialized codebase for handling video and audio streams in a conference setting, while red5-server's code reflects its broader functionality for various streaming scenarios.
The choice between these projects depends on the specific requirements of your application, with jitsi-videobridge being more suitable for WebRTC-based video conferencing and red5-server offering more flexibility for different streaming protocols.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
red5-server - Red5 server core
Red5 is an Open Source Flash Server written in Java that supports:
- Streaming Video (FLV, F4V, MP4, 3GP)
- Streaming Audio (MP3, F4A, M4A, AAC)
- Recording Client Streams (FLV and AVC+AAC in FLV container)
- Shared Objects
- Live Stream Publishing
- Remoting
- Protocols: RTMP, RTMPT, RTMPS, and RTMPE
The Red5 users list may be found here: red5interest
Subreddit: r/red5
Automatic builds (Courtesy of Apache OpenMeetings):
Releases
Previous releases
Note on Bootstrap
The bootstrap and shutdown classes have been moved to the red5-service project; the dependency has been added to this projects pom.
StackOverflow
If you want answers from a broader audience, Stack Overflow may be your best bet.
Maven
Releases are available at Sonatype - Releases
Snapshots are available at Sonatype - Snapshots
Include the red5-parent in your pom.xml in the dependencyManagement section
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.red5</groupId>
<artifactId>red5-parent</artifactId>
<version>${red5.version}</version>
<type>pom</type>
</dependency>
</dependencies>
</dependencyManagement>
in addition to any other Red5 projects in the dependencies section
<dependency>
<groupId>org.red5</groupId>
<artifactId>red5-server</artifactId>
<version>${red5.version}</version>
<type>jar</type>
</dependency>
Build from Source
As of release 1.2.2 the target JDK is now JDK 11 and the Maven poms use the toolchain plugin.
To build the red5 jars, execute the following on the command line:
mvn -Dmaven.test.skip=true install
This will create the jars in the "target" directory of the workspace; this will also skip the unit tests.
To package everything up in an assembly (tarball/zip):
mvn -Dmaven.test.skip=true clean package -P assemble
To build a milestone tarball:
mvn -Dmilestone.version=1.0.7-M1 clean package -Pmilestone
Eclipse
- Create the eclipse project files, execute this within red5-server directory.
mvn eclipse:eclipse
- Import the project into Eclipse.
- Access the right-click menu and select "Configure" and then "Convert to Maven Project".
- Now the project will build automatically, if you have the maven plugin installed.
Features supported via plugin (These are mostly deprecated):
Older Releases
The artifacts for the following releases are no longer available; if your project requires them, you'll have to build them from source. The listings are here only for historical purposes.
- Red5 1.2.25 Release (28 June 2022)
- Red5 1.2.2 Release (5 September 2019)
- Red5 1.1.1 Release (29 May 2019)
- Red5 1.1.0 Release (22 April 2019)
- Red5 1.0.10 Release (9 February 2019)
- Red5 1.0.9 Release (11 June 2017)
- Red5 1.0.8 Release (23 December 2016)
- Red5 1.0.7 Release (12 May 2016)
- Red5 1.0.6 Release (8 September 2015)
- Red5 1.0.5 Release (7 February 2015)
- Red5 1.0.4 Release (26 December 2014)
- Red5 1.0.3 Release (5 August 2014)
- Red5 1.0.2 Release (9 April 2014)
- Red5 1.0.2 Snapshot (18 April 2013)
- Red5 1.0.1 Final (14 January 2013)
- Red5 1.0 Final (03 December 2012)
- Red5 0.9.1 Final (21 February 2010)
- Red5 0.9.0 Final (27 January 2010)
- Red5 0.8.0 Final
Donations
Donate to the cause using
BTC | 19AUgJuVzC8jg16bSLJDcM6Nfouh9JvwKA |
ETH | 0x5115e085937ba5B4AEc0FF5C3cAbF6eE523B7D97 |
Supporters
YourKit supports open source projects with innovative and intelligent tools for monitoring and profiling Java and .NET applications.
Live video streaming solved. Broadcast video to millions in under 500 milliseconds.
Top Related Projects
OpenVidu Platform main repository
Janus WebRTC Server
Ant Media Server is a live streaming engine software that provides adaptive, ultra low latency streaming by using WebRTC technology with ~0.5 seconds latency. Ant Media Server is auto-scalable and it can run on-premise or on-cloud.
Complete open source web conferencing system.
Jitsi Videobridge is a WebRTC compatible video router or SFU that lets build highly scalable video conferencing infrastructure (i.e., up to hundreds of conferences per server).
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot