Free to Use AMS Live Demo
AMS’ using scenario with simple videos divided by the product features. Notice the difference in
latency between traditional and WebRTC streaming.
Your Local Stream
Remote WebRTC Stream
(Ultra Low Latency Playing (< 1 second))
Live Streaming Blog
The lateset live streaming news and blog posts. Stay up to date.
Conference Video Call
Since online conference use cases are
interactive, the media server should provide
as ultra-low latency as much possible as it
does. Ant Media Server (AMS) can provide
less than 500ms latency with WebRTC.
Conference Video Call
Since online conference use cases are interactive, the media server should provide as ultra-low latency as much possible as it does. Ant Media Server (AMS) can provide less than 500ms latency with WebRTC.
See HLS Streaming
in Action
HLS streaming is a more cost-effective and
secure method instead of VOD streaming.
You can record your HLS streams.
See HLS streaming in action
HLS streaming is a more cost-effective and secure method instead of VOD streaming. You can record your HLS streams
RTMP Scenario
Developers can make their app users broadcast
live video not only from their browser with WebRTC
but also from OBS, thanks to WebRTC Adapter.
Let’s start with introducing OBS which stands for
Open Broadcaster Software.
RTMP scenario
Developers can make their app users broadcast live video not only from their browser with WebRTC but also from OBS, thanks to WebRTC Adapter. Let’s start with introducing OBS which stands for Open Broadcaster Software.
Free WebRTC Live Streaming SDKs
Build your own Video Streaming Application with Ant Media Server WebRTC SDKs for iOS,
Android, Unity, React Native, Flutter and JavaScript with a few line of code
- ANDROID
- IOS
- REACT NATIVE
- FLUTTER
- JAVASCRIPT
import io.antmedia.webrtcandroidframework.*;
webRTCClient.init(SERVER_URL, streamId, webRTCMode, tokenId, this.getIntent());
webRTCClient.startStream();
webRTCClient.stopStream();
import { useAntMedia, rtc_view } from "@antmedia/react-native-ant-media";
const adaptor = useAntMedia({
url: webSocketUrl,
mediaConstraints: {
audio: true,
video: {
width: 640,
height: 480,
frameRate: 30,
facingMode: "front",
},
},
onlyDataChannel: false,
callback(command, data) {},
callbackError: (err, data) => {},
peer_connection_config: {
iceServers: [{ urls: "stun:stun1.l.google.com:19302" }],
},
debug: true,
});
adaptor.publish(streamName);
adaptor.stop(streamName);
import 'package:ant_media_flutter/ant_media_flutter.dart';
static void connect (
String ip,
String streamId,
String roomId,
AntMediaType type,
bool userScreen,
bool forDataChannel,
HelperStateCallback onStateChange,
StreamStateCallback onLocalStream,
StreamStateCallback onAddRemoteStream,
DataChannelCallback onDataChannel,
DataChannelMessageCallback onDataChannelMessage,
ConferenceUpdateCallback onupdateConferencePerson,
StreamStateCallback onRemoveRemoteStream,) async {
anthelper = null;
anthelper ??= AntHelper(
ip,
streamId,
roomId,
onStateChange,
onAddRemoteStream,
onDataChannel,
onDataChannelMessage,
onLocalStream,
onRemoveRemoteStream,
userScreen,
onupdateConferencePerson,
forDataChannel )
..connect(type);
}
import { WebRTCAdaptor } from '@antmedia/webrtc_adaptor';
const webRTCAdaptor = new WebRTCAdaptor({
websocket_url: "wss://your-domain.tld:5443/WebRTCAppEE/websocket",
mediaConstraints: {
video: true,
audio: true,
},
peerconnection_config: {
'iceServers': [{'urls': 'stun:stun1.l.google.com:19302'}]
},
sdp_constraints: {
OfferToReceiveAudio : false,
OfferToReceiveVideo : false,
},
localVideoId: "id-of-video-element", //
bandwidth: int|string, // default is 900 kbps, string can be 'unlimited'
dataChannelEnabled: true|false, // enable or disable data channel
callback: (info, obj) => {}, // check info callbacks bellow
callbackError: function(error, message) {}, // check error callbacks bellow
});
webRTCAdaptor.publish(streamId, "", "", "", "");
webRTCAdaptor.stop(streamId);
Free WebRTC Live Streaming SDKs
Build your own Video Streaming Application with Ant Media Server WebRTC SDKs for iOS,
Android, Unity, React Native, Flutter and JavaScript with a few line of code
- ANDROID
- APPLE IOS
- REACT NATIVE
- FLUTTER
- JAVASCRIPT
import io.antmedia.webrtcandroidframework.*;
webRTCClient.init(SERVER_URL, streamId, webRTCMode, tokenId, this.getIntent());
webRTCClient.startStream();
webRTCClient.stopStream();
import { useAntMedia, rtc_view } from "@antmedia/react-native-ant-media";
const adaptor = useAntMedia({
url: webSocketUrl,
mediaConstraints: {
audio: true,
video: {
width: 640,
height: 480,
frameRate: 30,
facingMode: "front",
},
},
onlyDataChannel: false,
callback(command, data) {},
callbackError: (err, data) => {},
peer_connection_config: {
iceServers: [{ urls: "stun:stun1.l.google.com:19302" }],
},
debug: true,
});
adaptor.publish(streamName);
adaptor.stop(streamName);
import 'package:ant_media_flutter/ant_media_flutter.dart';
static void connect (
String ip,
String streamId,
String roomId,
AntMediaType type,
bool userScreen,
bool forDataChannel,
HelperStateCallback onStateChange,
StreamStateCallback onLocalStream,
StreamStateCallback onAddRemoteStream,
DataChannelCallback onDataChannel,
DataChannelMessageCallback onDataChannelMessage,
ConferenceUpdateCallback onupdateConferencePerson,
StreamStateCallback onRemoveRemoteStream,) async {
anthelper = null;
anthelper ??= AntHelper(
ip,
streamId,
roomId,
onStateChange,
onAddRemoteStream,
onDataChannel,
onDataChannelMessage,
onLocalStream,
onRemoveRemoteStream,
userScreen,
onupdateConferencePerson,
forDataChannel )
..connect(type);
}
import { WebRTCAdaptor } from '@antmedia/webrtc_adaptor';
const webRTCAdaptor = new WebRTCAdaptor({
websocket_url: "wss://your-domain.tld:5443/WebRTCAppEE/websocket",
mediaConstraints: {
video: true,
audio: true,
},
peerconnection_config: {
'iceServers': [{'urls': 'stun:stun1.l.google.com:19302'}]
},
sdp_constraints: {
OfferToReceiveAudio : false,
OfferToReceiveVideo : false,
},
localVideoId: "id-of-video-element", //
bandwidth: int|string, // default is 900 kbps, string can be 'unlimited'
dataChannelEnabled: true|false, // enable or disable data channel
callback: (info, obj) => {}, // check info callbacks bellow
callbackError: function(error, message) {}, // check error callbacks bellow
});
webRTCAdaptor.publish(streamId, "", "", "", "");
webRTCAdaptor.stop(streamId);
Why Ant Media
Ant Media Server supports WebRTC, CMAF, HLS, RTMP, RTSP, SRT and more for
your critical business streaming needs.
No Hidden Cost
The price you see is absolutely the final price for you. We don’t bother you with unwanted and sudden payments.
Streaming Experts
and Engineers
No need to pay for anything in advance. Just get started and only pay for your server uptime. You’ll have access to Ant Media Server SDKs, and everything else by signing up with zero upfront cost.
AMS Qualified
Customer Services
Inexpensive Invesment to Development
Reduce your unstable ve recurring development cost.
Win-Win
Collaboration
From the moment AMS is used, you’re starting to create flawless streaming engine and tailor made brand for your audience.
Quick Integration with
RESTful and OpenSource SDK
Integration with Streaming Projects and Media Server should be easy and quick. Ant Media Server provides a strong RESTful API and Open Source SDKs to realize this.