<Server version="8">
<Bind>
<Publishers>
<LLHLS>
<!--
OME only supports h2, so LLHLS works over HTTP/1.1 on non-TLS ports.
LLHLS works with higher performance over HTTP/2,
so it is recommended to use a TLS port.
-->
<Port>80</Port>
<TLSPort>443</TLSPort>
<WorkerCount>1</WorkerCount>
</LLHLS>
</Publishers>
</Bind>
<VirtualHosts>
<VirtualHost>
<Applications>
<Application>
<Publishers>
<LLHLS>
<ChunkDuration>0.2</ChunkDuration>
<SegmentDuration>6</SegmentDuration>
<SegmentCount>10</SegmentCount>
<CrossDomains>
<Url>*</Url>
</CrossDomains>
</LLHLS>
</Publishers>
</Application>
</Applications>
</VirtualHost>
</VirtualHosts>
</Server><CrossDomains>
<Url>*</Url>
<Url>*.airensoft.com</Url>
<Url>http://*.ovenplayer.com</Url>
<Url>https://demo.ovenplayer.com</Url>
</CrossDomains><OutputProfiles>
<OutputProfile>
<Name>bypass_stream</Name>
<OutputStreamName>${OriginStreamName}</OutputStreamName>
<Encodes>
<Audio>
<Bypass>true</Bypass>
</Audio>
<Video>
<Bypass>true</Bypass>
</Video>
</Encodes>
</OutputProfile>
</OutputProfiles><LLHLS>
...
<DVR>
<Enable>true</Enable>
<TempStoragePath>/tmp/ome_dvr/</TempStoragePath>
<MaxDuration>3600</MaxDuration>
</DVR>
...
</LLHLS><LLHLS>
<Dumps>
<Dump>
<Enable>true</Enable>
<TargetStreamName>stream*</TargetStreamName>
<Playlists>
<Playlist>llhls.m3u8</Playlist>
<Playlist>abr.m3u8</Playlist>
</Playlists>
<OutputPath>/service/www/ome-dev.airensoft.com/html/${VHostName}_${AppName}_${StreamName}/${YYYY}_${MM}_${DD}_${hh}_${mm}_${ss}</OutputPath>
</Dump>
</Dumps>
...
</LLHLS><LLHLS>
<ChunkDuration>0.5</ChunkDuration>
<PartHoldBack>1.5</PartHoldBack>
<SegmentDuration>6</SegmentDuration>
<SegmentCount>10</SegmentCount>
<DRM>
<Enable>false</Enable>
<InfoFile>path/to/file.xml</InfoFile>
</DRM>
<CrossDomains>
<Url>*</Url>
</CrossDomains>
</LLHLS><?xml version="1.0" encoding="UTF-8"?>
<DRMInfo>
<DRM>
<Name>MultiDRM</Name>
<VirtualHostName>default</VirtualHostName>
<ApplicationName>app</ApplicationName>
<StreamName>stream*</StreamName> <!-- Can be a wildcard regular expression -->
<CencProtectScheme>cbcs</CencProtectScheme> <!-- Currently supports cbcs only -->
<KeyId>572543f964e34dc68ba9ba9ef91d4xxx</KeyId> <!-- Hexadecimal -->
<Key>16cf4232a86364b519e1982a27d90xxx</Key> <!-- Hexadecimal -->
<Iv>572547f914e34dc68ba9ba9ef91d4xxx</Iv> <!-- Hexadecimal -->
<Pssh>0000003f7073736800000000edef8ba979d64acea3c827dcd51d21ed0000001f1210572547f964e34dc68ba9ba9ef91d4c4a1a05657a64726d48f3c6899xxx</Pssh> <!-- Hexadecimal, for Widevine -->
<!-- Add Pssh for FairPlay if needed -->
<FairPlayKeyUrl>skd://fiarplay_key_url</FairPlayKeyUrl> <!-- FairPlay only -->
</DRM>
<DRM>
<Name>MultiDRM2</Name>
<VirtualHostName>default</VirtualHostName>
<ApplicationName>app2</ApplicationName>
<StreamName>stream*</StreamName> <!-- Can be a wildcard regular expression -->
...........
</DRM>
</DRMInfo><?xml version="1.0" encoding="UTF-8"?>
<DRMInfo>
<DRM>
<Name>Pallycon</Name>
<VirtualHostName>default</VirtualHostName>
<ApplicationName>app</ApplicationName>
<StreamName>stream*</StreamName> <!-- Can be wildcard regular expression -->
<DRMProvider>Pallycon</DRMProvider> <!-- Manual(default), Pallycon -->
<DRMSystem>Widevine,Fairplay</DRMSystem> <!-- Widevine, Fairplay -->
<CencProtectScheme>cbcs</CencProtectScheme> <!-- cbcs, cenc -->
<ContentId>${VHostName}_${AppName}_${StreamName}</ContentId>
<KMSUrl>https://kms.pallycon.com/v2/cpix/pallycon/getKey/</KMSUrl>
<KMSToken>xxxx</KMSToken>
</DRM>
</DRMInfo>
<?xml version="1.0" encoding="UTF-8"?>
<Server version="8">
<Bind>
<Publishers>
<HLS>
<Port>13333</Port>
<TLSPort>13334</TLSPort>
<WorkerCount>1</WorkerCount>
</HLS>
</Publishers>
</Bind>
<VirtualHosts>
<VirtualHost>
<Applications>
<Application>
<Publishers>
<HLS>
<SegmentCount>5</SegmentCount>
<SegmentDuration>4</SegmentDuration>
<DVR>
<Enable>true</Enable>
<EventPlaylistType>false</EventPlaylistType>
<TempStoragePath>/tmp/ome_dvr/</TempStoragePath>
<MaxDuration>600</MaxDuration>
</DVR>
<CrossDomains>
<Url>*</Url>
</CrossDomains>
</HLS>
</Publishers>
</Application>
</Applications>
</VirtualHost>
</VirtualHosts>
</Server><OutputProfiles>
<OutputProfile>
<Name>bypass_stream</Name>
<OutputStreamName>${OriginStreamName}</OutputStreamName>
<Encodes>
<Audio>
<Bypass>true</Bypass>
</Audio>
<Video>
<Bypass>true</Bypass>
</Video>
</Encodes>
</OutputProfile>
</OutputProfiles><?xml version="1.0" encoding="UTF-8"?>
<OutputProfile>
<Name>abr_stream</Name>
<OutputStreamName>${OriginStreamName}</OutputStreamName>
<Playlist>
<Name>abr</Name>
<FileName>abr</FileName>
<Options>
<HLSChunklistPathDepth>0</HLSChunklistPathDepth>
<EnableTsPackaging>true</EnableTsPackaging>
</Options>
<Rendition>
<Name>SD</Name>
<Video>video_360</Video>
<Audio>aac_audio</Audio>
</Rendition>
<Rendition>
<Name>HD</Name>
<Video>video_720</Video>
<Audio>aac_audio</Audio>
</Rendition>
<Rendition>
<Name>FHD</Name>
<Video>video_1080</Video>
<Audio>aac_audio</Audio>
</Rendition>
</Playlist>
<Encodes>
<Audio>
<Name>aac_audio</Name>
<Codec>aac</Codec>
<Bitrate>128000</Bitrate>
<Samplerate>48000</Samplerate>
<Channel>2</Channel>
<BypassIfMatch>
<Codec>eq</Codec>
</BypassIfMatch>
</Audio>
<Video>
<Name>video_360</Name>
<Codec>h264</Codec>
<Bitrate>365000</Bitrate>
<Framerate>30</Framerate>
<Width>640</Width>
<Height>360</Height>
<KeyFrameInterval>30</KeyFrameInterval>
<ThreadCount>2</ThreadCount>
<Preset>medium</Preset>
<BFrames>0</BFrames>
<ThreadCount>1</ThreadCount>
</Video>
<Video>
<Name>video_720</Name>
<Codec>h264</Codec>
<Profile>high</Profile>
<Bitrate>1500000</Bitrate>
<Framerate>30</Framerate>
<Width>1280</Width>
<Height>720</Height>
<KeyFrameInterval>30</KeyFrameInterval>
<Preset>medium</Preset>
<BFrames>2</BFrames>
<ThreadCount>4</ThreadCount>
</Video>
<Video>
<Name>video_1080</Name>
<Codec>h264</Codec>
<Bitrate>6000000</Bitrate>
<Framerate>30</Framerate>
<Width>1920</Width>
<Height>1080</Height>
<KeyFrameInterval>30</KeyFrameInterval>
<ThreadCount>8</ThreadCount>
<Preset>medium</Preset>
<BFrames>0</BFrames>
</Video>
</Encodes>
</OutputProfile><CrossDomains>
<Url>*</Url>
<Url>*.airensoft.com</Url>
<Url>http://*.ovenplayer.com</Url>
<Url>https://demo.ovenplayer.com</Url>
</CrossDomains><HLS>
...
<DVR>
<Enable>true</Enable>
<TempStoragePath>/tmp/ome_dvr/</TempStoragePath>
<MaxDuration>3600</MaxDuration>
</DVR>
...
</HLS><Bind>
<Publishers>
<WebRTC>
<Signalling>
<Port>3333</Port>
<TLSPort>3334</TLSPort>
<WorkerCount>1</WorkerCount>
</Signalling>
<IceCandidates>
<IceCandidate>*:10000-10005/udp</IceCandidate>
<TcpRelay>*:3478</TcpRelay>
<TcpForce>true</TcpForce>
<TcpRelayWorkerCount>1</TcpRelayWorkerCount>
</IceCandidates>
</WebRTC>
</Publishers>
</Bind><Server version="7">
<VirtualHosts>
<VirtualHost>
<Applications>
<Application>
<Publishers>
<WebRTC>
<Timeout>30000</Timeout>
<Rtx>false</Rtx>
<Ulpfec>false</Ulpfec>
<JitterBuffer>false</JitterBuffer>
</WebRTC>
</Publishers>
</Application>
</Applications>
</VirtualHost>
</VirtualHosts>
</Server><OutputProfiles>
<OutputProfile>
<Name>bypass_stream</Name>
<OutputStreamName>${OriginStreamName}</OutputStreamName>
<Encodes>
<Audio>
<Bypass>true</Bypass>
</Audio>
<Video>
<Bypass>true</Bypass>
</Video>
<Video>
<!-- vp8, h264 -->
<Codec>vp8</Codec>
<Width>1280</Width>
<Height>720</Height>
<Bitrate>2000000</Bitrate>
<Framerate>30.0</Framerate>
</Video>
<Audio>
<Codec>opus</Codec>
<Bitrate>128000</Bitrate>
<Samplerate>48000</Samplerate>
<Channel>2</Channel>
</Audio>
</Encodes>
</OutputProfile>
</OutputProfiles><OutputProfiles>
<OutputProfile>
<Name>default</Name>
<OutputStreamName>${OriginStreamName}</OutputStreamName>
<Playlist>
<Name>for Webrtc</Name>
<FileName>abr</FileName>
<Options>
<WebRtcAutoAbr>false</WebRtcAutoAbr>
</Options>
<Rendition>
<Name>1080p</Name>
<Video>1080p</Video>
<Audio>opus</Audio>
</Rendition>
<Rendition>
<Name>480p</Name>
<Video>480p</Video>
<Audio>opus</Audio>
</Rendition>
<Rendition>
<Name>720p</Name>
<Video>720p</Video>
<Audio>opus</Audio>
</Rendition>
</Playlist>
<Playlist>
<Name>for llhls</Name>
<FileName>llhls_abr</FileName>
<Rendition>
<Name>480p</Name>
<Video>480p</Video>
<Audio>bypass_audio</Audio>
</Rendition>
<Rendition>
<Name>720p</Name>
<Video>720p</Video>
<Audio>bypass_audio</Audio>
</Rendition>
</Playlist>
<Encodes>
<Video>
<Name>bypass_video</Name>
<Bypass>true</Bypass>
</Video>
<Video>
<Name>480p</Name>
<Codec>h264</Codec>
<Width>640</Width>
<Height>480</Height>
<Bitrate>500000</Bitrate>
<Framerate>30</Framerate>
</Video>
<Video>
<Name>720p</Name>
<Codec>h264</Codec>
<Width>1280</Width>
<Height>720</Height>
<Bitrate>2000000</Bitrate>
<Framerate>30</Framerate>
</Video>
<Video>
<Name>1080p</Name>
<Codec>h264</Codec>
<Width>1920</Width>
<Height>1080</Height>
<Bitrate>5000000</Bitrate>
<Framerate>30</Framerate>
</Video>
<Audio>
<Name>bypass_audio</Name>
<Bypass>True</Bypass>
</Audio>
<Audio>
<Name>opus</Name>
<Codec>opus</Codec>
<Bitrate>128000</Bitrate>
<Samplerate>48000</Samplerate>
<Channel>2</Channel>
</Audio>
</Encodes>
</OutputProfile>
</OutputProfiles><Playlist>
<Name>for Webrtc</Name>
<FileName>abr</FileName>
<Options>
<WebRtcAutoAbr>false</WebRtcAutoAbr>
</Options>
<Rendition>
<Name>1080p</Name>
<Video>1080p</Video>
<Audio>opus</Audio>
</Rendition>
<Rendition>
<Name>480p</Name>
<Video>480p</Video>
<Audio>opus</Audio>
</Rendition>
<Rendition>
<Name>720p</Name>
<Video>720p</Video>
<Audio>opus</Audio>
</Rendition>
<Rendition>
<Name>1080pVp8</Name>
<Video>1080pVp8</Video>
<Audio>opus</Audio>
</Rendition>
<Rendition>
<Name>480pVp8</Name>
<Video>480pVp8</Video>
<Audio>opus</Audio>
</Rendition>
<Rendition>
<Name>720pVp8</Name>
<Video>720pVp8</Video>
<Audio>opus</Audio>
</Rendition>
</Playlist><Server version="8">
...
<StunServer>stun.l.google.com:19302</StunServer>
<Bind>
<Publishers>
<WebRTC>
...
<IceCandidates>
<!-- <TcpRelay>*:3478</TcpRelay> -->
<TcpRelay>Relay IP:Port</TcpRelay>
<TcpForce>false</TcpForce>
<IceCandidate>*:10000-10005/udp</IceCandidate>
</IceCandidates>
</WebRTC>
</Publishers>
</Bind>
...
</Server> ws(s)://host:port/app/stream?transport=tcpmyPeerConnection = new RTCPeerConnection({
iceServers: [
{
urls: "turn:Relay IP:Port?transport=tcp",
username: "ome",
credential: "airen"
}
]
});candidates: [{candidate: "candidate:0 1 UDP 50 192.168.0.200 10006 typ host", sdpMLineIndex: 0}]
code: 200
command: "offer"
ice_servers: [{credential: "airen", urls: ["turn:192.168.0.200:3478?transport=tcp"], user_name: "ome"}]
id: 506764844
peer_id: 0
sdp: {,…}
