OvenMediaEngine (OME) is a Streaming Server for Sub-Second Latency. It supports WebRTC, RTMP, SRT, MPEG-2 TS, RTSP as input, WebRTC, LL-DASH, MPEG-DASH, HLS as output.

Overview

"Sub-Second Latency Streaming Server" OvenMediaEngine

What is OvenMediaEngine?

In short, OvenMediaEngine (OME) is Open-Source Streaming Server with Sub-Second Latency.

OME receives a video/audio source from encoders and cameras such as OvenStreamEncoder, OBS, XSplit, and more to WebRTC, RTMP, SRT, MPEG-2 TS Beta, or RTSP Beta. Then, OME transmits it using WebRTC, Low Latency MPEG-DASH (LLDASH), MPEG-DASH, and HLS.

Like the picture below:

We also provide OvenPlayer, Open-Source HTML5 Player that is very synergistic with OME.

What is the goal of this project?

AirenSoft aims to make it easier for you to build a stable broadcasting/streaming service with Sub-Second Latency. Therefore, we will continue developing and providing the most optimized tools for smooth Sub-Second Latency Streaming.

Would you please click on each link below for details:

Features

  • Ingest
    • Push: WebRTC, RTMP, SRT, MPEG-2 TS
    • Pull: RTSP
  • Sub-Second Streaming with WebRTC
    • WebRTC over TCP (with Embedded TURN Server)
    • ICE (Interactive Connectivity Establishment)
    • DTLS (Datagram Transport Layer Security)
    • SRTP (Secure Real-time Transport Protocol)
    • ULPFEC (Uneven Level Protection Forward Error Correction)
      • VP8, H.264
    • In-band FEC (Forward Error Correction)
      • Opus
    • Embedded WebRTC Signalling Server (WebSocket based)
  • Low Latency Streaming with MPEG-DASH (Chunked CAMF)
  • Legacy Streaming with MPEG-DASH/HLS
  • Embedded Live Transcoder
    • VP8, H.264, Opus, AAC, Bypass
  • Origin-Edge structure
  • Monitoring
  • Beta
    • File Recording
    • RTMP Push Publishing (Re-streaming)
    • Thumbnail
    • REST API
  • Experiment
    • P2P Traffic Distribution (Only WebRTC)

Supported Platforms

We have tested OME on the platforms listed below. However, we think it can work with other Linux packages as well:

  • Docker
  • Ubuntu 18+
  • CentOS 7+
  • Fedora 28+

Getting Started

Docker

docker run -d \
-p 1935:1935 \
-p 3333:3333 \
-p 3478:3478 \
-p 8080:8080 \
-p 9000:9000 \
-p 9999:9999/udp \
-p 4000-4005:4000-4005/udp \
-p 10006-10010:10006-10010/udp \
--name ovenmediaengine \
airensoft/ovenmediaengine:latest

You can also store the configuration files on your host:

docker run -d \
-p 1935:1935 \
-p 3333:3333 \
-p 3478:3478 \
-p 8080:8080 \
-p 9000:9000 \
-p 9999:9999/udp \
-p 4000-4005:4000-4005/udp \
-p 10006-10010:10006-10010/udp \
-v ome-origin-conf:/opt/ovenmediaengine/bin/origin_conf \
-v ome-edge-conf:/opt/ovenmediaengine/bin/edge_conf \
--name ovenmediaengine \
airensoft/ovenmediaengine:latest

The configuration files are now accessible under /var/lib/docker/volumes/ /_data .

Following the above example, you will find them under /var/lib/docker/volumes/ome-origin-conf/_data and /var/lib/docker/volumes/ome-edge-conf/_data.

If you want to put them in a different location, the easiest way is to create a link:

ln -s /var/lib/docker/volumes/ome-origin-conf/_data/ /my/new/path/to/ome-origin-conf \
&& ln -s /var/lib/docker/volumes/ome-edge-conf/_data/ /my/new/path/to/ome-edge-conf

Other Methods

Please read the Getting Started.

How to contribute

Thank you so much for being so interested in OvenMediaEngine.

We need your help to keep and develop our open-source project, and we want to tell you that you can contribute in many ways. Please see our Guidelines, Rules, and Contribute.

We always hope that OvenMediaEngine will give you good inspiration.

For more information

License

OvenMediaEngine is licensed under the GPLv3 or later.

Issues
  • High CPU usage

    High CPU usage

    Hello, I'm worried, this CPU usage is normal? OME has only 5 incoming streams and 1 outgoing. I'm afraid to use OME on production... Other solutions is using ~20% CPU max.

    There is only one output profile with Hardware Acceleration enabled.

    MobaXterm_KZwTsE7esF OME_config.md

    stale 
    opened by fcqpl 94
  • I cannot start with a test environment with docker.

    I cannot start with a test environment with docker.

    Describe the bug I think is not a bug, but I am gonna ask you here.

    I am trying to make a little test with OvenMediaEngine, I have 3 components:

    OvenMediaEngine, OvenPlayer and OBS.

    For OvenMediaEngine I am running with the following command:

    docker run -d -p 1935:1935 -p 3333:3333 -p 8080:8080 -p 9000:9000 -p 4000-4005:4000-4005/udp -p 10006-10010:10006-10010/udp nairensoft/ovenmediaengine:latest

    I am emitting with OBS to the container directly by RTMP, that's is working ok.

    But the problem is when I try to watch the video with OvenPlayer, the video never starts.

    And I am configuring in OBS:

    Server: rtmp://127.0.0.1:1935/app/ Stream key: stream

    To Reproduce Steps to reproduce the behavior:

    1. As Server.xml I am using the same as it's configured on the nairensoft/ovenmediaengine:latest image
    2. With Encoder OBS 26.0.2 (All the config by default)
    3. The error is below.

    Expected behavior I want to watch the video, it's a simple test but I do not know what is happening :(

    Logs [2020-11-24 17:54:31.596] I 12 Monitor | stream_metrics.cpp:119 | A new session has started playing #default#app/stream on the WebRTC publihser. WebRTC(1)/Stream total(1)/App total(1) [2020-11-24 17:55:02.059] I 26 Monitor | stream_metrics.cpp:144 | A session has been stopped playing #default#app/stream on the WebRTC publihser. Concurrent Viewers[WebRTC(0)/Stream total(0)/App total(0)]

    Server (please complete the following information):

    • OS: docker
    • OvenMediaEngine Version: latest

    Player (please complete the following information):

    • Browser chrome and firefox
    opened by Juanfree 56
  • Streams dropping intermittently

    Streams dropping intermittently

    Describe the bug I'm still investigating but it appears that OME freezes and stops receiving input streams from all rtmp inputs. It recovers fairly quickly (less than a few seconds) but it still can cause some buffering for viewers. Here is a graph showing CPU usage (orange) and connected streams (green) - CPU usage is dropping to near 0 periodically when streams are disconnected.

    I've checked and it does not appear to be our host's network connection

    Screen Shot 2022-04-11 at 5 10 35 PM

    Attached here is an excerpt of our log file including a few minutes before everyone is disconnected and probably 10-15 minutes after

    cleanlog.txt

    Server.xml

    Aside from the actual bug, if there are any performance recommendations we're happy to hear them :)

    bug stale 
    opened by naanlizard 49
  • Invalid data received from [Mobile only]

    Invalid data received from [Mobile only]

    Any idea why I keep seeing this on the log only on mobile browsers?

    on PC works fine

    on mobile, the WEBRTC does not work but on PC + webcam works perfect

    [SPRtcSignalling:13] HttpServer | web_socket_interceptor.cpp:231 | Invalid data received from <HttpRequest: 0x7f0898001b00, Method: 1, uri: wss://....>

    I tested with and without transport=tcp

    opened by DanielnetoDotCom 41
  • Streaming SRT

    Streaming SRT

    Describe the bug

    I'm experimenting with streaming via SRT instead of RTMP. Unfortunately, the image is pixelated and distorted:

    I get the following message in the logs:

    [2021-12-04 16:25:00.271] W [SPSRT-T9999:874] MPEGTS_DEPACKETIZER | mpegts_depacketizer.cpp:84 | An out-of-order packet was received.(PID : 256 Expected : 14, Received : 5

    To Reproduce

    I have audio and video encoding bypassed in the server.xml My OBS settings are as follows:

    Encoder: x264 Resolution: 1080p Rate control: CBR Bitrate: 10000 kpbs Keyframe Interval: 1 CPU: Ultrafast Profile: Baseline Tune: Zerolatency options: bframes=0 threads=8

    Logs [2021-12-04 16:25:00.271] W [SPSRT-T9999:874] MPEGTS_DEPACKETIZER | mpegts_depacketizer.cpp:84 | An out-of-order packet was received.(PID : 256 Expected : 14, Received : 5

    Server (please complete the following information):

    • OS: ubuntu 18.04
    • OvenMediaEngine Version: 0.12.8

    Player (please complete the following information):

    • Device: MacBook Pro M1
    • OS: 12.0.1
    • Browser Google Chrome
    • Version 96.0.4664.55

    Additional context The image quality degrades, specially after cuts. I'm testing with a very fast cut video, and the pixelation is specially noticeable after a cut.

    bug stale 
    opened by zcolor 34
  • OvenMediaEngine failed to pull RTSP stream

    OvenMediaEngine failed to pull RTSP stream

    Describe the bug Hello, I use OvenMediaEngine to pull RTSP stream and WebRTC to play, but it fails to pull the stream.

    Expected behavior I hope to be able to pull the RTSP stream normally

    Server (please complete the following information):

    • OS: Centos 7.x
    • OvenMediaEngine Version: v0.12.6

    Player (please complete the following information):

    • Device: Lenovo yoga 14s
    • OS: Windows 10
    • Browser: Microsoft Edge
    • Version : 94.0.992.50

    OvenMediaengine Logs

    [2021-10-18 12:28:45.601] I [SPRtcSignalling:30754] Signalling | rtc_signalling_server.cpp:201  | New client is connected: <ClientSocket: 0x7f5d64001080, #4, Connected, TCP, Nonblocking, 192.168.8.66:62099>
    [2021-10-18 12:28:45.608] I [SPRtcSignalling:30754] Orchestrator | orchestrator.cpp:546  | Trying to pull stream [#default#app/n1rtsp] from provider using origin map: PullProvider
    [2021-10-18 12:28:45.710] E [SPRtcSignalling:30754] RtspMessage | rtsp_message.cpp:124  | Could not parse status-line : RTSP/1.0 500 Internal Server Error
    [2021-10-18 12:28:45.711] E [SPRtcSignalling:30754] RtspcStream | rtspc_stream.cpp:840  | [#default#app/n1rtsp] An error occurred while parsing packet: Invalid packet
    [2021-10-18 12:28:45.711] E [SPRtcSignalling:30754] RtspcStream | rtspc_stream.cpp:263  | No response(CSeq : 0) was received from the rtsp server(rtsp://192.168.8.125/live/1st/living_play)
    [2021-10-18 12:28:45.711] E [SPRtcSignalling:30754] Provider | provider.cpp:152  | RTSPCProvider Application could not create [n1rtsp] stream.
    [2021-10-18 12:28:45.711] E [SPRtcSignalling:30754] Orchestrator | orchestrator.cpp:591  | Could not pull stream [#default#app/n1rtsp] from provider: PullProvider
    [2021-10-18 12:28:45.711] E [SPRtcSignalling:30754] WebRTC Publisher | webrtc_publisher.cpp:440  | Cannot find stream (#default#app/n1rtsp)
    [2021-10-18 12:28:45.711] E [SPRtcSignalling:30754] Signalling | rtc_signalling_server.cpp:292  | Cannot find stream [#default#app/n1rtsp]
    [2021-10-18 12:28:45.711] I [SPRtcSignalling:30754] Signalling | rtc_signalling_server.cpp:339  | Client is disconnected: <WebSocketClient: 0x7f5d6401c740, <ClientSocket: 0x7f5d64001080, #4, Closed, TCP, Nonblocking, 192.168.8.66:62099>> (#default#app / n1rtsp, ufrag: local: (N/A), remote: (N/A))
    

    OvenMediaengine Config

    <?xml version="1.0" encoding="UTF-8"?>
    
    <Server version="8">
    	<Name>OvenMediaEngine</Name>
    	<!-- Host type (origin/edge) -->
    	<Type>origin</Type>
    	<!-- Specify IP address to bind (* means all IPs) -->
    	<IP>*</IP>
    
    	<!-- 
    	To get the public IP address(mapped address of stun) of the local server. 
    	This is useful when OME cannot obtain a public IP from an interface, such as AWS or docker environment. 
    	If this is successful, you can use ${PublicIP} in your settings.
    	-->
    	<StunServer>stun.l.google.com:19302</StunServer>
    
    	<!-- Settings for the ports to bind -->
    	<Bind>
    		<!-- Enable this configuration if you want to use API Server -->
    		<!--
    		<Managers>
    			<API>
    				<Port>8081</Port>
    				<WorkerCount>1</WorkerCount>
    			</API>
    		</Managers>
    		-->
    
    		<Providers>
    			<!-- Pull providers -->
    			<RTSPC>
    				<WorkerCount>1</WorkerCount>
    			</RTSPC>
    			<OVT>
    				<WorkerCount>1</WorkerCount>
    			</OVT>
    			<!-- Push providers -->
    			<RTMP>
    				<Port>1935</Port>
    				<WorkerCount>1</WorkerCount>
    			</RTMP>
    			<SRT>
    				<Port>9999</Port>
    				<WorkerCount>1</WorkerCount>
    			</SRT>
    			<MPEGTS>
    				<!--
    					Listen on port 4000~4005 (<Port>4000-4004,4005/udp</Port>)
    					This is just a demonstration to show that you can configure the port in several ways
    				-->
    				<Port>4000/udp</Port>
    			</MPEGTS>
    			<WebRTC>
    				<Signalling>
    					<Port>3333</Port>
    					<!-- If you want to use TLS, specify the TLS port -->
    					<!-- <TLSPort>3334</TLSPort> -->
    					<WorkerCount>1</WorkerCount>
    				</Signalling>
    
    				<IceCandidates>
    					<!-- 
    						If you want to stream WebRTC over TCP, specify IP:Port for TURN server.
    						This uses the TURN protocol, which delivers the stream from the built-in TURN server to the player's TURN client over TCP. 
    						For detailed information, refer https://airensoft.gitbook.io/ovenmediaengine/streaming/webrtc-publishing#webrtc-over-tcp
    					-->
    					<TcpRelay>*:3478</TcpRelay>
    					<!-- TcpForce is an option to force the use of TCP rather than UDP in WebRTC streaming. (You can omit ?transport=tcp accordingly.) If <TcpRelay> is not set, playback may fail. -->
    					<TcpForce>false</TcpForce>
    
    					<IceCandidate>*:10000/udp</IceCandidate>
    					<TcpRelayWorkerCount>1</TcpRelayWorkerCount>
    				</IceCandidates>
    			</WebRTC>
    		</Providers>
    
    		<Publishers>
    			<OVT>
    				<Port>9000</Port>
    				<WorkerCount>1</WorkerCount>
    			</OVT>
    			<HLS>
    				<Port>80</Port>
    				<!-- If you want to use TLS, specify the TLS port -->
    				<!-- <TLSPort>443</TLSPort> -->
    				<WorkerCount>1</WorkerCount>
    			</HLS>
    			<DASH>
    				<Port>80</Port>
    				<!-- If you want to use TLS, specify the TLS port -->
    				<!-- <TLSPort>443</TLSPort> -->
    				<WorkerCount>1</WorkerCount>
    			</DASH>
    			<WebRTC>
    				<Signalling>
    					<Port>3333</Port>
    					<!-- If you want to use TLS, specify the TLS port -->
    					<!-- <TLSPort>3334</TLSPort> -->
    					<WorkerCount>1</WorkerCount>
    				</Signalling>
    				<IceCandidates>
    					<!-- 
    						If you want to stream WebRTC over TCP, specify IP:Port for TURN server.
    						This uses the TURN protocol, which delivers the stream from the built-in TURN server to the player's TURN client over TCP. 
    						For detailed information, refer https://airensoft.gitbook.io/ovenmediaengine/streaming/webrtc-publishing#webrtc-over-tcp
    					-->
    					<TcpRelay>*:3478</TcpRelay>
    					<!-- TcpForce is an option to force the use of TCP rather than UDP in WebRTC streaming. (You can omit ?transport=tcp accordingly.) If <TcpRelay> is not set, playback may fail. -->
    					<TcpForce>false</TcpForce>
    
    					<IceCandidate>*:10000/udp</IceCandidate>
    					<TcpRelayWorkerCount>1</TcpRelayWorkerCount>
    				</IceCandidates>
    			</WebRTC>
    		</Publishers>
    	</Bind>
    
    	<!-- P2P works only in WebRTC -->
    	<!--
    	<P2P>
    		<MaxClientPeersPerHostPeer>2</MaxClientPeersPerHostPeer>
    	</P2P>
    	-->
    
    	<!--
    		Enable this configuration if you want to use API Server
    		
    		<AccessToken> is a token for authentication, and when you invoke the API, you must put "Basic base64encode(<AccessToken>)" in the "Authorization" header of HTTP request.
    		For example, if you set <AccessToken> to "ome-access-token", you must set "Basic b21lLWFjY2Vzcy10b2tlbg==" in the "Authorization" header.
    	-->
    	<!--
    	<Managers>
    		<Host>
    			<Names>
    				<Name>*</Name>
    			</Names>
    			<TLS>
    				<CertPath>path/to/file.crt</CertPath>
    				<KeyPath>path/to/file.key</KeyPath>
    				<ChainCertPath>path/to/file.crt</ChainCertPath>
    			</TLS>
    		</Host>
    		<API>
    			<AccessToken>ome-access-token</AccessToken>
    		</API>
    	</Managers>
    	-->
    
    	<VirtualHosts>
    		<!-- You can use wildcard like this to include multiple XMLs -->
    		<VirtualHost include="VHost*.xml" />
    		<VirtualHost>
    			<Name>default</Name>
    			<!--Distribution is a value that can be used when grouping the same vhost distributed across multiple servers. This value is output to the events log, so you can use it to aggregate statistics. -->
    			<Distribution>ovenmediaengine.com</Distribution>
    
    			<!-- Settings for multi ip/domain and TLS -->
    			<Host>
    				<Names>
    					<!-- Host names
    						<Name>stream1.airensoft.com</Name>
    						<Name>stream2.airensoft.com</Name>
    						<Name>*.sub.airensoft.com</Name>
    						<Name>192.168.0.1</Name>
    					-->
    					<Name>*</Name>
    				</Names>
    				<!--
    				<TLS>
    					<CertPath>path/to/file.crt</CertPath>
    					<KeyPath>path/to/file.key</KeyPath>
    					<ChainCertPath>path/to/file.crt</ChainCertPath>
    				</TLS>
    				-->
    			</Host>
    
    			<!-- 	
    			Refer https://airensoft.gitbook.io/ovenmediaengine/signedpolicy
    			<SignedPolicy>
    				<PolicyQueryKeyName>policy</PolicyQueryKeyName>
    				<SignatureQueryKeyName>signature</SignatureQueryKeyName>
    				<SecretKey>aKq#1kj</SecretKey>
    
    				<Enables>
    					<Providers>rtmp,webrtc,srt</Providers>
    					<Publishers>webrtc,hls,dash,lldash</Publishers>
    				</Enables>
    			</SignedPolicy>
    			-->
    
    			<!--
    			<AdmissionWebhooks>
    				<TargetUrl></TargetUrl>
    				<SecretKey></SecretKey>
    				<Timeout>3000</Timeout>
    				<Enables>
    					<Providers>rtmp,webrtc,srt</Providers>
    					<Publishers>webrtc,hls,dash,lldash</Publishers>
    				</Enables>
    			</AdmissionWebhooks>
    			-->
    
    			
    			<Origins>
    				<Origin>
    					<Location>/app/n1rtsp</Location>
    					<Pass>
    						<Scheme>rtsp</Scheme>
    						<Urls>
    							<!--<Url>192.168.8.201:554/ch01</Url>-->
    							<Url>192.168.8.125/live/1st/living_play</Url>
    						</Urls>
    					</Pass>
    				</Origin>
    			</Origins>
    		
    			<!-- Settings for applications -->
    			<Applications>
    				<Application>
    					<Name>app</Name>
    					<!-- Application type (live/vod) -->
    					<Type>live</Type>
    					<OutputProfiles>
    						<!-- Enable this configuration if you want to hardware acceleration using GPU -->
    						<!-- 
    						<HardwareAcceleration>false</HardwareAcceleration>
    						-->
    
    						<OutputProfile>
    							<Name>bypass_stream</Name>
    							<OutputStreamName>${OriginStreamName}</OutputStreamName>
    							<Encodes>
    								<Audio>
    									<Bypass>true</Bypass>
    								</Audio>
    								<Video>
    									<Bypass>true</Bypass>
    								</Video>
    								<Audio>
    									<Codec>opus</Codec>
    									<Bitrate>128000</Bitrate>
    									<Samplerate>48000</Samplerate>
    									<Channel>2</Channel>
    								</Audio>
    								<!-- 							
    								<Video>
    									<Codec>vp8</Codec>
    									<Bitrate>1024000</Bitrate>
    									<Framerate>30</Framerate>
    									<Width>1280</Width>
    									<Height>720</Height>
    								</Video>								
    								-->
    							</Encodes>
    						</OutputProfile>
    					</OutputProfiles>
    					<Providers>
    						<OVT />
    						<WebRTC />
    						<RTMP />
    						<SRT />
    						<MPEGTS>
    							<StreamMap>
    								<!--
    									Set the stream name of the client connected to the port to "stream_${Port}"
    									For example, if a client connets to port 4000, OME creates a "stream_4000" stream
    									<Stream>
    										<Name>stream_${Port}</Name>
    										<Port>4000,4001-4004</Port>
    									</Stream>
    									<Stream>
    										<Name>stream_4005</Name>
    										<Port>4005</Port>
    									</Stream>
    								-->
    								<Stream>
    									<Name>stream_${Port}</Name>
    									<Port>4000</Port>
    								</Stream>
    							</StreamMap>
    						</MPEGTS>
    						<RTSPPull />
    						<WebRTC>
    							<Timeout>30000</Timeout>
    						</WebRTC>
    					</Providers>
    					<Publishers>
    						<AppWorkerCount>1</AppWorkerCount>
    						<StreamWorkerCount>8</StreamWorkerCount>
    						<OVT />
    						<WebRTC>
    							<Timeout>30000</Timeout>
    							<Rtx>false</Rtx>
    							<Ulpfec>false</Ulpfec>
    							<JitterBuffer>false</JitterBuffer>
    						</WebRTC>
    						<HLS>
    							<SegmentDuration>5</SegmentDuration>
    							<SegmentCount>3</SegmentCount>
    							<CrossDomains>
    								<Url>*</Url>
    							</CrossDomains>
    						</HLS>
    						<DASH>
    							<SegmentDuration>5</SegmentDuration>
    							<SegmentCount>3</SegmentCount>
    							<CrossDomains>
    								<Url>*</Url>
    							</CrossDomains>
    							<!--
    								Enable DASH player to obtain UTCTiming from OME using /time?iso&ms API
    							-->
    							<UTCTiming>
    								<Scheme>urn:mpeg:dash:utc:http-xsdate:2014</Scheme>
    								<Value>/time?iso&amp;ms</Value>
    							</UTCTiming>
    						</DASH>
    						<LLDASH>
    							<SegmentDuration>5</SegmentDuration>
    							<CrossDomains>
    								<Url>*</Url>
    							</CrossDomains>
    							<!--
    								Use default options for UTCTiming
    									- scheme: urn:mpeg:dash:utc:http-xsdate:2014
    									- value: /time?iso&ms
    							-->
    							<UTCTiming />
    						</LLDASH>
    					</Publishers>
    				</Application>
    			</Applications>
    		</VirtualHost>
    	</VirtualHosts>
    </Server>
    
    
    opened by yginuo 34
  • Origin out of sync --> trying to open second feed from edge.

    Origin out of sync --> trying to open second feed from edge.

    Describe the bug A clear and concise description of what the bug is.

    Orchestrator | orchestrator.cpp:1312 | Out of sync: origin: 0, domain: 1 (This is a bug)

    To Reproduce Steps to reproduce the behavior:

    1. Set Server.xml as follows '...' Edge.xml:

    `

    OvenMediaEngine edge *
    <!-- Settings for the ports to bind -->
    <Bind>
    	<Providers>
    		<!-- Currently, OME doesn't support using the specified port for OVT Provider -->
    		<OVT>
    			<Port>9001</Port>
    		</OVT>
    	</Providers>
    
    	<Publishers>
            <HLS>
    			<Port>${env:OME_HLS_STREAM_PORT:8090}</Port>
    			<!-- If you want to use TLS, specify the TLS port -->
    			<!-- <TLSPort>8443</TLSPort> -->
    		</HLS>
            <DASH>
    			<Port>${env:OME_DASH_STREAM_PORT:8090}</Port>
    			<!-- If you want to use TLS, specify the TLS port -->
    			<!-- <TLSPort>8443</TLSPort> -->
    		</DASH>
    		<WebRTC>
    			<Signalling>
    				<Port>${env:OME_SIGNALLING_PORT:3334}</Port>
    				<!-- If you want to use TLS, specify the TLS port -->
    				<!-- <TLSPort>5556</TLSPort> -->
    			</Signalling>
    			<IceCandidates>
    				<IceCandidate>${env:OME_ICE_CANDIDATES:*:10000-10005/udp}</IceCandidate>
    			</IceCandidates>
    		</WebRTC>
    	</Publishers>
    </Bind>
    
    <!-- P2P works only in WebRTC -->
    <!--
    <P2P>
    	<MaxClientPeersPerHostPeer>2</MaxClientPeersPerHostPeer>
    </P2P>
    -->
    
    <VirtualHosts>
    	<!-- You can use wildcard like this to include multiple XMLs -->
    	<VirtualHost include="VHost*.xml" />
    	<VirtualHost>
    		<Name>default</Name>
    
    		<!-- Settings for multi domain and TLS -->
    		<Domain>
    			<Names>
    				<!--
    					Domain names
    
    					<Name>stream1.airensoft.com</Name>
    					<Name>stream2.airensoft.com</Name>
    					<Name>*.sub.airensoft.com</Name>
    				-->
    			</Names>
    			<!--
    			<TLS>
    				<CertPath>path/to/file.crt</CertPath>
    				<KeyPath>path/to/file.key</KeyPath>
    				<ChainCertPath>path/to/file.crt</ChainCertPath>
    			</TLS>
    			-->
    		</Domain>
    
    		<SignedURL>
                <CryptoKey>${env:SIGNED_URL_CRYPTO_KEY:}</CryptoKey>
                <QueryStringKey>${env:SIGNED_URL_QUERY_KEY:authtoken}</QueryStringKey>
      </SignedURL>
    
    		<!-- Settings for ProxyPass (It can specify origin for each path) -->
    		<Origins>
    			<Origin>
    				<Location>/deep/</Location>
    				<Pass>
    					<Scheme>ovt</Scheme>
    					<Urls>
    						<Url>172.26.103.48:9000/deep/</Url>
    					</Urls>
    				</Pass>
    			</Origin>
    			<Origin>
    				<Location>/volans</Location>
    				<Pass>
    					<Scheme>ovt</Scheme>
    					<Urls>
    						<Url>172.26.5.170:9000/volans/</Url>
    					</Urls>
    				</Pass>
    			</Origin>
    			<Origin>
    				<Location>/loeve/</Location>
    				<Pass>
    					<Scheme>ovt</Scheme>
    					<Urls>
    						<Url>172.26.125.128:9000/loeve/</Url>
    					</Urls>
    				</Pass>
    			</Origin>
    		</Origins>
    	</VirtualHost>
    </VirtualHosts>
    
    ` I can open the feed of each origin. ws://172.26.103.48:3333/deep/simon -> opens and plays without issue ws://172.26.125.128:3333/loeve/ps -> opens and plays without issue

    Objective: Open the deep/simon feed and the loeve/ps from the Edge OME.

    1 ) I run the Edge OME and use demo.ovenplayer to open the deep/simon feed ws://172.16.10.100:3334/deep/simon (the 16 instead or 26 in the IP is correct) -> this feed will open without issues. 2) I than try to open in a sensor demo player ws://172.16.10.100:3334/loeve/ps and this does not work.

    3)-> if I alter the order, so first open the loeve/ps feed and after that the deep/simon feed it is that feed that does not work.

    So I am unable to to open feeds of two different origin servers.

    Expected behavior A clear and concise description of what you expected to happen.

    I expect both feeds to open.

    Logs Please upload the entire OvenMediaEngine.log. You may delete important personal information. Starting ovenmediaengine_edge_1 ... done Attaching to ovenmediaengine_edge_1 edge_1 | [2020-09-21 13:42:14.061] I 1 Config | config_manager.cpp:144 | Trying to set logfile in directory... (/var/log/ovenmediaengine) edge_1 | [2020-09-21 13:42:14.061] I 1 Config | config_manager.cpp:47 | Trying to load configurations... (edge_conf/Server.xml) edge_1 | [2020-09-21 13:42:14.063] I 1 OvenMediaEngine | main.cpp:244 | OvenMediaEngine v0.10.4 is started on [9ce5a5c471cc] (Linux x86_64 - 5.4.0-40-generic, #44-Ubuntu SMP Tue Jun 23 00:01:04 UTC 2020) edge_1 | [2020-09-21 13:42:14.063] I 1 OvenMediaEngine | main.cpp:246 | With modules: edge_1 | [2020-09-21 13:42:14.063] I 1 OvenMediaEngine | main.cpp:247 | FFmpeg 3.4.7 OME edge_1 | [2020-09-21 13:42:14.063] I 1 OvenMediaEngine | main.cpp:248 | Configuration: --prefix=/opt/ovenmediaengine --enable-gpl --enable-nonfree --extra-cflags=-I/opt/ovenmediaengine/include --extra-ldflags='-L/opt/ovenmediaengine/lib -Wl,-rpath,/opt/ovenmediaengine/lib' --extra-libs=-ldl --enable-shared --disable-static --disable-debug --disable-doc --disable-programs --disable-avdevice --disable-dct --disable-dwt --disable-error-resilience --disable-lsp --disable-lzo --disable-rdft --disable-faan --disable-pixelutils --disable-everything --enable-zlib --enable-libopus --enable-libvpx --enable-libfdk_aac --enable-libx264 --enable-encoder='libvpx_vp8,libvpx_vp9,libopus,libfdk_aac,libx264' --enable-decoder='aac,aac_latm,aac_fixed,h264' --enable-parser='aac,aac_latm,aac_fixed,h264' --enable-network --enable-protocol=tcp --enable-protocol=udp --enable-protocol=rtp --enable-demuxer=rtsp --enable-filter='asetnsamples,aresample,aformat,channelmap,channelsplit,scale,transpose,fps,settb,asettb' edge_1 | [2020-09-21 13:42:14.063] I 1 OvenMediaEngine | main.cpp:249 | libavformat: 57.83.100 edge_1 | [2020-09-21 13:42:14.063] I 1 OvenMediaEngine | main.cpp:250 | libavcodec: 57.107.100 edge_1 | [2020-09-21 13:42:14.063] I 1 OvenMediaEngine | main.cpp:251 | libavutil: 55.78.100 edge_1 | [2020-09-21 13:42:14.063] I 1 OvenMediaEngine | main.cpp:252 | libavfilter: 6.107.100 edge_1 | [2020-09-21 13:42:14.063] I 1 OvenMediaEngine | main.cpp:253 | libswresample: 2.9.100 edge_1 | [2020-09-21 13:42:14.063] I 1 OvenMediaEngine | main.cpp:254 | libswscale: 4.8.100 edge_1 | [2020-09-21 13:42:14.063] I 1 OvenMediaEngine | main.cpp:255 | SRT: 1.3.3 edge_1 | [2020-09-21 13:42:14.063] I 1 OvenMediaEngine | main.cpp:256 | SRTP: libsrtp2 2.2.0 edge_1 | [2020-09-21 13:42:14.063] I 1 OvenMediaEngine | main.cpp:257 | OpenSSL: OpenSSL 1.1.0g 2 Nov 2017 edge_1 | [2020-09-21 13:42:14.063] I 1 OvenMediaEngine | main.cpp:258 | Configuration: compiler: gcc -DDSO_DLFCN -DHAVE_DLFCN_H -DNDEBUG -DOPENSSL_THREADS -DOPENSSL_NO_STATIC_ENGINE -DOPENSSL_PIC -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DRC4_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DGHASH_ASM -DECP_NISTZ256_ASM -DPADLOCK_ASM -DPOLY1305_ASM -DOPENSSLDIR=""/opt/ovenmediaengine"" -DENGINESDIR=""/opt/ovenmediaengine/lib/engines-1.1"" -Wa,--noexecstack edge_1 | [2020-09-21 13:42:14.063] I 1 OvenMediaEngine | main.cpp:259 | JsonCpp: 1.9.3 edge_1 | [2020-09-21 13:42:14.063] I 1 OvenMediaEngine | main.cpp:260 | jemalloc: 5.2.1-0-gea6b3e973b477b8061e0076bb257dbd7f3faa756 edge_1 | [2020-09-21 13:42:14.066] I 1 OvenMediaEngine | main.cpp:158 | Trying to create a MediaRouter module edge_1 | [2020-09-21 13:42:14.066] I 1 MediaRouter | media_router.cpp:40 | MediaRouter has been started. edge_1 | [2020-09-21 13:42:14.066] I 1 OvenMediaEngine | main.cpp:161 | Trying to create a WebRTC Publisher module edge_1 | [2020-09-21 13:42:14.066] I 1 Signalling.P2P | rtc_p2p_manager.cpp:27 | P2P is disabled in the configuration edge_1 | [2020-09-21 13:42:14.067] I 1 Ice | ice_port.cpp:89 | ICE port is bound to 0.0.0.0:10000/UDP (0x7f11eb45df90) edge_1 | [2020-09-21 13:42:14.067] I 1 Ice | ice_port.cpp:89 | ICE port is bound to 0.0.0.0:10001/UDP (0x7f11eb45e150) edge_1 | [2020-09-21 13:42:14.067] I 1 Ice | ice_port.cpp:89 | ICE port is bound to 0.0.0.0:10002/UDP (0x7f11eb45e310) edge_1 | [2020-09-21 13:42:14.067] I 1 Ice | ice_port.cpp:89 | ICE port is bound to 0.0.0.0:10003/UDP (0x7f11eb45e4d0) edge_1 | [2020-09-21 13:42:14.067] I 1 Ice | ice_port.cpp:89 | ICE port is bound to 0.0.0.0:10004/UDP (0x7f11eb45e690) edge_1 | [2020-09-21 13:42:14.067] I 1 Ice | ice_port.cpp:89 | ICE port is bound to 0.0.0.0:10005/UDP (0x7f11eb45e850) edge_1 | [2020-09-21 13:42:14.067] I 1 WebRTC | webrtc_publisher.cpp:91 | WebRTC Publisher is listening on 0.0.0.0:3334... edge_1 | [2020-09-21 13:42:14.067] I 1 Publisher | publisher.cpp:18 | WebRTC Publisher has been started. edge_1 | [2020-09-21 13:42:14.067] I 1 OvenMediaEngine | main.cpp:162 | Trying to create a HLS Publisher module edge_1 | [2020-09-21 13:42:14.068] I 1 HTTPPublisher | segment_publisher.cpp:62 | HLS Publisher is listening on 0.0.0.0:8090... edge_1 | [2020-09-21 13:42:14.068] I 1 Publisher | publisher.cpp:18 | HLS Publisher has been started. edge_1 | [2020-09-21 13:42:14.068] I 1 OvenMediaEngine | main.cpp:163 | Trying to create a MPEG-DASH Publisher module edge_1 | [2020-09-21 13:42:14.068] I 1 HTTPPublisher | segment_publisher.cpp:62 | DASH Publisher is listening on 0.0.0.0:8090... edge_1 | [2020-09-21 13:42:14.068] I 1 Publisher | publisher.cpp:18 | DASH Publisher has been started. edge_1 | [2020-09-21 13:42:14.068] I 1 OvenMediaEngine | main.cpp:164 | Trying to create a Low-Latency MPEG-DASH Publisher module edge_1 | [2020-09-21 13:42:14.068] I 1 HTTPPublisher | segment_publisher.cpp:62 | LLDASH Publisher is listening on 0.0.0.0:8090... edge_1 | [2020-09-21 13:42:14.068] I 1 Publisher | publisher.cpp:18 | LLDASH Publisher has been started. edge_1 | [2020-09-21 13:42:14.068] I 1 OvenMediaEngine | main.cpp:165 | Trying to create a OVT Publisher module edge_1 | [2020-09-21 13:42:14.068] I 1 Publisher | publisher.cpp:18 | OVTPublisher has been started. edge_1 | [2020-09-21 13:42:14.068] I 1 OvenMediaEngine | main.cpp:168 | Trying to create a Transcoder module edge_1 | [2020-09-21 13:42:14.068] I 1 Transcoder | transcoder.cpp:38 | Transcoder has been started. edge_1 | [2020-09-21 13:42:14.068] I 1 OvenMediaEngine | main.cpp:171 | Trying to create a MPEG-TS Provider module edge_1 | [2020-09-21 13:42:14.068] I 1 Provider | provider.cpp:35 | MpegtsProvider has been started. edge_1 | [2020-09-21 13:42:14.068] I 1 OvenMediaEngine | main.cpp:172 | Trying to create a RTMP Provider module edge_1 | [2020-09-21 13:42:14.069] I 1 Provider | provider.cpp:35 | RtmpProvider has been started. edge_1 | [2020-09-21 13:42:14.069] I 1 OvenMediaEngine | main.cpp:173 | Trying to create a OVT Provider module edge_1 | [2020-09-21 13:42:14.069] I 1 Provider | provider.cpp:35 | OvtProvider has been started. edge_1 | [2020-09-21 13:42:14.069] I 1 OvenMediaEngine | main.cpp:174 | Trying to create a RTSPC Provider module edge_1 | [2020-09-21 13:42:14.069] I 1 Provider | provider.cpp:35 | RtspcProvider has been started. edge_1 | [2020-09-21 13:42:14.069] I 1 OvenMediaEngine | main.cpp:177 | All modules are initialized successfully edge_1 | [2020-09-21 13:42:14.069] I 1 Monitor | monitoring.cpp:43 | Create HostMetrics(default) for monitoring edge_1 | [2020-09-21 13:42:21.708] I 15 Signalling | rtc_signalling_server.cpp:99 | New client is connected: <ClientSocket: 0x7f11c4401010, #22, state: 4, TCP, 172.16.15.50:51639> edge_1 | [2020-09-21 13:42:21.717] I 15 Orchestrator | orchestrator.cpp:862 | Trying to create an application: [#default#deep] edge_1 | [2020-09-21 13:42:21.717] I 15 Monitor | host_metrics.cpp:52 | Create ApplicationMetrics(#default#deep) for monitoring edge_1 | [2020-09-21 13:42:21.717] I 15 MediaRouter.App | media_router_application.cpp:32 | Created media route application. application id(0), (#default#deep) edge_1 | [2020-09-21 13:42:21.717] I 15 MediaRouter | media_router.cpp:70 | MediaRouter has created [#default#deep] application edge_1 | [2020-09-21 13:42:21.719] I 15 Publisher | application.cpp:55 | WebRTC Publisher Application has created [#default#deep] application edge_1 | [2020-09-21 13:42:21.719] I 15 Publisher | application.cpp:55 | HLS Publisher Application has created [#default#deep] application edge_1 | [2020-09-21 13:42:21.719] I 15 Publisher | application.cpp:55 | DASH Publisher Application has created [#default#deep] application edge_1 | [2020-09-21 13:42:21.720] I 15 Publisher | application.cpp:55 | LLDASH Publisher Application has created [#default#deep] application edge_1 | [2020-09-21 13:42:21.720] I 15 Publisher | application.cpp:55 | OVTPublisher Application has created [#default#deep] application edge_1 | [2020-09-21 13:42:21.720] I 15 Transcoder | transcoder.cpp:73 | Transcoder has created [dynamic][#default#deep] application edge_1 | [2020-09-21 13:42:21.720] I 15 Provider | application.cpp:46 | MpegtsProvider has created [#default#deep] application edge_1 | [2020-09-21 13:42:21.721] I 15 Provider | application.cpp:46 | RtmpProvider has created [#default#deep] application edge_1 | [2020-09-21 13:42:21.721] I 15 Provider | application.cpp:46 | OvtProvider has created [#default#deep] application edge_1 | [2020-09-21 13:42:21.721] I 15 Provider | application.cpp:46 | RtspcProvider has created [#default#deep] application edge_1 | [2020-09-21 13:42:21.721] I 15 Orchestrator | orchestrator.cpp:1280 | Trying to pull stream [#default#deep/simon] from provider using origin map: PullProvider edge_1 | [2020-09-21 13:42:21.741] I 15 Provider | stream.cpp:49 | #default#deep/simon(100) has been started stream edge_1 | [2020-09-21 13:42:21.741] I 15 Provider | application.cpp:116 | #default#deep application has created 0 stream motor edge_1 | [2020-09-21 13:42:21.741] I 15 MediaRouter.App | media_router_application.cpp:205 | Trying to create a stream: [#default#deep/simon(100)] edge_1 | [2020-09-21 13:42:21.741] I 15 Monitor | stream.cpp:254 | edge_1 | [Stream Info] edge_1 | id(100), name(simon), SourceType(Ovt), Created Time (Mon Sep 21 13:42:21 2020) edge_1 | edge_1 | Video Track #0: Bypass(false) Bitrate(0b) codec(1, avc) resolution(1920x1080) framerate(25.00fps) timebase(1/90000) edge_1 | [2020-09-21 13:42:21.741] I 15 Monitor | application_metrics.cpp:56 | Create StreamMetrics(simon) for monitoring edge_1 | [2020-09-21 13:42:21.742] I 15 Publisher | stream.cpp:211 | WebRTC Publisher Application application has started [simon(100)] stream edge_1 | [2020-09-21 13:42:21.742] I 15 Publisher | stream.cpp:211 | HLS Publisher Application application has started [simon(100)] stream edge_1 | [2020-09-21 13:42:21.742] I 15 Publisher | stream.cpp:211 | DASH Publisher Application application has started [simon(100)] stream edge_1 | [2020-09-21 13:42:21.742] I 15 Publisher | stream.cpp:211 | LLDASH Publisher Application application has started [simon(100)] stream edge_1 | [2020-09-21 13:42:21.742] I 15 Publisher | stream.cpp:211 | OVTPublisher Application application has started [simon(100)] stream edge_1 | [2020-09-21 13:42:21.745] I 15 Provider | stream.cpp:36 | OvtProvider Application has started to play [simon(100)] stream edge_1 | [2020-09-21 13:42:21.745] I 15 Provider | stream_motor.cpp:130 | #default#deep/simon(100) stream has added to 0 StreamMotor edge_1 | [2020-09-21 13:42:21.745] I 15 Orchestrator | orchestrator.cpp:1302 | The stream was pulled successfully: [#default#deep/simon] (100) edge_1 | [2020-09-21 13:42:21.837] I 15 Monitor | stream_metrics.cpp:119 | A new session has started playing #default#deep/simon on the WebRTC publihser. WebRTC(1)/Stream total(1)/App total(1) edge_1 | [2020-09-21 13:42:21.845] W 15 Socket | socket_address.cpp:277 | An error occurred while resolve DNS for host [2bcf3f29-3140-4fcb-9267-2e3267f7a629.local] edge_1 | [2020-09-21 13:42:21.845] W 15 Socket | socket_address.cpp:84 | An error occurred: 2bcf3f29-3140-4fcb-9267-2e3267f7a629.local:52897 edge_1 | [2020-09-21 13:42:26.940] I 88 DASH | dash_packetizer.cpp:956 | [0x7f11c368a310] LLDASH segment is ready to stream [#default#deep/simon], segment duration: 5.000000s, count: 1 edge_1 | [2020-09-21 13:42:26.942] W 85 ov.Queue | queue.h:179 | [0x7f11c3685858] WebRTC Publisher Application/#default#deep/simon StreamWorker Queue size has exceeded the threshold: queue: 100, threshold: 100 edge_1 | [2020-09-21 13:42:27.941] W 85 ov.Queue | queue.h:179 | [0x7f11c3685ad8] WebRTC Publisher Application/#default#deep/simon StreamWorker Queue size has exceeded the threshold: queue: 100, threshold: 100 edge_1 | [2020-09-21 13:42:27.941] W 85 ov.Queue | queue.h:179 | [0x7f11c3685d58] WebRTC Publisher Application/#default#deep/simon StreamWorker Queue size has exceeded the threshold: queue: 100, threshold: 100 edge_1 | [2020-09-21 13:42:28.717] I 19 Signalling | rtc_signalling_server.cpp:99 | New client is connected: <ClientSocket: 0x7f11c4401290, #26, state: 4, TCP, 172.16.15.50:51649> edge_1 | [2020-09-21 13:42:28.726] I 19 Orchestrator | orchestrator.cpp:862 | Trying to create an application: [#default#loeve] edge_1 | [2020-09-21 13:42:28.726] I 19 Monitor | host_metrics.cpp:52 | Create ApplicationMetrics(#default#loeve) for monitoring edge_1 | [2020-09-21 13:42:28.727] I 19 MediaRouter.App | media_router_application.cpp:32 | Created media route application. application id(1), (#default#loeve) edge_1 | [2020-09-21 13:42:28.727] I 19 MediaRouter | media_router.cpp:70 | MediaRouter has created [#default#loeve] application edge_1 | [2020-09-21 13:42:28.728] I 19 Publisher | application.cpp:55 | WebRTC Publisher Application has created [#default#loeve] application edge_1 | [2020-09-21 13:42:28.728] I 19 Publisher | application.cpp:55 | HLS Publisher Application has created [#default#loeve] application edge_1 | [2020-09-21 13:42:28.728] I 19 Publisher | application.cpp:55 | DASH Publisher Application has created [#default#loeve] application edge_1 | [2020-09-21 13:42:28.729] I 19 Publisher | application.cpp:55 | LLDASH Publisher Application has created [#default#loeve] application edge_1 | [2020-09-21 13:42:28.729] I 19 Publisher | application.cpp:55 | OVTPublisher Application has created [#default#loeve] application edge_1 | [2020-09-21 13:42:28.729] I 19 Transcoder | transcoder.cpp:73 | Transcoder has created [dynamic][#default#loeve] application edge_1 | [2020-09-21 13:42:28.729] I 19 Provider | application.cpp:46 | MpegtsProvider has created [#default#loeve] application edge_1 | [2020-09-21 13:42:28.729] I 19 Provider | application.cpp:46 | RtmpProvider has created [#default#loeve] application edge_1 | [2020-09-21 13:42:28.730] I 19 Provider | application.cpp:46 | OvtProvider has created [#default#loeve] application edge_1 | [2020-09-21 13:42:28.730] I 19 Provider | application.cpp:46 | RtspcProvider has created [#default#loeve] application edge_1 | [2020-09-21 13:42:28.730] I 19 Orchestrator | orchestrator.cpp:1280 | Trying to pull stream [#default#loeve/ps] from provider using origin map: PullProvider edge_1 | [2020-09-21 13:42:30.947] I 19 Provider | stream.cpp:49 | #default#loeve/ps(100) has been started stream edge_1 | [2020-09-21 13:42:30.948] I 19 Provider | application.cpp:116 | #default#loeve application has created 0 stream motor edge_1 | [2020-09-21 13:42:30.948] I 19 MediaRouter.App | media_router_application.cpp:205 | Trying to create a stream: [#default#loeve/ps(100)] edge_1 | [2020-09-21 13:42:30.948] I 19 Monitor | stream.cpp:254 | edge_1 | [Stream Info] edge_1 | id(100), name(ps), SourceType(Ovt), Created Time (Mon Sep 21 13:42:28 2020) edge_1 | edge_1 | Video Track #0: Bypass(false) Bitrate(0b) codec(1, avc) resolution(1024x768) framerate(25.00fps) timebase(1/90000) edge_1 | [2020-09-21 13:42:30.948] I 19 Monitor | application_metrics.cpp:56 | Create StreamMetrics(ps) for monitoring edge_1 | [2020-09-21 13:42:30.948] I 19 Publisher | stream.cpp:211 | WebRTC Publisher Application application has started [ps(100)] stream edge_1 | [2020-09-21 13:42:30.948] I 19 Publisher | stream.cpp:211 | HLS Publisher Application application has started [ps(100)] stream edge_1 | [2020-09-21 13:42:30.948] I 19 Publisher | stream.cpp:211 | DASH Publisher Application application has started [ps(100)] stream edge_1 | [2020-09-21 13:42:30.948] I 19 Publisher | stream.cpp:211 | LLDASH Publisher Application application has started [ps(100)] stream edge_1 | [2020-09-21 13:42:30.948] I 19 Publisher | stream.cpp:211 | OVTPublisher Application application has started [ps(100)] stream edge_1 | [2020-09-21 13:42:30.992] I 19 Provider | stream.cpp:36 | OvtProvider Application has started to play [ps(100)] stream edge_1 | [2020-09-21 13:42:30.992] I 19 Provider | stream_motor.cpp:130 | #default#loeve/ps(100) stream has added to 0 StreamMotor edge_1 | [2020-09-21 13:42:30.992] C 19 Orchestrator | orchestrator.cpp:1312 | Out of sync: origin: 0, domain: 1 (This is a bug) edge_1 | [2020-09-21 13:42:30.993] E 19 Orchestrator | orchestrator.cpp:1319 | Could not pull stream [#default#loeve/ps] from provider: PullProvider edge_1 | [2020-09-21 13:42:30.993] I 19 Orchestrator | orchestrator.cpp:972 | Trying to delete an application: [#default#loeve] (1) edge_1 | [2020-09-21 13:42:30.993] I 19 Monitor | host_metrics.cpp:64 | Delete ApplicationMetrics(#default#loeve) for monitoring edge_1 | [2020-09-21 13:42:30.993] I 19 MediaRouter.App | media_router_application.cpp:164 | Unregistered observer. 0x7f1163047010 app(#default#loeve) type(3) edge_1 | [2020-09-21 13:42:30.993] I 19 MediaRouter.App | media_router_application.cpp:122 | Unregistered connector. 0x7f116304a108 app(#default#loeve) type(0) edge_1 | [2020-09-21 13:42:31.730] I 19 Provider | application.cpp:61 | RtspcProvider has deleted [#default#loeve] application edge_1 | [2020-09-21 13:42:31.730] I 19 MediaRouter.App | media_router_application.cpp:122 | Unregistered connector. 0x7f1163049708 app(#default#loeve) type(2) edge_1 | [2020-09-21 13:42:31.742] I 19 Provider | stream.cpp:55 | #default#loeve/ps(100) has been stopped playing stream edge_1 | [2020-09-21 13:42:31.742] I 19 MediaRouter.App | media_router_application.cpp:290 | Trying to delete a stream: [#default#loeve/ps(100)] edge_1 | [2020-09-21 13:42:31.743] I 19 Publisher | stream.cpp:241 | [ps(100)] WebRTC Publisher Application stream has been stopped edge_1 | [2020-09-21 13:42:31.743] I 19 Publisher | stream.cpp:241 | [ps(100)] HLS Publisher Application stream has been stopped edge_1 | [2020-09-21 13:42:31.743] I 19 Publisher | stream.cpp:241 | [ps(100)] DASH Publisher Application stream has been stopped edge_1 | [2020-09-21 13:42:31.743] I 19 Publisher | stream.cpp:241 | [ps(100)] LLDASH Publisher Application stream has been stopped edge_1 | [2020-09-21 13:42:31.744] I 19 Publisher | stream.cpp:241 | [ps(100)] OVTPublisher Application stream has been stopped edge_1 | [2020-09-21 13:42:31.744] I 19 Provider | application.cpp:61 | OvtProvider has deleted [#default#loeve] application edge_1 | [2020-09-21 13:42:31.744] I 19 MediaRouter.App | media_router_application.cpp:122 | Unregistered connector. 0x7f1163048d08 app(#default#loeve) type(0) edge_1 | [2020-09-21 13:42:31.744] I 19 Provider | application.cpp:61 | RtmpProvider has deleted [#default#loeve] application edge_1 | [2020-09-21 13:42:31.744] I 19 MediaRouter.App | media_router_application.cpp:122 | Unregistered connector. 0x7f1163048308 app(#default#loeve) type(0) edge_1 | [2020-09-21 13:42:31.744] I 19 Provider | application.cpp:61 | MpegtsProvider has deleted [#default#loeve] application edge_1 | [2020-09-21 13:42:31.746] I 19 MediaRouter.App | media_router_application.cpp:164 | Unregistered observer. 0x7f1163027828 app(#default#loeve) type(1) edge_1 | [2020-09-21 13:42:31.746] I 19 MediaRouter.App | media_router_application.cpp:122 | Unregistered connector. 0x7f1163027810 app(#default#loeve) type(1) edge_1 | [2020-09-21 13:42:31.746] I 19 Transcoder | transcoder.cpp:106 | Transcoder has deleted [dynamic][#default#loeve] application edge_1 | [2020-09-21 13:42:31.746] I 19 Publisher | application.cpp:77 | OVTPublisher Application has deleted [#default#loeve] application edge_1 | [2020-09-21 13:42:31.746] I 19 MediaRouter.App | media_router_application.cpp:164 | Unregistered observer. 0x7f116305c508 app(#default#loeve) type(0) edge_1 | [2020-09-21 13:42:31.747] I 19 Publisher | application.cpp:77 | LLDASH Publisher Application has deleted [#default#loeve] application edge_1 | [2020-09-21 13:42:31.747] I 19 MediaRouter.App | media_router_application.cpp:164 | Unregistered observer. 0x7f116306d908 app(#default#loeve) type(0) edge_1 | [2020-09-21 13:42:31.748] I 19 Publisher | application.cpp:77 | DASH Publisher Application has deleted [#default#loeve] application edge_1 | [2020-09-21 13:42:31.748] I 19 MediaRouter.App | media_router_application.cpp:164 | Unregistered observer. 0x7f116305b708 app(#default#loeve) type(0) edge_1 | [2020-09-21 13:42:31.748] I 19 Publisher | application.cpp:77 | HLS Publisher Application has deleted [#default#loeve] application edge_1 | [2020-09-21 13:42:31.748] I 19 MediaRouter.App | media_router_application.cpp:164 | Unregistered observer. 0x7f116305a908 app(#default#loeve) type(0) edge_1 | [2020-09-21 13:42:31.748] I 19 Publisher | application.cpp:77 | WebRTC Publisher Application has deleted [#default#loeve] application edge_1 | [2020-09-21 13:42:31.748] I 19 MediaRouter.App | media_router_application.cpp:164 | Unregistered observer. 0x7f11c442e908 app(#default#loeve) type(0) edge_1 | [2020-09-21 13:42:31.749] I 19 MediaRouter | media_router.cpp:88 | MediaRouter has deleted [#default#loeve] application edge_1 | [2020-09-21 13:42:31.749] I 19 MediaRouter.App | media_router_application.cpp:40 | Destroyed media router application. application id(1), (#default#loeve) edge_1 | [2020-09-21 13:42:31.749] E 19 Signalling | rtc_signalling_server.cpp:190 | Cannot find stream [#default#loeve/ps] edge_1 | [2020-09-21 13:42:31.749] I 19 Signalling | rtc_signalling_server.cpp:237 | Client is disconnected: <WebSocketClient: 0x7f1163006250, <ClientSocket: 0x7f11c4401290, #26, state: 4, TCP, 172.16.15.50:51649>> (#default#loeve / ps, ufrag: local: (N/A), remote: (N/A)) edge_1 | [2020-09-21 13:42:31.938] I 87 DASH | dash_packetizer.cpp:956 | [0x7f11c368a010] DASH segment is ready to stream [#default#deep/simon], segment duration: 5.000000s, count: 3 edge_1 | [2020-09-21 13:42:32.946] I 86 HLS | hls_packetizer.cpp:292 | HLS segment is ready for stream [#default#deep/simon], segment duration: 4.000000s, count: 3 edge_1 | [2020-09-21 13:42:34.254] W 85 ov.Queue | queue.h:179 | [0x7f11c3685858] WebRTC Publisher Application/#default#deep/simon StreamWorker Queue size has exceeded the threshold: queue: 100, threshold: 100 edge_1 | [2020-09-21 13:42:35.229] I 15 Monitor | stream_metrics.cpp:144 | A session has been stopped playing #default#deep/simon on the WebRTC publihser. Concurrent Viewers[WebRTC(0)/Stream total(0)/App total(0)] edge_1 | [2020-09-21 13:42:35.229] I 15 Signalling | rtc_signalling_server.cpp:237 | Client is disconnected: <WebSocketClient: 0x7f11c3606250, <ClientSocket: 0x7f11c4401010, #22, state: 4, TCP, 172.16.15.50:51639>> (#default#deep / simon, ufrag: local: JZow5v, remote: VNxd) edge_1 | [2020-09-21 13:42:37.943] W 85 ov.Queue | queue.h:179 | [0x7f11c36855d8] WebRTC Publisher Application/#default#deep/simon StreamWorker Queue size has exceeded the threshold: queue: 100, threshold: 100 edge_1 | [2020-09-21 13:42:46.263] W 85 ov.Queue | queue.h:179 | [0x7f11c3685858] WebRTC Publisher Application/#default#deep/simon StreamWorker Queue size has exceeded the threshold: queue: 100, threshold: 100 edge_1 | [2020-09-21 13:42:47.944] W 85 ov.Queue | queue.h:179 | [0x7f11c3685ad8] WebRTC Publisher Application/#default#deep/simon StreamWorker Queue size has exceeded the threshold: queue: 100, threshold: 100 edge_1 | [2020-09-21 13:42:48.262] W 85 ov.Queue | queue.h:179 | [0x7f11c3685d58] WebRTC Publisher Application/#default#deep/simon StreamWorker Queue size has exceeded the threshold: queue: 100, threshold: 100 edge_1 | [2020-09-21 13:42:52.259] W 85 ov.Queue | queue.h:179 | [0x7f11c36855d8] WebRTC Publisher Application/#default#deep/simon StreamWorker Queue size has exceeded the threshold: queue: 100, threshold: 100 edge_1 | [2020-09-21 13:42:53.618] W 85 ov.Queue | queue.h:179 | [0x7f11c3685ad8] WebRTC Publisher Application/#default#deep/simon StreamWorker Queue size has exceeded the threshold: queue: 100, threshold: 100 edge_1 | [2020-09-21 13:42:54.943] W 85 ov.Queue | queue.h:179 | [0x7f11c3685d58] WebRTC Publisher Application/#default#deep/simon StreamWorker Queue size has exceeded the threshold: queue: 100, threshold: 100 edge_1 | [2020-09-21 13:43:01.944] W 85 ov.Queue | queue.h:179 | [0x7f11c3685ad8] WebRTC Publisher Application/#default#deep/simon StreamWorker Queue size has exceeded the threshold: queue: 100, threshold: 100 edge_1 | [2020-09-21 13:43:02.955] W 85 ov.Queue | queue.h:179 | [0x7f11c3685d58] WebRTC Publisher Application/#default#deep/simon StreamWorker Queue size has exceeded the threshold: queue: 100, threshold: 100 edge_1 | [2020-09-21 13:43:10.259] W 85 ov.Queue | queue.h:179 | [0x7f11c36855d8] WebRTC Publisher Application/#default#deep/simon StreamWorker Queue size has exceeded the threshold: queue: 100, threshold: 100 edge_1 | [2020-09-21 13:43:11.259] W 85 ov.Queue | queue.h:179 | [0x7f11c3685858] WebRTC Publisher Application/#default#deep/simon StreamWorker Queue size has exceeded the threshold: queue: 100, threshold: 100 edge_1 | [2020-09-21 13:43:11.259] W 85 ov.Queue | queue.h:179 | [0x7f11c3685d58] WebRTC Publisher Application/#default#deep/simon StreamWorker Queue size has exceeded the threshold: queue: 100, threshold: 100 edge_1 | [2020-09-21 13:43:12.939] W 85 ov.Queue | queue.h:179 | [0x7f11c3685ad8] WebRTC Publisher Application/#default#deep/simon StreamWorker Queue size has exceeded the threshold: queue: 100, threshold: 100 edge_1 | [2020-09-21 13:43:15.626] W 85 ov.Queue | queue.h:179 | [0x7f11c36855d8] WebRTC Publisher Application/#default#deep/simon StreamWorker Queue size has exceeded the threshold: queue: 100, threshold: 100 edge_1 | [2020-09-21 13:43:16.624] W 85 ov.Queue | queue.h:179 | [0x7f11c3685858] WebRTC Publisher Application/#default#deep/simon StreamWorker Queue size has exceeded the threshold: queue: 100, threshold: 100 edge_1 | [2020-09-21 13:43:18.943] W 85 ov.Queue | queue.h:179 | [0x7f11c3685ad8] WebRTC Publisher Application/#default#deep/simon StreamWorker Queue size has exceeded the threshold: queue: 100, threshold: 100 edge_1 | [2020-09-21 13:43:18.943] W 85 ov.Queue | queue.h:179 | [0x7f11c3685d58] WebRTC Publisher Application/#default#deep/simon StreamWorker Queue size has exceeded the threshold: queue: 100, threshold: 100 edge_1 | [2020-09-21 13:43:21.939] W 85 ov.Queue | queue.h:179 | [0x7f11c3685858] WebRTC Publisher Application/#default#deep/simon StreamWorker Queue size has exceeded the threshold: queue: 100, threshold: 100 edge_1 | [2020-09-21 13:43:24.939] W 85 ov.Queue | queue.h:179 | [0x7f11c3685ad8] WebRTC Publisher Application/#default#deep/simon StreamWorker Queue size has exceeded the threshold: queue: 100, threshold: 100 edge_1 | [2020-09-21 13:43:26.259] W 85 ov.Queue | queue.h:179 | [0x7f11c3685d58] WebRTC Publisher Application/#default#deep/simon StreamWorker Queue size has exceeded the threshold: queue: 100, threshold: 100 edge_1 | [2020-09-21 13:43:26.953] W 85 ov.Queue | queue.h:179 | [0x7f11c3685858] WebRTC Publisher Application/#default#deep/simon StreamWorker Queue size has exceeded the threshold: queue: 100, threshold: 100 edge_1 | [2020-09-21 13:43:36.623] W 85 ov.Queue | queue.h:179 | [0x7f11c3685858] WebRTC Publisher Application/#default#deep/simon StreamWorker Queue size has exceeded the threshold: queue: 100, threshold: 100 edge_1 | [2020-09-21 13:43:36.726] I 91 Provider | stream_motor.cpp:146 | #default#deep/simon(100) stream has deleted from 0 StreamMotor edge_1 | [2020-09-21 13:43:36.726] W 91 Provider | application.cpp:90 | #default#deep/simon(100) stream will be deleted becasue it hasn't been used for 60 seconds edge_1 | [2020-09-21 13:43:36.726] I 91 Provider | stream.cpp:55 | #default#deep/simon(100) has been stopped playing stream edge_1 | [2020-09-21 13:43:36.752] I 91 Provider | application.cpp:155 | #default#deep application has deleted 0 stream motor edge_1 | [2020-09-21 13:43:36.752] I 91 MediaRouter.App | media_router_application.cpp:290 | Trying to delete a stream: [#default#deep/simon(100)] edge_1 | [2020-09-21 13:43:36.752] I 91 Monitor | application_metrics.cpp:68 | Delete StreamMetrics(simon) for monitoring edge_1 | [2020-09-21 13:43:36.752] I 91 Monitor | stream_metrics.cpp:31 | edge_1 | [Stream Info] edge_1 | id(100), name(simon), SourceType(Ovt), Created Time (Mon Sep 21 13:42:21 2020) edge_1 | edge_1 | Video Track #0: Bypass(false) Bitrate(0b) codec(1, avc) resolution(1920x1080) framerate(25.00fps) timebase(1/90000) edge_1 | Elapsed time to connect to origin server : 16.490535 ms edge_1 | Elapsed time in response from origin server : 2.507940 ms edge_1 | edge_1 | edge_1 | >> Statistics edge_1 | Last update time : Mon Sep 21 13:43:36 2020, Last sent time : Mon Sep 21 13:42:35 2020 edge_1 | Bytes in : 34.37MB, Bytes out : 13.07MB, Concurrent connections : 0, Max connections : 1 (Mon Sep 21 13:42:21 2020) edge_1 | edge_1 | >>>> By publisher edge_1 | - Unknown : Bytes out(0B) Concurrent Connections (0) edge_1 | - WebRTC : Bytes out(13.07MB) Concurrent Connections (0) edge_1 | - RTMP : Bytes out(0B) Concurrent Connections (0) edge_1 | - HLS : Bytes out(0B) Concurrent Connections (0) edge_1 | - DASH : Bytes out(0B) Concurrent Connections (0) edge_1 | - LLDASH : Bytes out(0B) Concurrent Connections (0) edge_1 | - Ovt : Bytes out(0B) Concurrent Connections (0) edge_1 | edge_1 | [2020-09-21 13:43:36.753] I 91 Publisher | stream.cpp:241 | [simon(100)] WebRTC Publisher Application stream has been stopped edge_1 | [2020-09-21 13:43:36.753] I 91 Publisher | stream.cpp:241 | [simon(100)] HLS Publisher Application stream has been stopped edge_1 | [2020-09-21 13:43:36.754] I 91 Publisher | stream.cpp:241 | [simon(100)] DASH Publisher Application stream has been stopped edge_1 | [2020-09-21 13:43:36.754] I 91 Publisher | stream.cpp:241 | [simon(100)] LLDASH Publisher Application stream has been stopped edge_1 | [2020-09-21 13:43:36.756] I 91 Publisher | stream.cpp:241 | [simon(100)] OVTPublisher Application stream has been stopped ^CGracefully stopping... (press Ctrl+C again to force) Stopping ovenmediaengine_edge_1 ... done

    Server (please complete the following information):

    • OS: [e.g. iOS]
    • OvenMediaEngine Version: [e.g. v0.10.1]
    • Branch: [e.g. dev]

    Player (please complete the following information): Chrome -> demo.ovenplayer.

    Additional context Add any other context about the problem here.

    opened by deepsurvey 33
  • Load Balancer OME with nginx, maybe a OME BUG

    Load Balancer OME with nginx, maybe a OME BUG

    I am trying to use nginx as a load balancer for OME (webrtc) but ovenplayer tells me it tells me it has failed

    WebRTCLoader.js: 622 WebSocket connection to 'ws: //sub.domain.com: 8081 / conectar / endirecto / stream_1280' failed

    The question is that I already have it configured and I do not know what the problem is, or nginx does not work with OME

    nginx.conf

    http {
    .
    .
    .
    .
    
    upstream servers_webrtc {
            server origen01.domain.com:3333 max_conns=200;
           server edge01.domain.com:3333 max_conns=200;
        #i've trayed with ip too
    }
    .
    .
    .
    server {
        listen      <public ip>:8081;
        server_name sub.domain.com ;
    
        #modsecurity on;
        #modsecurity_rules_file /etc/nginx/modsec/main.conf;
    
    location /conectar/ {
                # prevents 502 bad gateway error
                proxy_buffers 8 32k;
                proxy_buffer_size 64k;
                proxy_pass http://servers_webrtc;
    
                # enables WS support
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "upgrade";
                proxy_read_timeout 999999999;
            }
    
    }
    

    my origin webrtc is ws://origen01.domain.com:3333/endirecto/stream_1280/ ws://origen01.domain.com:3333/endirecto/stream_640/ and my edge is ws://edge01.domain.com:3333/endirecto/stream_1280/ ws://edge01.domain.com:3333/endirecto/stream_640/

    i will apreciate some of help, and if nginx does not work with OME, which peasy to use Load Balancer would you recommend me with a small example .. thank you very much.

    as well with hls,

    really thanks

    help stale 
    opened by alnux 32
  • SRT input support

    SRT input support

    SRT is already being used between the origin and edge servers, but it would be interesting to have input support as well. Are SRT input support planned for v1.0? OBS Studio are planning to support SRT output as of version 25.0, and the code is already supported in the release candidates.

    So far I can see rtmp and rtsp support in the src/projects/providers/ folder of the development branch.

    Thank you so much for providing the ovenmediaengine server! I spent days looking for optimal solutions for webrtc livestreaming with sub second latencies, and ovenmediaengine is far ahead of even very expensive market leaders. You guys are a blessing, and it is a joy to see it being actively developed.

    feature 
    opened by nemzo89 31
  • Adaptive bitrate streaming for HLS, (LL-)MPEG-DASH

    Adaptive bitrate streaming for HLS, (LL-)MPEG-DASH

    In the documentation it is mentioned that OME does currently not support adaptive streaming for HLS, MPEG-DASH but that it may be updated soon. Can you give an indication where this is on your list of priorities? Is this a something that will happen this year?

    This is probably not a small feature to add, but is it something you would accept pull requests for or other collaboration on?

    feature 
    opened by marcelmeulemans 30
  • Help needed to add rtsp pull stream.

    Help needed to add rtsp pull stream.

    I am new to oven media engine and i have followed this guide to add cctv rtsp stream to oven media engine. I have added

    <VirtualHost>
    			<Name>default</Name>
    
    			<Domain>
    				<Names>
    					<Name>*</Name>
    				</Names>
    			</Domain>
    			
    			<Origins>
    				<Origin>
    					<Location>/app_name/rtsp_stream_name</Location>
    					<Pass>
    						<Scheme>rtsp</Scheme>
    						<Urls><Url>192.168.0.200:554/</Url></Urls>
    					</Pass>
    				</Origin>
    			</Origins>
    		</VirtualHost>
    

    to /var/lib/docker/volumes/ome-origin-conf/_data/Server.xml. And i have got error.

    [2022-01-19 13:52:44.825] E [OvenMediaEngine:1] OvenMediaEngine | main.cpp:264  | An error occurred while load config: [Config] Unknown item found: Server.VirtualHosts.VirtualHost.Domain in origin_conf/Server.xml
    [2022-01-19 13:52:47.576] I [OvenMediaEngine:1] Config | config_manager.cpp:273  | Trying to set logfile in directory... (/var/log/ovenmediaengine)
    [2022-01-19 13:52:47.576] I [OvenMediaEngine:1] Config | config_manager.cpp:295  | Trying to load configurations... (origin_conf/Server.xml)
    [2022-01-19 13:52:47.606] E [OvenMediaEngine:1] OvenMediaEngine | main.cpp:264  | An error occurred while load config: [Config] Unknown item found: Server.VirtualHosts.VirtualHost.Domain in origin_conf/Server.xml
    

    I have tried to change name but the same result. Please help me i am tring to stream rtsp to webrtc.

    help 
    opened by anand-010 27
  • Multiple vp8 renditions in playlist result in low fps

    Multiple vp8 renditions in playlist result in low fps

    PROBLEM

    Multiple (more than one) vp8 renditions in a playlist result in low fps. When using h264 i can have 3 renditions and everything is smooth. When using vp8 and one rendition the stream is also smooth but not as soon as i add one or more renditions.

    EXPECTATION

    I would like to have multiple vp8 renditions in a playlist and a smooth stream.

    ENVIRONMENTAL INFORMATION

    ovenmedia release 14.8

    • Encoder information

    OBS 27.2.4

    I stream with RTMP

    And here are my output settings:

    OBS settings

    obs64_nk7ZSepU82

    • Player information

    Reproduceable with OvenPlayer on html page, custom player on mobile and http://demo.ovenplayer.com

    • Operating system and version

    Ubuntu 20.04 hosted on GCP (e2-highcpu-16)

    SETUP INFORMATION AND LOGS

    Server.xml
    <?xml version="1.0" encoding="UTF-8"?>
    
    <Server version="8">
    	<Name>OvenMediaEngine</Name>
    	<!-- Host type (origin/edge) -->
    	<Type>origin</Type>
    	<!-- Specify IP address to bind (* means all IPs) -->
    	<IP>*</IP>
    	<PrivacyProtection>false</PrivacyProtection>
    
    	<!-- 
    	To get the public IP address(mapped address of stun) of the local server. 
    	This is useful when OME cannot obtain a public IP from an interface, such as AWS or docker environment. 
    	If this is successful, you can use ${PublicIP} in your settings.
    	-->
    	<StunServer>stun.l.google.com:19302</StunServer>
    
    	<Modules>
    		<!-- 
    		Currently OME only supports h2 like all browsers do. Therefore, HTTP/2 only works on TLS ports.			
    		-->
    		<HTTP2>
    			<Enable>true</Enable>
    		</HTTP2>
    
    		<LLHLS>
    			<Enable>true</Enable>
    		</LLHLS>
    
    		<!-- P2P works only in WebRTC and is experiment feature -->
    		<P2P>
    			<!-- disabled by default -->
    			<Enable>false</Enable>
    			<MaxClientPeersPerHostPeer>2</MaxClientPeersPerHostPeer>
    		</P2P>
    	</Modules>
    
    	<!-- Settings for the ports to bind -->
    	<Bind>
    		<!-- Enable this configuration if you want to use API Server -->
    		
    		<Managers>
    			<API>
    				<Port>8081</Port>
    				<!--	<TLSPort>8082</TLSPort> -->
    				<WorkerCount>1</WorkerCount>
    			</API>
    		</Managers>
    		
    
    		<Providers>
    			<!-- Pull providers -->
    			<RTSPC>
    				<WorkerCount>1</WorkerCount>
    			</RTSPC>
    			<OVT>
    				<WorkerCount>1</WorkerCount>
    			</OVT>
    			<!-- Push providers -->
    			<RTMP>
    				<Port>1935</Port>
    				<WorkerCount>1</WorkerCount>
    			</RTMP>
    			<SRT>
    				<Port>9999</Port>
    				<WorkerCount>1</WorkerCount>
    			</SRT>
    			<MPEGTS>
    				<!--
    					Listen on port 4000~4005 (<Port>4000-4004,4005/udp</Port>)
    					This is just a demonstration to show that you can configure the port in several ways
    				-->
    				<Port>4000/udp</Port>
    			</MPEGTS>
    			<WebRTC>
    				<Signalling>
    					<Port>3333</Port>
    					<TLSPort>3334</TLSPort>
    					<WorkerCount>1</WorkerCount>
    				</Signalling>
    
    				<IceCandidates>
    					<IceCandidate>*:10000-10005/udp</IceCandidate>
    					<!-- 
    						If you want to stream WebRTC over TCP, specify IP:Port for TURN server.
    						This uses the TURN protocol, which delivers the stream from the built-in TURN server to the player's TURN client over TCP. 
    						For detailed information, refer https://airensoft.gitbook.io/ovenmediaengine/streaming/webrtc-publishing#webrtc-over-tcp
    					-->
    					<TcpRelay>*:3478</TcpRelay>
    					<!-- TcpForce is an option to force the use of TCP rather than UDP in WebRTC streaming. (You can omit ?transport=tcp accordingly.) If <TcpRelay> is not set, playback may fail. -->
    					<TcpForce>true</TcpForce>
    					<TcpRelayWorkerCount>1</TcpRelayWorkerCount>
    				</IceCandidates>
    			</WebRTC>
    		</Providers>
    
    		<Publishers>
    			<OVT>
    				<Port>9000</Port>
    				<WorkerCount>1</WorkerCount>
    			</OVT>
    			<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>3333</Port>
    				<!-- If you want to use TLS, specify the TLS port -->
    				<TLSPort>3334</TLSPort>
    				<WorkerCount>1</WorkerCount>
    			</LLHLS>
    			<WebRTC>
    				<Signalling>
    					<Port>3333</Port>
    					<TLSPort>3334</TLSPort>
    					<WorkerCount>1</WorkerCount>
    				</Signalling>
    				<IceCandidates>
    					<IceCandidate>*:10000-10005/udp</IceCandidate>
    					<!-- 
    						If you want to stream WebRTC over TCP, specify IP:Port for TURN server.
    						This uses the TURN protocol, which delivers the stream from the built-in TURN server to the player's TURN client over TCP. 
    						For detailed information, refer https://airensoft.gitbook.io/ovenmediaengine/streaming/webrtc-publishing#webrtc-over-tcp
    					-->
    					<TcpRelay>*:3478</TcpRelay>
    					<!-- TcpForce is an option to force the use of TCP rather than UDP in WebRTC streaming. (You can omit ?transport=tcp accordingly.) If <TcpRelay> is not set, playback may fail. -->
    					<TcpForce>true</TcpForce>
    					<TcpRelayWorkerCount>1</TcpRelayWorkerCount>
    				</IceCandidates>
    			</WebRTC>
    		</Publishers>
    	</Bind>
    
    	<!--
    		Enable this configuration if you want to use API Server
    		
    		<AccessToken> is a token for authentication, and when you invoke the API, you must put "Basic base64encode(<AccessToken>)" in the "Authorization" header of HTTP request.
    		For example, if you set <AccessToken> to "ome-access-token", you must set "Basic b21lLWFjY2Vzcy10b2tlbg==" in the "Authorization" header.
    	-->
    	
    	<Managers>
    		<Host>
    			<Names>
    				<Name>*</Name>
    			</Names>
    			<!--
    			<TLS>
    				<CertPath>path/to/file.crt</CertPath>
    				<KeyPath>path/to/file.key</KeyPath>
    				<ChainCertPath>path/to/file.crt</ChainCertPath>
    			</TLS>
    				-->
    		</Host>
    		<API>
    			<AccessToken>ome-access-token</AccessToken>
    			
    			<CrossDomains>
    				<Url>*</Url>
    			</CrossDomains> 
    		</API>
    	</Managers>
    	
    
    	<VirtualHosts>
    		<!-- You can use wildcard like this to include multiple XMLs -->
    		<VirtualHost include="VHost*.xml" />
    		<VirtualHost>
    			<Name>default</Name>
    			<!--Distribution is a value that can be used when grouping the same vhost distributed across multiple servers. This value is output to the events log, so you can use it to aggregate statistics. -->
    			<Distribution>ovenmediaengine.com</Distribution>
    
    			<!-- Settings for multi ip/domain and TLS -->
    			<Host>
    				<Names>
    					<!-- Host names
    						<Name>stream1.airensoft.com</Name>
    						<Name>stream2.airensoft.com</Name>
    						<Name>*.sub.airensoft.com</Name>
    						<Name>192.168.0.1</Name>
    					-->
    					<Name>*</Name>
    				</Names>
    				<!--
    				<TLS>
    					<CertPath>path/to/file.crt</CertPath>
    					<KeyPath>path/to/file.key</KeyPath>
    					<ChainCertPath>path/to/file.crt</ChainCertPath>
    				</TLS>
    				-->
    			</Host>
    
    			<!-- 	
    			Refer https://airensoft.gitbook.io/ovenmediaengine/signedpolicy
    			<SignedPolicy>
    				<PolicyQueryKeyName>policy</PolicyQueryKeyName>
    				<SignatureQueryKeyName>signature</SignatureQueryKeyName>
    				<SecretKey>aKq#1kj</SecretKey>
    
    				<Enables>
    					<Providers>rtmp,webrtc,srt</Providers>
    					<Publishers>webrtc,hls,llhls,dash,lldash</Publishers>
    				</Enables>
    			</SignedPolicy>
    			-->
    
    			<!--
    			<AdmissionWebhooks>
    				<ControlServerUrl></ControlServerUrl>
    				<SecretKey></SecretKey>
    				<Timeout>3000</Timeout>
    				<Enables>
    					<Providers>rtmp,webrtc,srt</Providers>
    					<Publishers>webrtc,hls,llhls,dash,lldash</Publishers>
    				</Enables>
    			</AdmissionWebhooks>
    			-->
    
    			<!-- <Origins>
    				<Properties>
    					<NoInputFailoverTimeout>3000</NoInputFailoverTimeout>
    					<UnusedStreamDeletionTimeout>60000</UnusedStreamDeletionTimeout>
    				</Properties>
    				<Origin>
    					<Location>/app/stream</Location>
    					<Pass>
    						<Scheme>ovt</Scheme>
    						<Urls><Url>origin.com:9000/app/stream_720p</Url></Urls>
    					</Pass>
    					<ForwardQueryParams>false</ForwardQueryParams>
    				</Origin>
    				<Origin>
    					<Location>/app/</Location>
    					<Pass>
    						<Scheme>ovt</Scheme>
    						<Urls><Url>origin.com:9000/app/</Url></Urls>
    					</Pass>
    				</Origin>
    				<Origin>
    					<Location>/edge/</Location>
    					<Pass>
    						<Scheme>ovt</Scheme>
    						<Urls><Url>origin.com:9000/app/</Url></Urls>
    					</Pass>
    				</Origin>
    			</Origins> -->
    			
    			<!-- Settings for applications -->
    			<Applications>
    				<Application>
    					<Name>vipac</Name>
    					<!-- Application type (live/vod) -->
    					<Type>live</Type>
    					<OutputProfiles>
    						<!-- Enable this configuration if you want to hardware acceleration using GPU -->
    						<HardwareAcceleration>false</HardwareAcceleration>
    						<OutputProfile>
    							<Name>bypass_stream</Name>
    							<OutputStreamName>${OriginStreamName}</OutputStreamName>
    
    							<Playlist>
    								<Name>for Webrtc</Name>
    								<FileName>default</FileName>
    								<Options>
    									<WebRtcAutoAbr>true</WebRtcAutoAbr> 
    								</Options>
    								<Rendition>
    									<Name>720p</Name>
    									<Video>720p</Video>
    									<Audio>opus</Audio>
    								</Rendition>
    							        <Rendition>
    									<Name>1080p</Name>
    									<Video>1080p</Video>
    									<Audio>opus</Audio>
    								</Rendition>
    							</Playlist>
    
    							<Encodes>
    								<Video>
    									<Name>720p</Name>
    									<Codec>vp8</Codec>
    									<Width>1280</Width>
    									<Height>720</Height>
    									<Bitrate>2024000</Bitrate>
    									<Framerate>60</Framerate>
    								</Video>
    								<Video>
    									<Name>1080p</Name>
    									<Codec>vp8</Codec>
    									<Width>1920</Width>
    									<Height>1080</Height>
    									<Bitrate>5024000</Bitrate>
    									<Framerate>60</Framerate>
    								</Video>
    								<Audio>
    									<Name>opus</Name>
    									<Codec>opus</Codec>
    									<Bitrate>128000</Bitrate>
    									<Samplerate>48000</Samplerate>
    									<Channel>2</Channel>
    								</Audio>
    							</Encodes>
    						</OutputProfile>
    					</OutputProfiles>
    					<Providers>
    						<OVT />
    						<WebRTC />
    						<RTMP />
    						<SRT />
    						<MPEGTS>
    							<StreamMap>
    								<!--
    									Set the stream name of the client connected to the port to "stream_${Port}"
    									For example, if a client connets to port 4000, OME creates a "stream_4000" stream
    									<Stream>
    										<Name>stream_${Port}</Name>
    										<Port>4000,4001-4004</Port>
    									</Stream>
    									<Stream>
    										<Name>stream_4005</Name>
    										<Port>4005</Port>
    									</Stream>
    								-->
    								<Stream>
    									<Name>stream_${Port}</Name>
    									<Port>4000</Port>
    								</Stream>
    							</StreamMap>
    						</MPEGTS>
    						<RTSPPull />
    						<WebRTC>
    							<Timeout>30000</Timeout>
    						</WebRTC>
    					</Providers>
    					<Publishers>
    						<AppWorkerCount>1</AppWorkerCount>
    						<StreamWorkerCount>8</StreamWorkerCount>
    						<OVT />
    						<WebRTC>
    							<Timeout>30000</Timeout>
    							<Rtx>false</Rtx>
    							<Ulpfec>false</Ulpfec>
    							<JitterBuffer>false</JitterBuffer>
    						</WebRTC>
    						<LLHLS>
    							<ChunkDuration>0.2</ChunkDuration>
    							<SegmentDuration>6</SegmentDuration>
    							<SegmentCount>10</SegmentCount>
    							<CrossDomains>
    								<Url>*</Url>
    							</CrossDomains>
    						</LLHLS>
    					</Publishers>
    				</Application>
    			</Applications>
    		</VirtualHost>
    	</VirtualHosts>
    </Server>
    
    ovenmediaengine.log
    [2022-08-13 10:04:45.085] I [OvenMediaEngine:689] Config | config_manager.cpp:239  | Trying to set logfile in directory... (/var/log/ovenmediaengine)
    [2022-08-13 10:04:45.088] I [OvenMediaEngine:689] Config | config_manager.cpp:261  | Trying to load configurations... (/usr/share/ovenmediaengine/conf/Server.xml)
    [2022-08-13 10:04:45.120] I [OvenMediaEngine:689] OvenMediaEngine | banner.cpp:23   | OvenMediaEngine v0.14.8 () is started on [vipac-ome-origin] (Linux x86_64 - 5.15.0-1016-gcp, #21~20.04.1-Ubuntu SMP Fri Aug 5 12:53:07 UTC 2022)
    [2022-08-13 10:04:45.120] I [OvenMediaEngine:689] OvenMediaEngine | banner.cpp:27   | With modules:
    [2022-08-13 10:04:45.120] I [OvenMediaEngine:689] OvenMediaEngine | banner.cpp:28   |   FFmpeg 5.0.1
    [2022-08-13 10:04:45.124] I [OvenMediaEngine:689] OvenMediaEngine | banner.cpp:29   |     Configuration: --prefix=/opt/ovenmediaengine --extra-cflags='-I/opt/ovenmediaengine/include -g ' --extra-ldflags='-L/opt/ovenmediaengine/lib -Wl,-rpath,/opt/ovenmediaengine/lib' --extra-libs=-ldl --enable-shared --disable-static --disable-debug --disable-doc --disable-programs --disable-avdevice --disable-dct --disable-dwt --disable-lsp --disable-lzo --disable-rdft --disable-faan --disable-pixelutils --enable-zlib --enable-libopus --enable-libvpx --enable-libfdk_aac --enable-libopenh264 --enable-openssl --disable-nvdec --disable-nvdec --disable-vaapi --disable-vdpau --disable-cuda-llvm --disable-cuvid --disable-ffnvcodec --disable-everything --disable-fast-unaligned --enable-encoder='libvpx_vp8,libopus,libfdk_aac,libopenh264,mjpeg,png' --enable-decoder='aac,aac_latm,aac_fixed,h264,hevc,opus,vp8' --enable-parser='aac,aac_latm,aac_fixed,h264,hevc,opus,vp8' --enable-network --enable-protocol=tcp --enable-protocol=udp --enable-protocol='rtp,file,rtmp,tls,rtmps' --enable-demuxer='rtsp,flv,live_flv,mp4' --enable-muxer='mp4,webm,mpegts,flv,mpjpeg' --enable-filter='asetnsamples,aresample,aformat,channelmap,channelsplit,scale,transpose,fps,settb,asettb,format'
    [2022-08-13 10:04:45.128] I [OvenMediaEngine:689] OvenMediaEngine | banner.cpp:30   |     libavformat: 59.16.100
    [2022-08-13 10:04:45.128] I [OvenMediaEngine:689] OvenMediaEngine | banner.cpp:31   |     libavcodec: 59.18.100
    [2022-08-13 10:04:45.128] I [OvenMediaEngine:689] OvenMediaEngine | banner.cpp:32   |     libavutil: 57.17.100
    [2022-08-13 10:04:45.128] I [OvenMediaEngine:689] OvenMediaEngine | banner.cpp:33   |     libavfilter: 8.24.100
    [2022-08-13 10:04:45.128] I [OvenMediaEngine:689] OvenMediaEngine | banner.cpp:34   |     libswresample: 4.3.100
    [2022-08-13 10:04:45.128] I [OvenMediaEngine:689] OvenMediaEngine | banner.cpp:35   |     libswscale: 6.4.100
    [2022-08-13 10:04:45.128] I [OvenMediaEngine:689] OvenMediaEngine | banner.cpp:36   |   SRT: 1.4.4
    [2022-08-13 10:04:45.128] I [OvenMediaEngine:689] OvenMediaEngine | banner.cpp:37   |   SRTP: libsrtp2 2.4.2
    [2022-08-13 10:04:45.128] I [OvenMediaEngine:689] OvenMediaEngine | banner.cpp:38   |   OpenSSL: OpenSSL 3.0.2 15 Mar 2022
    [2022-08-13 10:04:45.128] I [OvenMediaEngine:689] OvenMediaEngine | banner.cpp:39   |     Configuration: compiler: gcc -fPIC -pthread -m64 -Wa,--noexecstack -Wall -O3 -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_BUILDING_OPENSSL -DNDEBUG
    [2022-08-13 10:04:45.128] I [OvenMediaEngine:689] OvenMediaEngine | banner.cpp:40   |   JsonCpp: 1.9.3
    [2022-08-13 10:04:45.128] I [OvenMediaEngine:689] OvenMediaEngine | banner.cpp:41   |   jemalloc: 5.2.1-0-gea6b3e973b477b8061e0076bb257dbd7f3faa756
    [2022-08-13 10:04:45.128] I [OvenMediaEngine:689] OvenMediaEngine | main.cpp:72   | Server ID : 2ea7a789-59b8-4060-8939-7d1028e5b9c0
    [2022-08-13 10:04:45.157] I [OvenMediaEngine:689] OvenMediaEngine | main.cpp:81   | Resolved public IP address (34.79.146.48) from stun server (stun.l.google.com:19302)
    [2022-08-13 10:04:45.210] I [OvenMediaEngine:689] OvenMediaEngine | main.cpp:111  | Trying to create MediaRouter...
    [2022-08-13 10:04:45.214] I [OvenMediaEngine:689] MediaRouter | mediarouter.cpp:40   | Mediarouter has been started.
    [2022-08-13 10:04:45.222] I [OvenMediaEngine:689] OvenMediaEngine | main.cpp:114  | Trying to create WebRTC Publisher...
    [2022-08-13 10:04:45.228] I [OvenMediaEngine:689] Signalling.P2P | rtc_p2p_manager.cpp:27   | P2P is disabled in the configuration
    [2022-08-13 10:04:45.231] I [OvenMediaEngine:689] ICE | ice_port.cpp:86   | ICE port is bound to 0.0.0.0:10000/UDP (0x557369e0c920)
    [2022-08-13 10:04:45.231] I [OvenMediaEngine:689] ICE | ice_port.cpp:86   | ICE port is bound to 0.0.0.0:10001/UDP (0x557369f2b180)
    [2022-08-13 10:04:45.231] I [OvenMediaEngine:689] ICE | ice_port.cpp:86   | ICE port is bound to 0.0.0.0:10002/UDP (0x557369f2f680)
    [2022-08-13 10:04:45.231] I [OvenMediaEngine:689] ICE | ice_port.cpp:86   | ICE port is bound to 0.0.0.0:10003/UDP (0x557369f33b40)
    [2022-08-13 10:04:45.231] I [OvenMediaEngine:689] ICE | ice_port.cpp:86   | ICE port is bound to 0.0.0.0:10004/UDP (0x557369f380a0)
    [2022-08-13 10:04:45.232] I [OvenMediaEngine:689] ICE | ice_port.cpp:86   | ICE port is bound to 0.0.0.0:10005/UDP (0x557369f3c5e0)
    [2022-08-13 10:04:45.232] I [OvenMediaEngine:689] ICE | ice_port.cpp:128  | ICE port is bound to *:3478/TCP (0x557369f421f0)
    [2022-08-13 10:04:45.232] I [OvenMediaEngine:689] ICE | ice_port_manager.cpp:94   | RelayServer is created successfully: host:3478?transport=tcp
    [2022-08-13 10:04:45.232] I [OvenMediaEngine:689] WebRTC Publisher | webrtc_publisher.cpp:156  | WebRTC Publisher is listening on *:3333, TLS: *:3334...
    [2022-08-13 10:04:45.232] I [OvenMediaEngine:689] Publisher | publisher.cpp:18   | WebRTC Publisher has been started.
    [2022-08-13 10:04:45.232] I [OvenMediaEngine:689] OvenMediaEngine | main.cpp:115  | Trying to create LLHLS Publisher...
    [2022-08-13 10:04:45.233] I [OvenMediaEngine:689] LLHLS Publisher | llhls_publisher.cpp:110  | LLHLS Publisher is listening on *:3333, TLS: *:3334
    [2022-08-13 10:04:45.233] I [OvenMediaEngine:689] Publisher | publisher.cpp:18   | LLHLS Publisher has been started.
    [2022-08-13 10:04:45.233] I [OvenMediaEngine:689] OvenMediaEngine | main.cpp:116  | Trying to create HLS Publisher...
    [2022-08-13 10:04:45.233] W [OvenMediaEngine:689] HLS | hls_publisher.cpp:38   | HLS Publisher is disabled by configuration
    [2022-08-13 10:04:45.238] I [OvenMediaEngine:689] OvenMediaEngine | main.cpp:117  | Trying to create MPEG-DASH Publisher...
    [2022-08-13 10:04:45.238] W [OvenMediaEngine:689] DASH | dash_publisher.cpp:36   | DASH Publisher is disabled by configuration
    [2022-08-13 10:04:45.238] I [OvenMediaEngine:689] OvenMediaEngine | main.cpp:118  | Trying to create Low-Latency MPEG-DASH Publisher...
    [2022-08-13 10:04:45.238] W [OvenMediaEngine:689] LLDASH | cmaf_publisher.cpp:39   | LLDASH Publisher is disabled by configuration
    [2022-08-13 10:04:45.238] I [OvenMediaEngine:689] OvenMediaEngine | main.cpp:119  | Trying to create OVT Publisher...
    [2022-08-13 10:04:45.243] I [OvenMediaEngine:689] OVT | ovt_publisher.cpp:58   | OVTPublisher is listening on *:9000/TCP
    [2022-08-13 10:04:45.243] I [OvenMediaEngine:689] Publisher | publisher.cpp:18   | OVTPublisher has been started.
    [2022-08-13 10:04:45.243] I [OvenMediaEngine:689] OvenMediaEngine | main.cpp:120  | Trying to create File Publisher...
    [2022-08-13 10:04:45.244] I [OvenMediaEngine:689] Publisher | publisher.cpp:18   | FilePublisher has been started.
    [2022-08-13 10:04:45.244] I [OvenMediaEngine:689] OvenMediaEngine | main.cpp:121  | Trying to create MpegtsPush Publisher...
    [2022-08-13 10:04:45.248] I [OvenMediaEngine:689] Publisher | publisher.cpp:18   | MPEGTSPushPublisher has been started.
    [2022-08-13 10:04:45.248] I [OvenMediaEngine:689] OvenMediaEngine | main.cpp:122  | Trying to create RtmpPush Publisher...
    [2022-08-13 10:04:45.249] I [OvenMediaEngine:689] Publisher | publisher.cpp:18   | RTMPPushPublisher has been started.
    [2022-08-13 10:04:45.249] I [OvenMediaEngine:689] OvenMediaEngine | main.cpp:123  | Trying to create Thumbnail Publisher...
    [2022-08-13 10:04:45.250] W [OvenMediaEngine:689] Thumbnail | thumbnail_publisher.cpp:45   | ThumbnailPublisher is disabled by configuration
    [2022-08-13 10:04:45.251] I [OvenMediaEngine:689] OvenMediaEngine | main.cpp:126  | Trying to create Transcoder...
    [2022-08-13 10:04:45.254] I [OvenMediaEngine:689] OvenMediaEngine | main.cpp:129  | Trying to create WebRTC Provider...
    [2022-08-13 10:04:45.255] I [OvenMediaEngine:689] Signalling.P2P | rtc_p2p_manager.cpp:27   | P2P is disabled in the configuration
    [2022-08-13 10:04:45.255] I [OvenMediaEngine:689] ICE | ice_port.cpp:86   | ICE port is bound to 0.0.0.0:10000/UDP (0x557369e0c920)
    [2022-08-13 10:04:45.255] I [OvenMediaEngine:689] ICE | ice_port.cpp:86   | ICE port is bound to 0.0.0.0:10001/UDP (0x557369f2b180)
    [2022-08-13 10:04:45.255] I [OvenMediaEngine:689] ICE | ice_port.cpp:86   | ICE port is bound to 0.0.0.0:10002/UDP (0x557369f2f680)
    [2022-08-13 10:04:45.255] I [OvenMediaEngine:689] ICE | ice_port.cpp:86   | ICE port is bound to 0.0.0.0:10003/UDP (0x557369f33b40)
    [2022-08-13 10:04:45.255] I [OvenMediaEngine:689] ICE | ice_port.cpp:86   | ICE port is bound to 0.0.0.0:10004/UDP (0x557369f380a0)
    [2022-08-13 10:04:45.255] I [OvenMediaEngine:689] ICE | ice_port.cpp:86   | ICE port is bound to 0.0.0.0:10005/UDP (0x557369f3c5e0)
    [2022-08-13 10:04:45.255] I [OvenMediaEngine:689] ICE | ice_port.cpp:128  | ICE port is bound to *:3478/TCP (0x557369f421f0)
    [2022-08-13 10:04:45.255] I [OvenMediaEngine:689] ICE | ice_port_manager.cpp:94   | RelayServer is created successfully: host:3478?transport=tcp
    [2022-08-13 10:04:45.273] I [OvenMediaEngine:689] WebRTC Provider | webrtc_provider.cpp:161  | WebRTCProvider is listening on *:3333, TLS: *:3334...
    [2022-08-13 10:04:45.273] I [OvenMediaEngine:689] Provider | provider.cpp:37   | WebRTCProvider has been started.
    [2022-08-13 10:04:45.273] I [OvenMediaEngine:689] OvenMediaEngine | main.cpp:130  | Trying to create MPEG-TS Provider...
    [2022-08-13 10:04:45.277] I [OvenMediaEngine:689] MpegtsProvider | mpegts_provider.cpp:62   | MPEGTSProvider is listening on *:4000/UDP
    [2022-08-13 10:04:45.277] I [OvenMediaEngine:689] Provider | provider.cpp:37   | MPEGTSProvider has been started.
    [2022-08-13 10:04:45.278] I [OvenMediaEngine:689] OvenMediaEngine | main.cpp:131  | Trying to create SRT Provider...
    [2022-08-13 10:04:45.282] I [OvenMediaEngine:689] SrtProvider | srt_provider.cpp:66   | SrtProvider is listening on *:9999/SRT
    [2022-08-13 10:04:45.283] I [OvenMediaEngine:689] Provider | provider.cpp:37   | SrtProvider has been started.
    [2022-08-13 10:04:45.283] I [OvenMediaEngine:689] OvenMediaEngine | main.cpp:132  | Trying to create RTMP Provider...
    [2022-08-13 10:04:45.283] I [OvenMediaEngine:689] RTMPProvider | rtmp_provider.cpp:101  | RTMPProvider is listening on *:1935/TCP
    [2022-08-13 10:04:45.283] I [OvenMediaEngine:689] Provider | provider.cpp:37   | RTMPProvider has been started.
    [2022-08-13 10:04:45.284] I [OvenMediaEngine:689] OvenMediaEngine | main.cpp:133  | Trying to create OVT Provider...
    [2022-08-13 10:04:45.284] I [OvenMediaEngine:689] Provider | provider.cpp:37   | OVTProvider has been started.
    [2022-08-13 10:04:45.284] I [OvenMediaEngine:689] OvenMediaEngine | main.cpp:134  | Trying to create RTSPC Provider...
    [2022-08-13 10:04:45.287] I [OvenMediaEngine:689] Provider | provider.cpp:37   | RTSPCProvider has been started.
    [2022-08-13 10:04:45.287] I [OvenMediaEngine:689] OvenMediaEngine | main.cpp:135  | Trying to create File Provider...
    [2022-08-13 10:04:45.287] I [OvenMediaEngine:689] Provider | provider.cpp:37   | FileProvider has been started.
    [2022-08-13 10:04:45.288] I [OvenMediaEngine:689] OvenMediaEngine | main.cpp:142  | All modules are initialized successfully
    [2022-08-13 10:04:45.288] I [OvenMediaEngine:689] Monitor | monitoring.cpp:72   | OvenMediaEngine(2ea7a789-59b8-4060-8939-7d1028e5b9c0) ServerMetric has been started for monitoring - 2022-08-13T10:04:45.288+00:00
    [2022-08-13 10:04:45.288] I [OvenMediaEngine:689] Monitor | server_metrics.cpp:55   | Create HostMetrics(default/2ea7a789-59b8-4060-8939-7d1028e5b9c0/default) for monitoring
    [2022-08-13 10:04:45.288] I [OvenMediaEngine:689] Orchestrator | orchestrator_internal.cpp:716  | Trying to create an application: [#default#vipac]
    [2022-08-13 10:04:45.288] I [OvenMediaEngine:689] Monitor | host_metrics.cpp:57   | Create ApplicationMetrics(#default#vipac/2ea7a789-59b8-4060-8939-7d1028e5b9c0/default/#default#vipac) for monitoring
    [2022-08-13 10:04:45.289] I [OvenMediaEngine:689] MediaRouter | mediarouter_application.cpp:50   | [#default#vipac(0)] Created Mediarouter application. worker(1)
    [2022-08-13 10:04:45.289] I [OvenMediaEngine:689] MediaRouter | mediarouter.cpp:83   | Created Mediarouter. app(#default#vipac)
    [2022-08-13 10:04:45.291] I [OvenMediaEngine:689] Publisher | application.cpp:161  | WebRTC Publisher Application has created [#default#vipac] application
    [2022-08-13 10:04:45.295] I [OvenMediaEngine:689] Publisher | application.cpp:161  | LLHLS Publisher Application has created [#default#vipac] application
    [2022-08-13 10:04:45.295] I [OvenMediaEngine:689] Publisher | application.cpp:161  | OVTPublisher Application has created [#default#vipac] application
    [2022-08-13 10:04:45.295] W [OvenMediaEngine:689] Publisher | publisher.cpp:69   | File publisher is disabled in #default#vipac application, so it was not created
    [2022-08-13 10:04:45.295] W [OvenMediaEngine:689] Publisher | publisher.cpp:69   | MPEGTSPush publisher is disabled in #default#vipac application, so it was not created
    [2022-08-13 10:04:45.295] W [OvenMediaEngine:689] Publisher | publisher.cpp:69   | RTMPPush publisher is disabled in #default#vipac application, so it was not created
    [2022-08-13 10:04:45.295] I [OvenMediaEngine:689] Transcoder | transcoder_application.cpp:31   | Created transcoder application. app(#default#vipac)
    [2022-08-13 10:04:45.295] I [OvenMediaEngine:689] Transcoder | transcoder.cpp:86   | Transcoder has created [config][#default#vipac] application
    [2022-08-13 10:04:45.299] I [OvenMediaEngine:689] Provider | application.cpp:45   | WebRTCProvider has created [#default#vipac] application
    [2022-08-13 10:04:45.299] I [OvenMediaEngine:689] Monitor | application_metrics.cpp:106  | MPEG-TS has reserved stream_4000 stream linked to UDP://0.0.0.0:4000
    [2022-08-13 10:04:45.299] I [OvenMediaEngine:689] Provider | application.cpp:45   | MPEGTSProvider has created [#default#vipac] application
    [2022-08-13 10:04:45.299] I [OvenMediaEngine:689] Provider | application.cpp:45   | SrtProvider has created [#default#vipac] application
    [2022-08-13 10:04:45.300] I [OvenMediaEngine:689] Provider | application.cpp:45   | RTMPProvider has created [#default#vipac] application
    [2022-08-13 10:04:45.300] I [OvenMediaEngine:689] Provider | application.cpp:45   | OVTProvider has created [#default#vipac] application
    [2022-08-13 10:04:45.300] I [OvenMediaEngine:689] Provider | application.cpp:45   | RTSPCProvider has created [#default#vipac] application
    [2022-08-13 10:04:45.301] I [OvenMediaEngine:689] APIServer | api_server.cpp:113  | API Server is listening on *:8081/TCP...
    [2022-08-13 10:06:56.912] I [SPRTMP-T1935:756] Provider | stream.cpp:48   | Unknown/(4) has been started stream
    [2022-08-13 10:06:56.912] I [SPRTMP-T1935:756] RTMPProvider | rtmp_provider.cpp:152  | A RTMP client has connected from <ClientSocket: 0x7fa9d8001130, #4, Connected, TCP, Nonblocking, 78.55.215.11:53622>
    [2022-08-13 10:06:57.278] I [SPRTMP-T1935:756] MediaRouter | mediarouter_application.cpp:245  | [#default#vipac/stream(4)] Trying to create a stream 
    [Stream Info]
    id(4), msid(0), output(stream), SourceType(Rtmp), RepresentationType(Source), Created Time (Sat Aug 13 10:06:56 2022) UUID(2ea7a789-59b8-4060-8939-7d1028e5b9c0/default/#default#vipac/stream/i)
    
    	Video Track #0: Name() Bypass(false) Bitrate(5.00Mb) codec(1, H264) resolution(1920x1080) framerate(60.00fps) KeyInterval(0) BFrames(0) timebase(1/1000)
    	Audio Track #1: Name() Bypass(false) Bitrate(128.00Kb) codec(6, AAC) samplerate(48.0K) format(s16, 16) channel(stereo, 2) timebase(1/1000)
    [2022-08-13 10:06:57.278] I [SPRTMP-T1935:756] MediaRouter | mediarouter_stream.cpp:54   | [#default#vipac/stream(4)] Trying to create media route stream
    [2022-08-13 10:06:57.278] I [SPRTMP-T1935:756] Monitor | application_metrics.cpp:57   | Create StreamMetrics(stream/2ea7a789-59b8-4060-8939-7d1028e5b9c0/default/#default#vipac/stream/i) for monitoring
    [2022-08-13 10:06:57.280] I [SPRTMP-T1935:756] Transcoder | transcoder_stream.cpp:577  | [#default#vipac/stream(4)] Output stream has been created. [#default#vipac/stream(3223044851)]
    [2022-08-13 10:06:57.292] I [SPRTMP-T1935:756] MediaRouter | mediarouter_application.cpp:245  | [#default#vipac/stream(3223044851)] Trying to create a stream 
    [Stream Info]
    id(3223044851), msid(0), output(stream), SourceType(Transcoder), RepresentationType(Source), Created Time (Sat Aug 13 10:06:57 2022) UUID(2ea7a789-59b8-4060-8939-7d1028e5b9c0/default/#default#vipac/stream/o)
    	>> Origin Stream Info
    	id(4), output(stream), SourceType(Rtmp), Created Time (Sat Aug 13 10:06:56 2022)
    
    	Video Track #0: Name(720p) Bypass(false) Bitrate(2.02Mb) codec(3, VP8) resolution(1280x720) framerate(60.00fps) KeyInterval(0) BFrames(0) timebase(1/90000)
    	Video Track #1: Name(1080p) Bypass(false) Bitrate(5.02Mb) codec(3, VP8) resolution(1920x1080) framerate(60.00fps) KeyInterval(0) BFrames(0) timebase(1/90000)
    	Audio Track #2: Name(opus) Bypass(false) Bitrate(128.00Kb) codec(8, OPUS) samplerate(48.0K) format(s16, 16) channel(stereo, 2) timebase(1/48000)
    [2022-08-13 10:06:57.293] I [SPRTMP-T1935:756] MediaRouter | mediarouter_stream.cpp:54   | [#default#vipac/stream(3223044851)] Trying to create media route stream
    [2022-08-13 10:06:57.293] I [SPRTMP-T1935:756] Monitor | application_metrics.cpp:57   | Create StreamMetrics(stream/2ea7a789-59b8-4060-8939-7d1028e5b9c0/default/#default#vipac/stream/o) for monitoring
    [2022-08-13 10:06:57.294] I [SPRTMP-T1935:756] WebRTC Publisher | rtc_stream.cpp:192  | WebRTC Stream has been created : stream/3223044851
    Rtx(false) Ulpfec(false) JitterBuffer(false) PlayoutDelay(false min:0 max: 0)
    [2022-08-13 10:06:57.294] I [SPRTMP-T1935:756] Publisher | stream.cpp:204  | WebRTC Publisher Application application has started [stream(3223044851)] stream (MSID : 0)
    [2022-08-13 10:06:57.295] I [SPRTMP-T1935:756] LLHLS Publisher | llhls_stream.cpp:77   | LLHlsStream(#default#vipac/stream) - Ignore unsupported codec(VP8)
    [2022-08-13 10:06:57.295] I [SPRTMP-T1935:756] LLHLS Publisher | llhls_stream.cpp:77   | LLHlsStream(#default#vipac/stream) - Ignore unsupported codec(VP8)
    [2022-08-13 10:06:57.295] I [SPRTMP-T1935:756] LLHLS Publisher | llhls_stream.cpp:77   | LLHlsStream(#default#vipac/stream) - Ignore unsupported codec(OPUS)
    [2022-08-13 10:06:57.295] W [SPRTMP-T1935:756] LLHLS Publisher | llhls_stream.cpp:84   | LLHLS stream [#default#vipac/stream] could not be created because there is no supported codec.
    [2022-08-13 10:06:57.296] I [SPRTMP-T1935:756] Publisher | stream.cpp:204  | OVTPublisher Application application has started [stream(3223044851)] stream (MSID : 0)
    [2022-08-13 10:06:57.296] I [SPRTMP-T1935:756] Transcoder | transcoder_stream.cpp:90   | [#default#vipac/stream(4)] Transcoder stream has been started.
    [2022-08-13 10:06:57.335] I [Decaac:1392] Transcoder | decoder_aac.cpp:221  | [#default#vipac/stream(4)] input track information: [audio] aac (LC), 48000 Hz, stereo, fltp, 102 kbps, timebase: 1/1000, frame_size: 1024
    [2022-08-13 10:06:57.338] I [Decaac:1392] Transcoder | filter_resampler.cpp:149  | Resampler is enabled for track #1 using parameters. input: time_base=1/1000:sample_rate=48000:sample_fmt=fltp:channel_layout=stereo / outputs: asettb=1/48000,aresample=async=1000,aresample=48000,aformat=sample_fmts=s16:channel_layouts=stereo,asetnsamples=n=960
    [2022-08-13 10:06:57.344] I [Dech264:1391] Transcoder | decoder_avc.cpp:212  | [#default#vipac/stream(4)] input track information: [video] h264 (Constrained Baseline 4.2), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], 60 fps, 195 kbps, timebase: 1/120, frame_size: 0
    [2022-08-13 10:06:57.345] I [Dech264:1391] FFmpeg | third_parties.cpp:119  | [AVCodecContext: 0x7fa9a8001440] v1.11.0
    [2022-08-13 10:06:57.368] I [Dech264:1391] FFmpeg | third_parties.cpp:119  | [AVCodecContext: 0x7fa9a80b1100] v1.11.0
    [2022-08-13 10:06:57.425] I [Dech264:1391] Transcoder | filter_rescaler.cpp:166  | Rescaler is enabled for track #0 using parameters. input: video_size=1920x1080:pix_fmt=0:time_base=1/1000:pixel_aspect=1/1 / outputs: fps=fps=60.00:round=near,scale=1280x720:flags=bilinear,settb=1/90000
    [2022-08-13 10:06:57.426] I [Dech264:1391] Transcoder | filter_rescaler.cpp:166  | Rescaler is enabled for track #0 using parameters. input: video_size=1920x1080:pix_fmt=0:time_base=1/1000:pixel_aspect=1/1 / outputs: fps=fps=60.00:round=near,scale=1920x1080:flags=bilinear,settb=1/90000
    [2022-08-13 10:07:11.611] I [SPOvtPub-T9000:749] OVT | ovt_publisher.cpp:140  | OvtProvider is connected : <ClientSocket: 0x7fa9e8001130, #34, Connected, TCP, Nonblocking, 35.189.201.161:51694>
    [2022-08-13 10:08:22.007] I [SPRTMP-T1935:756] RTMPProvider | rtmp_provider.cpp:179  | The RTMP client has disconnected: [#default#vipac/stream], remote: <ClientSocket: 0x7fa9d8001130, #4, Disconnected, TCP, Nonblocking, 78.55.215.11:53622>
    [2022-08-13 10:08:22.008] I [SPRTMP-T1935:756] Provider | stream.cpp:63   | #default#vipac/stream(4) has been stopped playing stream
    [2022-08-13 10:08:22.008] I [SPRTMP-T1935:756] MediaRouter | mediarouter_application.cpp:468  | [#default#vipac/stream(4)] Trying to delete a stream
    [2022-08-13 10:08:22.008] I [SPRTMP-T1935:756] Monitor | application_metrics.cpp:69   | Delete StreamMetrics(stream/2ea7a789-59b8-4060-8939-7d1028e5b9c0/default/#default#vipac/stream/i) for monitoring
    [2022-08-13 10:08:22.008] I [SPRTMP-T1935:756] Monitor | stream_metrics.cpp:31   | 
    [Stream Info]
    id(4), msid(0), output(stream), SourceType(Rtmp), RepresentationType(Source), Created Time (Sat Aug 13 10:06:56 2022) UUID(2ea7a789-59b8-4060-8939-7d1028e5b9c0/default/#default#vipac/stream/i)
    
    	Video Track #0: Name() Bypass(false) Bitrate(5.00Mb) codec(1, H264) resolution(1920x1080) framerate(60.00fps) KeyInterval(0) BFrames(0) timebase(1/1000)
    	Audio Track #1: Name() Bypass(false) Bitrate(128.00Kb) codec(6, AAC) samplerate(48.0K) format(fltp, 32) channel(stereo, 2) timebase(1/1000)
    
    	>> Statistics
    	Last update time : Sat Aug 13 10:08:22 2022, Last sent time : Sat Aug 13 10:08:22 2022
    	Bytes in : 53.88MB, Bytes out : 62.85MB, Concurrent connections : 0, Max connections : 0 (Sat Aug 13 10:06:57 2022)
    
    		>>>> By publisher
    		- Unknown : Bytes out(0B) Concurrent Connections (0)
    		- WebRTC : Bytes out(0B) Concurrent Connections (0)
    		- MPEGTSPush : Bytes out(0B) Concurrent Connections (0)
    		- RTMPPush : Bytes out(0B) Concurrent Connections (0)
    		- HLS : Bytes out(0B) Concurrent Connections (0)
    		- DASH : Bytes out(0B) Concurrent Connections (0)
    		- LLDASH : Bytes out(0B) Concurrent Connections (0)
    		- LLHLS : Bytes out(0B) Concurrent Connections (0)
    		- OVT : Bytes out(62.85MB) Concurrent Connections (0)
    		- File : Bytes out(0B) Concurrent Connections (0)
    		- Thumbnail : Bytes out(0B) Concurrent Connections (0)
    
    [2022-08-13 10:08:22.011] I [SPRTMP-T1935:756] Transcoder | transcoder_stream.cpp:1232 | [#default#vipac/stream(4)] -> [#default#vipac/stream(3223044851)] Transcoder output stream has been deleted.
    [2022-08-13 10:08:22.011] I [SPRTMP-T1935:756] MediaRouter | mediarouter_application.cpp:468  | [#default#vipac/stream(3223044851)] Trying to delete a stream
    [2022-08-13 10:08:22.011] I [SPRTMP-T1935:756] Monitor | application_metrics.cpp:69   | Delete StreamMetrics(stream/2ea7a789-59b8-4060-8939-7d1028e5b9c0/default/#default#vipac/stream/o) for monitoring
    [2022-08-13 10:08:22.012] I [SPRTMP-T1935:756] Monitor | stream_metrics.cpp:31   | 
    [Stream Info]
    id(3223044851), msid(0), output(stream), SourceType(Transcoder), RepresentationType(Source), Created Time (Sat Aug 13 10:06:57 2022) UUID(2ea7a789-59b8-4060-8939-7d1028e5b9c0/default/#default#vipac/stream/o)
    	>> Origin Stream Info
    	id(4), output(stream), SourceType(Rtmp), Created Time (Sat Aug 13 10:06:56 2022)
    
    	Video Track #0: Name(720p) Bypass(false) Bitrate(2.02Mb) codec(3, VP8) resolution(1280x720) framerate(60.00fps) KeyInterval(0) BFrames(0) timebase(1/90000)
    	Video Track #1: Name(1080p) Bypass(false) Bitrate(5.02Mb) codec(3, VP8) resolution(1920x1080) framerate(60.00fps) KeyInterval(0) BFrames(0) timebase(1/90000)
    	Audio Track #2: Name(opus) Bypass(false) Bitrate(128.00Kb) codec(8, OPUS) samplerate(48.0K) format(s16, 16) channel(stereo, 2) timebase(1/48000)
    
    	>> Statistics
    	Last update time : Sat Aug 13 10:08:22 2022, Last sent time : Sat Aug 13 10:08:22 2022
    	Bytes in : 0B, Bytes out : 62.86MB, Concurrent connections : 0, Max connections : 0 (Sat Aug 13 10:06:57 2022)
    
    		>>>> By publisher
    		- Unknown : Bytes out(0B) Concurrent Connections (0)
    		- WebRTC : Bytes out(0B) Concurrent Connections (0)
    		- MPEGTSPush : Bytes out(0B) Concurrent Connections (0)
    		- RTMPPush : Bytes out(0B) Concurrent Connections (0)
    		- HLS : Bytes out(0B) Concurrent Connections (0)
    		- DASH : Bytes out(0B) Concurrent Connections (0)
    		- LLDASH : Bytes out(0B) Concurrent Connections (0)
    		- LLHLS : Bytes out(0B) Concurrent Connections (0)
    		- OVT : Bytes out(62.86MB) Concurrent Connections (0)
    		- File : Bytes out(0B) Concurrent Connections (0)
    		- Thumbnail : Bytes out(0B) Concurrent Connections (0)
    
    [2022-08-13 10:08:22.013] I [SPRTMP-T1935:756] Publisher | stream.cpp:284  | [stream(3223044851)] WebRTC Publisher Application stream has been stopped
    [2022-08-13 10:08:22.014] I [SPRTMP-T1935:756] Publisher | stream.cpp:284  | [stream(3223044851)] OVTPublisher Application stream has been stopped
    [2022-08-13 10:08:22.014] I [SPRTMP-T1935:756] MediaRouter | mediarouter_stream.cpp:72   | [#default#vipac/stream(3223044851)] Delete media route stream 
    [2022-08-13 10:08:22.014] I [SPRTMP-T1935:756] Transcoder | transcoder_stream.cpp:104  | [#default#vipac/stream(4)] Transcoder stream has been stopped.
    [2022-08-13 10:08:22.014] I [SPRTMP-T1935:756] Transcoder | transcoder_stream.cpp:104  | [#default#vipac/stream(4)] Transcoder stream has been stopped.
    [2022-08-13 10:08:22.014] W [SPRTMP-T1935:756] FFmpeg | third_parties.cpp:115  | [AVCodecContext: 0x7fa9b0006c00] 1 frames left in the queue on closing
    [2022-08-13 10:08:22.028] I [SPOvtPub-T9000:749] OVT | ovt_publisher.cpp:225  | OvtProvider is disconnected(1) : <ClientSocket: 0x7fa9e8001130, #34, Closed, TCP, Nonblocking, 35.189.201.161:51694>
    [2022-08-13 10:08:22.031] I [SPRTMP-T1935:756] MediaRouter | mediarouter_stream.cpp:72   | [#default#vipac/stream(4)] Delete media route stream 
    [2022-08-13 10:08:22.618] I [SPOvtPub-T9000:749] OVT | ovt_publisher.cpp:140  | OvtProvider is connected : <ClientSocket: 0x7fa9e8001130, #4, Connected, TCP, Nonblocking, 35.189.201.161:51698>
    [2022-08-13 10:08:22.618] E [SPOvtPub-T9000:749] Orchestrator | orchestrator.cpp:660  | Could not find Origin for the stream: [#default#vipac/stream]
    [2022-08-13 10:08:22.619] I [SPOvtPub-T9000:749] OVT | ovt_publisher.cpp:225  | OvtProvider is disconnected(2) : <ClientSocket: 0x7fa9e8001130, #4, Disconnected, TCP, Nonblocking, 35.189.201.161:51698>
    [2022-08-13 10:08:23.622] I [SPOvtPub-T9000:749] OVT | ovt_publisher.cpp:140  | OvtProvider is connected : <ClientSocket: 0x7fa9e8001130, #4, Connected, TCP, Nonblocking, 35.189.201.161:51700>
    [2022-08-13 10:08:23.623] E [SPOvtPub-T9000:749] Orchestrator | orchestrator.cpp:660  | Could not find Origin for the stream: [#default#vipac/stream]
    [2022-08-13 10:08:23.624] I [SPOvtPub-T9000:749] OVT | ovt_publisher.cpp:225  | OvtProvider is disconnected(2) : <ClientSocket: 0x7fa9e8001130, #4, Disconnected, TCP, Nonblocking, 35.189.201.161:51700>
    [2022-08-13 10:08:24.627] I [SPOvtPub-T9000:749] OVT | ovt_publisher.cpp:140  | OvtProvider is connected : <ClientSocket: 0x7fa9e8001130, #4, Connected, TCP, Nonblocking, 35.189.201.161:51702>
    [2022-08-13 10:08:24.627] E [SPOvtPub-T9000:749] Orchestrator | orchestrator.cpp:660  | Could not find Origin for the stream: [#default#vipac/stream]
    [2022-08-13 10:08:24.628] I [SPOvtPub-T9000:749] OVT | ovt_publisher.cpp:225  | OvtProvider is disconnected(2) : <ClientSocket: 0x7fa9e8001130, #4, Disconnected, TCP, Nonblocking, 35.189.201.161:51702>
    

    OTHER HELPFUL INFORMATION

    I tweaked around with the threads but no luck, here are screenshots of the cpu threads usage while using one rendition and 2 rendiitons and default settings.

    one rendition

    one_origin

    two renditions

    two_origin

    Am i missing anything here? If you need any more info please let me know, i appreciate any help. Greetings

    help 
    opened by M-Brock 0
  • ll-hls reliably stops working after ~10 minutes of smooth playback

    ll-hls reliably stops working after ~10 minutes of smooth playback

    Describe the bug LL-HLS works and generally is very good, but after 10 minutes or so, playback reliably stops and the player (ovenplayer) starts buffering endlessly until you refresh.

    To Reproduce

    Dockerfile:

    FROM airensoft/ovenmediaengine:0.14.5
    
    RUN apt-get update && apt-get install -y curl
    
    ENV API_ACCESS_TOKEN=x
    
    WORKDIR /opt/ovenmediaengine/bin
    
    COPY ./Server.xml /opt/ovenmediaengine/bin/origin_conf/Server.xml
    COPY EdgeConfig.xml ./edge_conf/Server.xml
    
    COPY entrypoint.sh .
    
    HEALTHCHECK --interval=30s --timeout=30s --start-period=5s --retries=3 CMD curl --fail -H "Authorization: Basic $(printf ${API_ACCESS_TOKEN} | base64)"  'http://localhost:48081/v1/vhosts' 
    
    CMD ["bash", "entrypoint.sh"]
    

    Server.xml

    <?xml version="1.0" encoding="UTF-8"?>
    
    <Server version="8">
    	<Name>OvenMediaEngine</Name>
    	<!-- Host type (origin/edge) -->
    	<Type>origin</Type>
    	<!-- Specify IP address to bind (* means all IPs) -->
    	<IP>*</IP>
    
    	<!-- 
    	To get the public IP address(mapped address of stun) of the local server. 
    	This is useful when OME cannot obtain a public IP from an interface, such as AWS or docker environment. 
    	If this is successful, you can use ${PublicIP} in your settings.
    	-->
    	<StunServer>stun.l.google.com:19302</StunServer>
    
    	<!-- Settings for the ports to bind -->
    	<Bind>
    
    		<Managers>
    			<API>
    				<Port>48081</Port>
    				<WorkerCount>1</WorkerCount>
    			</API>
    		</Managers>
    
    
    		<Providers>
    			<!-- Pull providers
    			<RTSPC>
    				<WorkerCount>1</WorkerCount>
    			</RTSPC>
    			<OVT>
    				<WorkerCount>1</WorkerCount>
    			</OVT>
    			-->
    			
    			<!-- Push providers -->
    			<RTMP>
    				<Port>${env:OME_RTMP_PROV_PORT:1951}</Port>
    				<WorkerCount>1</WorkerCount>
    			</RTMP>
    			<SRT>
    				<Port>9999</Port>
    				<WorkerCount>1</WorkerCount>
    			</SRT>
    			<WebRTC>
    				<Signalling>
    					<Port>${env:OME_SIGNALLING_PORT:3333}</Port>
    					<WorkerCount>1</WorkerCount>
    				</Signalling>
    
    				<IceCandidates>
    
    					<TcpRelay>*:3478</TcpRelay>
    					<!-- TcpForce is an option to force the use of TCP rather than UDP in WebRTC streaming. (You can omit ?transport=tcp accordingly.) If <TcpRelay> is not set, playback may fail. -->
    					<TcpForce>false</TcpForce>
    
    					<IceCandidate>${env:OME_ICE_CANDIDATES:*:10000-10005/udp}</IceCandidate>
    					<TcpRelayWorkerCount>1</TcpRelayWorkerCount>
    				</IceCandidates>
    			</WebRTC>
    	
    		</Providers>
    
    		<Publishers>
    			<WebRTC>
    				<Signalling>
    					<Port>${env:OME_SIGNALLING_PORT:3333}</Port>
    					<!-- If you want to use TLS, specify the TLS port -->
    					<TLSPort>${env:OME_SIGNALLING_PORT_SECURE:3334}</TLSPort>
    					<WorkerCount>1</WorkerCount>
    				</Signalling>
    				<IceCandidates>
    					<!-- 
    						If you want to stream WebRTC over TCP, specify IP:Port for TURN server.
    						This uses the TURN protocol, which delivers the stream from the built-in TURN server to the player's TURN client over TCP. 
    						For detailed information, refer https://airensoft.gitbook.io/ovenmediaengine/streaming/webrtc-publishing#webrtc-over-tcp
    					-->
    					<TcpRelay>*:3478</TcpRelay>
    					<!-- TcpForce is an option to force the use of TCP rather than UDP in WebRTC streaming. (You can omit ?transport=tcp accordingly.) If <TcpRelay> is not set, playback may fail. -->
    					<TcpForce>false</TcpForce>
    
    					<IceCandidate>${env:OME_ICE_CANDIDATES:*:10000-10005/udp}</IceCandidate>
    					<TcpRelayWorkerCount>1</TcpRelayWorkerCount>
    				</IceCandidates>
    			</WebRTC>
    
    			<HLS>
    				<Port>799</Port>
    				<!-- If you want to use TLS, specify the TLS port -->
    				<TLSPort>800</TLSPort>
    				<WorkerCount>1</WorkerCount>
    			</HLS>
    
    			<LLHLS>
    				<Port>799</Port>
    				<TLSPort>800</TLSPort>
    				<WorkerCount>1</WorkerCount>
    			</LLHLS>
    		</Publishers>
    	</Bind>
    
    	<!-- P2P works only in WebRTC -->
    	<!--
    	<P2P>
    		<MaxClientPeersPerHostPeer>2</MaxClientPeersPerHostPeer>
    	</P2P>
    	-->
    
    	<!--
    		Enable this configuration if you want to use API Server
    		
    		<AccessToken> is a token for authentication, and when you invoke the API, you must put "Basic base64encode(<AccessToken>)" in the "Authorization" header of HTTP request.
    		For example, if you set <AccessToken> to "ome-access-token", you must set "Basic b21lLWFjY2Vzcy10b2tlbg==" in the "Authorization" header.
    	-->
    
    	<Managers>
    		<Host>
    			<Names>
    				<Name>*.hostname.tld</Name>
    				<Name>hostname.tld</Name>
    				<Name>localhost</Name>
    				<Name>127.0.0.1</Name>
    			</Names>
    			<TLS>
    				<CertPath>/opt/ovenmediaengine/cert.pem</CertPath>
    				<KeyPath>/opt/ovenmediaengine/privkey.pem</KeyPath>
    				<ChainCertPath>/opt/ovenmediaengine/fullchain.pem</ChainCertPath>
    			</TLS>
    		</Host>
    		<API>
    			<AccessToken>${env:API_ACCESS_TOKEN:x}</AccessToken>
    		</API>
    	</Managers>
    
    
    	<VirtualHosts>
    		<!-- You can use wildcard like this to include multiple XMLs -->
    		<VirtualHost>
    			<Name>default</Name>
    			<!--Distribution is a value that can be used when grouping the same vhost distributed across multiple servers. This value is output to the events log, so you can use it to aggregate statistics. -->
    			<Distribution>hostname.tld</Distribution>
    
    			<!-- Settings for multi ip/domain and TLS -->
    			<Host>
    				<Names>
    						<Name>*.hostname.tld</Name>
    						<Name>hostname.tld</Name>
    						<Name>localhost</Name>
    						<Name>127.0.0.1</Name>
    				</Names>
    				<TLS>
    					<CertPath>/opt/ovenmediaengine/cert.pem</CertPath>
    					<KeyPath>/opt/ovenmediaengine/privkey.pem</KeyPath>
    					<ChainCertPath>/opt/ovenmediaengine/fullchain.pem</ChainCertPath>
    				</TLS>
    			</Host>
    			
    			<!-- Settings for applications -->
    			<Applications>
    				<Application>
    					<Name>live</Name>
    					<!-- Application type (live/vod) -->
    					<Type>live</Type>
    					<OutputProfiles>
    						<!-- Enable this configuration if you want to hardware acceleration using GPU -->
    						<HardwareAcceleration>false</HardwareAcceleration>
    						<OutputProfile>
    							<Name>bypass_stream</Name>
    							<OutputStreamName>${OriginStreamName}</OutputStreamName>
    							<Encodes>
    								<Audio>
    									<Bypass>true</Bypass>
    								</Audio>
    								<Video>
    									<Bypass>true</Bypass>
    								</Video>
    								<Audio>
    									<Codec>opus</Codec>
    									<Bitrate>128000</Bitrate>
    									<Samplerate>48000</Samplerate>
    									<Channel>2</Channel>
    								</Audio>
    							</Encodes>
    						</OutputProfile>
    
    						<!-- Audio only -->
    						<OutputProfile>
    							<Name>audio_only</Name>
    							<OutputStreamName>${OriginStreamName}_audio</OutputStreamName>
    							<Encodes>
    								<Audio>
    									<Bypass>true</Bypass>
    								</Audio>
    								<Audio>
    									<Codec>opus</Codec>
    									<Bitrate>128000</Bitrate>
    									<Samplerate>48000</Samplerate>
    									<Channel>2</Channel>
    								</Audio>
    							</Encodes>
    						</OutputProfile>
    
    					</OutputProfiles>
    					<Providers>
    						<WebRTC />
    						<RTMP />
    						<WebRTC>
    							<Timeout>30000</Timeout>
    						</WebRTC>
    					</Providers>
    					<Publishers>
    						<AppWorkerCount>1</AppWorkerCount>
    						<StreamWorkerCount>8</StreamWorkerCount>
    
    						<WebRTC>
    							<Timeout>30000</Timeout>
    							<Rtx>true</Rtx>
    							<Ulpfec>true</Ulpfec>
    							<JitterBuffer>true</JitterBuffer>
    						</WebRTC>
    
    						<RTMPPush></RTMPPush>
    
    						<HLS>
                  <SegmentDuration>1</SegmentDuration>
                  <SegmentCount>3</SegmentCount>
                  <CrossDomains>
                    <Url>hostname.tld</Url>
                  </CrossDomains>
                </HLS>
    
    						<LLHLS>
    							<ChunkDuration>0.2</ChunkDuration>
    							<SegmentDuration>6</SegmentDuration>
    							<SegmentCount>10</SegmentCount>
    							<CrossDomains>
    								<!-- <Url>hostname.tld</Url>
    								<Url>*.hostname.tld</Url>
    								<Url>https://staging.hostname.tld:8888</Url> -->
    								<Url>*</Url>
    							</CrossDomains>
    						</LLHLS>
    					</Publishers>
    				</Application>
    			</Applications>
    		</VirtualHost>
    	</VirtualHosts>
    </Server>
    					  
    

    Expected behavior Smooth playback, no buffering

    Logs A sample log extract (same as in ticket #847 )

    omelog.txt

    Player (please complete the following information):

    • Device: Have tested and observed in various Chrome versions (including the most recent as of this post) on windows, Chrome on ios

    Additional context Could be something in our player page, we will test that, but I figured I'd open a ticket here in case something is obviously wrong with our setup

    bug 
    opened by naanlizard 6
  • SIGSEGV crash

    SIGSEGV crash

    Describe the bug Our OME instance crashed a week or so ago (and seems to keep crashing, from a quick look at our docker logs). SIGSEGV - unfortunately no other notable info I can tell

    Logs omelog.txt crash_20220803.dump.txt

    Dockerfile:

    FROM airensoft/ovenmediaengine:0.14.5
    
    RUN apt-get update && apt-get install -y curl
    
    ENV API_ACCESS_TOKEN=x
    
    WORKDIR /opt/ovenmediaengine/bin
    
    COPY ./Server.xml /opt/ovenmediaengine/bin/origin_conf/Server.xml
    COPY EdgeConfig.xml ./edge_conf/Server.xml
    
    COPY entrypoint.sh .
    
    HEALTHCHECK --interval=30s --timeout=30s --start-period=5s --retries=3 CMD curl --fail -H "Authorization: Basic $(printf ${API_ACCESS_TOKEN} | base64)"  'http://localhost:48081/v1/vhosts' 
    
    CMD ["bash", "entrypoint.sh"]
    
    

    Server.xml

    <?xml version="1.0" encoding="UTF-8"?>
    
    <Server version="8">
    	<Name>OvenMediaEngine</Name>
    	<!-- Host type (origin/edge) -->
    	<Type>origin</Type>
    	<!-- Specify IP address to bind (* means all IPs) -->
    	<IP>*</IP>
    
    	<!-- 
    	To get the public IP address(mapped address of stun) of the local server. 
    	This is useful when OME cannot obtain a public IP from an interface, such as AWS or docker environment. 
    	If this is successful, you can use ${PublicIP} in your settings.
    	-->
    	<StunServer>stun.l.google.com:19302</StunServer>
    
    	<!-- Settings for the ports to bind -->
    	<Bind>
    
    		<Managers>
    			<API>
    				<Port>48081</Port>
    				<WorkerCount>1</WorkerCount>
    			</API>
    		</Managers>
    
    
    		<Providers>
    			<!-- Pull providers
    			<RTSPC>
    				<WorkerCount>1</WorkerCount>
    			</RTSPC>
    			<OVT>
    				<WorkerCount>1</WorkerCount>
    			</OVT>
    			-->
    			
    			<!-- Push providers -->
    			<RTMP>
    				<Port>${env:OME_RTMP_PROV_PORT:1951}</Port>
    				<WorkerCount>1</WorkerCount>
    			</RTMP>
    			<SRT>
    				<Port>9999</Port>
    				<WorkerCount>1</WorkerCount>
    			</SRT>
    			<WebRTC>
    				<Signalling>
    					<Port>${env:OME_SIGNALLING_PORT:3333}</Port>
    					<WorkerCount>1</WorkerCount>
    				</Signalling>
    
    				<IceCandidates>
    
    					<TcpRelay>*:3478</TcpRelay>
    					<!-- TcpForce is an option to force the use of TCP rather than UDP in WebRTC streaming. (You can omit ?transport=tcp accordingly.) If <TcpRelay> is not set, playback may fail. -->
    					<TcpForce>false</TcpForce>
    
    					<IceCandidate>${env:OME_ICE_CANDIDATES:*:10000-10005/udp}</IceCandidate>
    					<TcpRelayWorkerCount>1</TcpRelayWorkerCount>
    				</IceCandidates>
    			</WebRTC>
    	
    		</Providers>
    
    		<Publishers>
    			<WebRTC>
    				<Signalling>
    					<Port>${env:OME_SIGNALLING_PORT:3333}</Port>
    					<!-- If you want to use TLS, specify the TLS port -->
    					<TLSPort>${env:OME_SIGNALLING_PORT_SECURE:3334}</TLSPort>
    					<WorkerCount>1</WorkerCount>
    				</Signalling>
    				<IceCandidates>
    					<!-- 
    						If you want to stream WebRTC over TCP, specify IP:Port for TURN server.
    						This uses the TURN protocol, which delivers the stream from the built-in TURN server to the player's TURN client over TCP. 
    						For detailed information, refer https://airensoft.gitbook.io/ovenmediaengine/streaming/webrtc-publishing#webrtc-over-tcp
    					-->
    					<TcpRelay>*:3478</TcpRelay>
    					<!-- TcpForce is an option to force the use of TCP rather than UDP in WebRTC streaming. (You can omit ?transport=tcp accordingly.) If <TcpRelay> is not set, playback may fail. -->
    					<TcpForce>false</TcpForce>
    
    					<IceCandidate>${env:OME_ICE_CANDIDATES:*:10000-10005/udp}</IceCandidate>
    					<TcpRelayWorkerCount>1</TcpRelayWorkerCount>
    				</IceCandidates>
    			</WebRTC>
    
    			<HLS>
    				<Port>799</Port>
    				<!-- If you want to use TLS, specify the TLS port -->
    				<TLSPort>800</TLSPort>
    				<WorkerCount>1</WorkerCount>
    			</HLS>
    
    			<LLHLS>
    				<Port>799</Port>
    				<TLSPort>800</TLSPort>
    				<WorkerCount>1</WorkerCount>
    			</LLHLS>
    		</Publishers>
    	</Bind>
    
    	<!-- P2P works only in WebRTC -->
    	<!--
    	<P2P>
    		<MaxClientPeersPerHostPeer>2</MaxClientPeersPerHostPeer>
    	</P2P>
    	-->
    
    	<!--
    		Enable this configuration if you want to use API Server
    		
    		<AccessToken> is a token for authentication, and when you invoke the API, you must put "Basic base64encode(<AccessToken>)" in the "Authorization" header of HTTP request.
    		For example, if you set <AccessToken> to "ome-access-token", you must set "Basic b21lLWFjY2Vzcy10b2tlbg==" in the "Authorization" header.
    	-->
    
    	<Managers>
    		<Host>
    			<Names>
    				<Name>*.hostname.tld</Name>
    				<Name>hostname.tld</Name>
    				<Name>localhost</Name>
    				<Name>127.0.0.1</Name>
    			</Names>
    			<TLS>
    				<CertPath>/opt/ovenmediaengine/cert.pem</CertPath>
    				<KeyPath>/opt/ovenmediaengine/privkey.pem</KeyPath>
    				<ChainCertPath>/opt/ovenmediaengine/fullchain.pem</ChainCertPath>
    			</TLS>
    		</Host>
    		<API>
    			<AccessToken>${env:API_ACCESS_TOKEN:x}</AccessToken>
    		</API>
    	</Managers>
    
    
    	<VirtualHosts>
    		<!-- You can use wildcard like this to include multiple XMLs -->
    		<VirtualHost>
    			<Name>default</Name>
    			<!--Distribution is a value that can be used when grouping the same vhost distributed across multiple servers. This value is output to the events log, so you can use it to aggregate statistics. -->
    			<Distribution>hostname.tld</Distribution>
    
    			<!-- Settings for multi ip/domain and TLS -->
    			<Host>
    				<Names>
    						<Name>*.hostname.tld</Name>
    						<Name>hostname.tld</Name>
    						<Name>localhost</Name>
    						<Name>127.0.0.1</Name>
    				</Names>
    				<TLS>
    					<CertPath>/opt/ovenmediaengine/cert.pem</CertPath>
    					<KeyPath>/opt/ovenmediaengine/privkey.pem</KeyPath>
    					<ChainCertPath>/opt/ovenmediaengine/fullchain.pem</ChainCertPath>
    				</TLS>
    			</Host>
    			
    			<!-- Settings for applications -->
    			<Applications>
    				<Application>
    					<Name>live</Name>
    					<!-- Application type (live/vod) -->
    					<Type>live</Type>
    					<OutputProfiles>
    						<!-- Enable this configuration if you want to hardware acceleration using GPU -->
    						<HardwareAcceleration>false</HardwareAcceleration>
    						<OutputProfile>
    							<Name>bypass_stream</Name>
    							<OutputStreamName>${OriginStreamName}</OutputStreamName>
    							<Encodes>
    								<Audio>
    									<Bypass>true</Bypass>
    								</Audio>
    								<Video>
    									<Bypass>true</Bypass>
    								</Video>
    								<Audio>
    									<Codec>opus</Codec>
    									<Bitrate>128000</Bitrate>
    									<Samplerate>48000</Samplerate>
    									<Channel>2</Channel>
    								</Audio>
    							</Encodes>
    						</OutputProfile>
    
    						<!-- Audio only -->
    						<OutputProfile>
    							<Name>audio_only</Name>
    							<OutputStreamName>${OriginStreamName}_audio</OutputStreamName>
    							<Encodes>
    								<Audio>
    									<Bypass>true</Bypass>
    								</Audio>
    								<Audio>
    									<Codec>opus</Codec>
    									<Bitrate>128000</Bitrate>
    									<Samplerate>48000</Samplerate>
    									<Channel>2</Channel>
    								</Audio>
    							</Encodes>
    						</OutputProfile>
    
    					</OutputProfiles>
    					<Providers>
    						<WebRTC />
    						<RTMP />
    						<WebRTC>
    							<Timeout>30000</Timeout>
    						</WebRTC>
    					</Providers>
    					<Publishers>
    						<AppWorkerCount>1</AppWorkerCount>
    						<StreamWorkerCount>8</StreamWorkerCount>
    
    						<WebRTC>
    							<Timeout>30000</Timeout>
    							<Rtx>true</Rtx>
    							<Ulpfec>true</Ulpfec>
    							<JitterBuffer>true</JitterBuffer>
    						</WebRTC>
    
    						<RTMPPush></RTMPPush>
    
    						<HLS>
                  <SegmentDuration>1</SegmentDuration>
                  <SegmentCount>3</SegmentCount>
                  <CrossDomains>
                    <Url>hostname.tld</Url>
                  </CrossDomains>
                </HLS>
    
    						<LLHLS>
    							<ChunkDuration>0.2</ChunkDuration>
    							<SegmentDuration>6</SegmentDuration>
    							<SegmentCount>10</SegmentCount>
    							<CrossDomains>
    								<!-- <Url>hostname.tld</Url>
    								<Url>*.hostname.tld</Url>
    								<Url>https://staging.hostname.tld:8888</Url> -->
    								<Url>*</Url>
    							</CrossDomains>
    						</LLHLS>
    					</Publishers>
    				</Application>
    			</Applications>
    		</VirtualHost>
    	</VirtualHosts>
    </Server>
    					  
    
    bug 
    opened by naanlizard 1
  • RAM memory goes up to 100%

    RAM memory goes up to 100%

    My OME server's RAM starts to gradually increase to 100% saturation, then the OME service restarts and RAM is freed, but the cycle continues. I use ubuntu 18.05, OME 12.9 , mpeg2 TS input and HLS playback

    help 
    opened by Mariano245 1
  •  Elimination of interlacing

    Elimination of interlacing

    Good day!

    Will deinterlacing functionality be implemented?

    In FFmpeg, the -vf switch is responsible for this with the options: w3fdif or bwdif or kerndeint or yadif

    feature 
    opened by by-serj 1
Releases(v0.14.8)
  • v0.14.8(Aug 12, 2022)

    [Compatibility]

    • Compatible with dependencies(prerequisites.sh) installed in 0.14.4 or later
    • MUST upgrade both Origin/Edge to 0.14.8. A problem has been found in older versions of Edge.
    • Compatible with Server.xml used in 0.12.6 or later

    [Fixed]

    • Fixed a broken playlist in Edge
    Source code(tar.gz)
    Source code(zip)
  • v0.14.7(Aug 12, 2022)

    [Compatibility]

    • Compatible with dependencies(prerequisites.sh) installed in 0.14.4 or later
    • Compatible with version 0.14.3 or later of Origin or Edge
    • Compatible with Server.xml used in 0.12.6 or later

    [Fixed]

    • Fixed an issue where AdmissionWebhooks did not work properly in LLHLS
    • Fixed an issue where HTTP/2 could potentially cause SIGSEGV
    Source code(tar.gz)
    Source code(zip)
  • v0.14.6(Aug 4, 2022)

    [Compatibility]

    • Compatible with dependencies(prerequisites.sh) installed in 0.14.4 or later
    • Compatible with version 0.14.3 or later of Origin or Edge
    • Compatible with Server.xml used in 0.12.6 or later

    [Fixed]

    • Fixed the problem that OvenMediaEngine does not turn on normally after rebooting
    • Fixed all tracks being duplicated in bypassed multitrack audio (#778)
    Source code(tar.gz)
    Source code(zip)
  • v0.14.5(Aug 1, 2022)

    [Compatibility]

    • Compatible with dependencies(prerequisites.sh) installed by previous(0.14.4) versions
    • Compatible with version 0.14.3 or higher of Origin or Edge
    • Compatible with Server.xml used in 0.12.6 or later

    [Fixed]

    • Fixed an issue where CPU usage was abnormally high when encoding OPUS audio to mono (#828)
    • Fixed an issue that could cause SIGSEGV in HTTP Server

    [Improved]

    • Improved to record normally even in non-monotonous DTS (#743)

    [Changed]

    • Changed the default STUN server from stun.l.google.com:19302 to stun.ovenmediaengine.com:13478 because stun.l.google.com sometimes does not work.
    Source code(tar.gz)
    Source code(zip)
  • v0.14.4(Jul 21, 2022)

    [Compatibility]

    • MUST run misc/prerequisites.sh. The external library has been updated.
    • Compatible with version 0.14.3 or higher of Origin or Edge
    • Compatible with Server.xml used in 0.12.6 or later

    [Added]

    • Added KeyFrameInterval and BFrames encoding parameters

    [Fixed]

    • Fixed the problem that the encoder does not work when dynamic resolution is input
    • Fixed an issue that could cause deadlock if the origin-edge connection was unstable (#819)
    • Fixed an issue that caused SIGSEGV in Edge's PullStream
    • Fixed an issue where audio only stream was not playing in WebRTC (#826)
    • Fixed an issue that recording and packetizing are failing due to non-monotonically increasing DTS (#743)

    [Changed]

    • Changed FFmpeg version to 5.0.1
    Source code(tar.gz)
    Source code(zip)
  • v0.14.3(Jul 6, 2022)

    [Compatibility]

    • Compatible with dependencies(prerequisites.sh) installed by previous(0.14.2) versions
    • MUST upgrade both Origin/Edge to 0.14.3. Incompatible with previous versions of Origin/Edge.
    • Compatible with Server.xml used in 0.12.6 or later

    [Added]

    • Supports ABR in WebRTC
    • Multiple <Playlist> with multiple different <Rendition> can be configured

    [Fixed]

    • Fixed possibility of crashing in WebRTC Retransmission
    Source code(tar.gz)
    Source code(zip)
  • v0.14.2(Jun 9, 2022)

    This is a hotfix, everything else is the same as 0.14.0. Please refer to the 0.14.0 release notes.

    [Fixed]

    • Fixed timestamp calculation algorithm of OVT provider
    Source code(tar.gz)
    Source code(zip)
  • v0.14.1(Jun 6, 2022)

    This is a hotfix, everything else is the same as 0.14.0. Please refer to the 0.14.0 release notes.

    [Fixed]

    • Fixed incorrect reserved memory size in LLHLS
    Source code(tar.gz)
    Source code(zip)
  • v0.14.0(Jun 2, 2022)

    [Compatibility]

    • MUST run misc/prerequisites.sh. The external library has been updated.
    • MUST upgrade both Origin/Edge to 0.14.0. Incompatible with previous versions of Origin/Edge.
    • Compatible with Server.xml used in 0.12.6 or later

    [Added]

    • Supports persistent connections in HTTP/1.1
    • Supports HTTP/2 (ALPN:h2)
    • Supports Low-Latency HLS (LLHLS)
    • Supports ABR streaming in LLHLS

    [Changed]

    • Supports TLS 1.3

    [Improved]

    • The performance of the H.264 bitstream parser has been improved
    • The b-frame detection algorithm has been improved

    [Fixed]

    • Fixed the problem that A-V sync was broken due to start_time in file recording
    • Fixed OVT calculating DTS incorrectly
    • Fixed the problem of not extracting meta from RTMP
    • Fixed the problem that relay crashed in Origin-Relay-Edge structure
    • Fixed critical section issue in WebRTC RTX

    [Removed]

    • Legacy HLS, MPEG-DASH, and LLDASH have been deprecated. It's still available, but not officially supported and updated.
    Source code(tar.gz)
    Source code(zip)
  • v0.13.2(Mar 18, 2022)

    [Compatibility]

    • Compatible with dependencies installed by previous(0.13.1) versions
    • MUST run misc/prerequisites.sh before compiling OvenMediaEngine 0.13.0 due to external library change.
    • Compatible with version 0.12.7 or higher of Origin or Edge
    • Compatible with Server.xml used in 0.12.6 or later

    [Added]

    • Added the sending of the closing of the stream on the AdmissionWebhooks (Thanks to @trapasso)

    [Changed]

    • Changed recording file directory permission from 755 to 644

    [Improved]

    • Improved compatibility by ignoring some exceptions in H264 SPS parser
    • Improved bframe detection method

    [Fixed]

    • Fixed the problem that the recording number does not increase
    • Fixed typo in hevc_cuvid decoder name (Thanks to @krakow10)
    • Fixed an issue where Push Publisher could not select a track
    Source code(tar.gz)
    Source code(zip)
  • v0.13.1(Feb 22, 2022)

  • v0.13.0(Feb 16, 2022)

    License changed to AGPLv3 - For more information, see https://github.com/AirenSoft/OvenMediaEngine/issues/670

    [Compatibility]

    • Incompatible with dependencies installed by previous versions
      • MUST run misc/prerequisites.sh before compiling OvenMediaEngine 0.13.0 due to external library change.
    • Compatible with version 0.12.7 or higher of Origin or Edge
    • Compatible with Server.xml used in 0.12.6 or later

    [Added]

    • Added <TcpRelayBind> setting to enable port binding independently from <TcpRelay> setting (Thanks to @trapasso)
    • Support RTSP Authorization (Basic, Digest)
    • Added <Origin><Pass><ForwardQueryParams> option
    • Added RTMPS, MPEGTS Push Publishing (Thanks to @trapasso)
    • Added video rescaler using CUDA

    [Changed]

    • The external library version has been upgraded.
    • Changed H.264 encoder to OpenH264 due to license compatibility issue
    • WebRTC Provider sends PLI packet to sender instead of FIR
    • Changed API timezone format from HHMM to HH:MM
    • Changed Presets of NVIDIA encoder

    [Removed]

    • LastConfig.xml has been deprecated due to several design issues. So, application and stream creation/deletion through API are not saved. This part will be developed as a completely new design in the future.
    • Removed x265 codec due to license compatibility issue

    [Improved]

    • Improved stability of PhysicalPort and Socket
    • Improved stability of ICE Module (fixes the possibility that the initial connection could fail very infrequently)
    • Removed inefficient threads of File/Push publishers
    • Exception handling for invalid H.264 FU-A packets of some IP cameras
    • Added logic to calculate PTS when there is no RTCP in RTSPC Provider
    • Improved to reduce the 1-frame delay by removing the duplicated packet duration calculation
    • Improved performance by reducing memory copy of transcoder

    [Fixed]

    • Fixed an issue where Audio Only did not work in WebRTC Provider
    • Fixed (Cannot find stream) error when using new_url (Admission webhook) and client stops playing webrtc (Thanks to @Amirhasanioox)
    • Fixed a problem that occurred when the HTTP request body is very large
    • Fixed a problem that CORS doesn't work when wildcard is used for subdomain
    • Fixed a problem that record and push API cannot be searched by specific ID
    Source code(tar.gz)
    Source code(zip)
  • v0.12.11(Jan 20, 2022)

  • v0.12.10(Jan 10, 2022)

  • v0.12.9(Dec 10, 2021)

    [Compatibility]

    • Compatible with version 0.12.8 of Origin or Edge
    • Compatible with version 0.12.8 of Server.xml and Logger.xml.

    [Added]

    • WebRTC Provider sends RTCP PLI to peer
    • In order to comply with regulations such as GDPR and CCPA, the PrivacyProtection option can be enabled to hide the client's IP information from logs and APIs.
    • Implemented SNI feature, every VirtualHost can each set their own certificate

    [Improved]

    • WebRTC Signaling, Thumbnail, HLS, DASH can use the same port
    • WebRTC, RTSP Provider converts timestamp to PTS using RTCP SR for more accurate A/V sync
    • Improved stability of WebSocket server
    • Improved compatibility of RTMP Provider
    • Improved compatibility of HTTPS client
    • If there is no stream in Edge, pull stream from Origin and start RTMP Push (Thanks to @trapasso)
    • Improved performance of SDP parser and URL parser

    [Changed]

    • TCP_NODELAY and TCP_QUICKACK are enabled by default
    • Retry when RTMP push session is disconnected
    • RTMP Push tries to reconnect when the connection is lost

    [Fixed]

    • Fixed the problem that ${PublicIP} macro does not work in Server.xml
    • Fixed a problem that include attribute doesn't work with relative path
    • Fixed an issue where TLS packets could not be parsed with a low probability
    • Fixed an issue with incorrect bitstream conversion in RTMP Push Publisher
    • Fixed a problem that could crash when handling tampered HTTP packets
    • Fixed a problem that the WebRTC provider loads the publisher's bind settings (thanks to @trapasso) #580
    • Fixed a problem that could crash when the log level of SegmentStream is set to DEBUG (thanks to @trapasso) #584
    Source code(tar.gz)
    Source code(zip)
  • v0.12.8(Nov 3, 2021)

    [Compatibility]

    • Compatible with version 0.12.7 of Origin or Edge
    • Compatible with version 0.12.7 of Server.xml and Logger.xml.

    [Added]

    • If there is a b-frame in the input stream, a warning log is output.
    • Added <NoInputFailoverTimeout> and <UnusedStreamDeletionTimeout> properties to OriginMap
    • Added Framemarking extension to RTP
    • Added GOP statistics information to OvenRtcTester (correct values are output when testing OvenMediaEngine 0.12.8 or higher)
    • Added GET /v1/stats/current to API server (Server's stat, sum of all VHosts)

    [Improved]

    • Improved compatibility of RTSP Pull

    [Changed]

    • Changed to use <Server><Name> for HLS service name
    • Change the default value of <TcpForce> to true
    • Change the default value of <WebRTC><Rtx> to false
    • Change the default value of <WebRTC><Ulpfec> to false
    • Changed the restart option of OvenMediaEngine service to always

    [Fixed]

    • Fixed a problem where the duration of AAC and OPUS frames could be calculated incorrectly
    • Fixed an issue where LastConfig.json file was created in the wrong format
    • Fixed an issue that could cause a segfault in OVT Provider
    Source code(tar.gz)
    Source code(zip)
  • v0.12.7(Oct 18, 2021)

    [Compatibility]

    • Not compatible with Origin or Edge of 0.12.6
    • Compatible with version 0.12.6 of Server.xml and Logger.xml.

    [Added]

    • Added to automatically failover if multiple URLs are set in Edge's Origin Map (both OVT and RTSP)
      • When the input stream is changed, it affects the publisher and has been tested in WebRTC and HLS (DASH does not work properly yet)
    • Added presets of encoding quality and performance
    • Added the ability to maintain original quality in Transcoding (Keep Origin)

    [Improved]

    • Improved performance of some depacketizers

    [Fixed]

    • Fixed an issue where multiple streams could not handle input in SRT
    • Fixed an issue where OVT and RTSPPull could sometimes get deadlocked
    • Fixed RTSP status line being parsed incorrectly
    • Fixed a problem that did not work when empty space was entered in the SignedPolicy setting
    • Fixed an issue where options after the -i option were ignored when running OvenMediaEngine
    • Fixed an issue where default CORS was not applied
    Source code(tar.gz)
    Source code(zip)
  • v0.12.6(Oct 5, 2021)

    [Compatibility]

    • Compatible with version 0.12.5 of Origin or Edge.
    • Compatible with version 0.12.5 of Server.xml and Logger.xml.

    [Added]

    • Added JitterBuffer for WebRTC Publisher (For Lip-sync) (see https://airensoft.gitbook.io/ovenmediaengine/streaming/webrtc-publishing#publisher)

    [Improved]

    • Improved A/V sync of WebRTC in all browsers
    • Increased the limit of the number of files of OvenMediaEngine service

    [Changed]

    • Changed ice_servers to iceServers in the offer message of WebRTC signaling (ice_servers is not deleted yet)
    • Changed the thread name AppWorker to AW-xxx (ex: AW-WebRTC)
    • Reduced the number of chunk history from *5 to *2 in HLS
    • Reduced the number of inbound/outbound worker threads
    • Changed LastConfig.json, which saves settings applied by API, to LastConfig.xml, and fixed some errors
    • Changed the OPUS encoder to the latest version
    • Changed OPUS encoding option (10ms->20ms, s16->fltp, 10% loss->5% loss)

    [Fixed]

    • Fixed an issue where HTTP request header size greater than 1024 would cause an error
    • Fixed API usage of deprecated Nvidia GPU
    • Fixed an issue where WebSocket packets could not be parsed if fragmented (reproduced frequently in the latest iOS 15 or later)
    Source code(tar.gz)
    Source code(zip)
  • v0.12.5(Sep 15, 2021)

    [Added]

    • Support Amazon Linux

    [Improved]

    • Improve packaging performance of HLS and DASH

    [Changed]

    • Change the number of Inbound/Outbound Workers to half of AppWorkers
    • Reduce the size of HLS and DASH segment storage buffers

    [Fixed]

    • Fix the problem that CloseWithState() may not return normally
    Source code(tar.gz)
    Source code(zip)
  • v0.12.4(Sep 9, 2021)

  • v0.12.3(Sep 7, 2021)

    [Added]

    • Added the <TcpForce> option to enforce WebRTC over TCP.
    • Added simulator for WebRTC performance measurement.
    • Added segmentation rule setting option in file recording.

    [Improved]

    • AES GCM has been applied to SRTP.
    • Improved Socket stability.
    • Reduced the number of unnecessary threads in the transcoding filter.

    [Changed]

    • Changed libsrtp version to v2.4.0

    [Fixed]

    • Fixed an issue that video timestamp could be miscalculated.
    • Fixed an issue caused by the addition of an invalid value to rtmp_flashver (#458) - Thank you! @mpisat
    Source code(tar.gz)
    Source code(zip)
  • v0.12.2(Aug 25, 2021)

    [Changed]

    • OvenMediaEngine's license changed from GPLv2 to GPLv3
    • Upgraded OpenSSL to v3.0.0-beta1
    • Changed the ffmpeg preset of the H.264 encoder from ultrafast to faster

    [Added]

    • Supports Hardware Encoding (Beta)
    • Supports AdmissionWebhooks (Beta)
    • Added Dockerfile,nv for Nvidia GPU
    • Supports WebM container in recording module

    [Improved]

    • HTTPClient supports TLS
    • Improved compatibility with some RTMP encoders
    • Apply nasm to vpx, x264 library (Added back what was missing in 0.12.1)
    • To improve server stability, forcibly terminate a session that is receiving very slowly for a long time
    • Improved compatibility with some RTMP servers in the RTMP push publisher

    [Fixed]

    • Fix crash when using SignedPolicy in HLS
    • Fix to parse id:[email protected] in RTSP URL
    • Fix OOM issue in transcoder when timestamp increases abnormally
    • Resolves the problem that macros do not work in the recording API
    • Resolves a crash problem when accessing thumbnail publisher with wrong URL
    • Fix to clean up the socket when the RTSP client is terminated
    • Improved performance by fixing an issue with sockets being over-queued
    Source code(tar.gz)
    Source code(zip)
  • v0.12.1(Jun 10, 2021)

    [Improved]

    • Improved WebRTC playback stability (#403)
    • Implemented HttpClient to support a variety of HTTP Methods

    [Fixed]

    • Fixed a problem that statistics totalConnection was not decremented correctly when viewers left (#374)
    • Fixed a compilation error on Ubuntu 20.10 (g++ 10.2.0) (#375)
    • Fixed a problem that SignedPolicy didn't work properly when WebRTC Signaling Port uses 443 (#378)
    • Fixed a problem that TLS didn't work for Thumbnail Publisher
    Source code(tar.gz)
    Source code(zip)
  • v0.12.0(May 20, 2021)

    [Added]

    • Added WebRTC Input
    • Added SRT Input
    • Added embedded DASH UTC Time server

    [Improved]

    • Improved the performance of Socket (PhysicalPort/ServerSocket/ClientSocket)
    • Implemented SignedPolicy for SRT/RTMP/WebRTC providers
    • Re-implemented RtspcProvider - RTSP sources can now be handled faster, with minimal overhead
    • Implemented split recording feature based on accumulated time
    • Implemented divided recording feature based on schedule
    • Modified to handle H.264 AVCC+AnnexB combined packet (#348)

    [Fixed]

    • Fixed a problem with multiple ICE ports for the same ufrag
    • Fixed simultaneous connection count/transmission statistics errors (#341)
    • Fixed a WebRTC playback issue in Safari browser (#356)
    • Fixed SRT connection problems (#355, #363)
    • Fixed IP restriction for SignedPolicy (#373)
    • Fixed a CORS problem when requesting thumbnails
    • Fixed a problem that recorded files were not played on iOS and macOS
    Source code(tar.gz)
    Source code(zip)
  • v0.11.3(Apr 14, 2021)

    [Fixed]

    • Fixed with ICE-CONTROLLED attribute.
    • Fixed a problem that occurs crash when DTLS packet is received before STUN binding request packet is received.

    [Changed]

    • Removed <UTCTiming> in DASH manifest to use addUTCTimingSource() in OvenPlayer (dash.js).
    Source code(tar.gz)
    Source code(zip)
  • v0.11.2(Mar 22, 2021)

    [Improved]

    • Improved provider/publisher to be enabled/disabled by the <Bind> setting.
    • Connection timeout stability has been improved.

    [Fixed]

    • The STUN client has fixed a problem that does not work.
    • Fixed an issue where the IcePort timeout setting did not work properly.
    • Fixed an issue with deadlock in the OvtPublisher.
    • Fixed an issue where the TURN/TCP server was not refreshed.
    • Fixed an issue that occurred when the socket was closed at the same time as the WebSocket sents ping.
    • Fixed an issue that caused crash if IcePort was deleted before initialization.
    Source code(tar.gz)
    Source code(zip)
  • v0.11.1(Mar 15, 2021)

    [Added]

    • For WebRTC over TCP, a TURN server is built in. Now, where UDP packet loss is high, you can stream it to WebRTC over TCP.

    [Improved]

    • Improved Socket performance. (especially TCP)
    • Improved compatibility with version 3.2.1 of dash.js.
    • Organized the structure of ICE related modules.

    [Fixed]

    • Fixed an issue where OvtProvider might refer to incorrect memory.
    • Fixed some memory leaks.
    • Fixed a compile issue. (#288)
    Source code(tar.gz)
    Source code(zip)
  • v0.11.0(Feb 10, 2021)

    [Added]

    • Added a REST API server (beta). You can now call the API to create an application, set up a profile, and so on. (See the API doc)
    • Added a Thumbnail publisher. This creates a thumbnail of the stream.
    • Added a File publisher for DVR functionality.
    • Added a RTMP Push publisher for re-transmission.
    • Added to support H.265. (This is an experimental feature, and you have to run the misc/prerequisites.sh before use H.265.)
    • Added RTCP/RTX/NACK to WebRTC.

    [Improved]

    • FEC/RTX has been improved so that it can be controlled from the settings.
    • Enhanced logging for stream termination.
    • Changed the delivery timing of Codec ExtraData
    • The Config module has been enhanced to be compatible with JSON.
    • External libraries have been updated. (FFmpeg: v4.3.1, OpenSSL: v1.1.1i, SRT: v1.4.2, H.265: v3.4)
    • Improved query string to be sent when RequestPullStream() is called by Orchestrator

    [Fixed]

    • Fixed a Wirescast RTMP transmission compatibility issue. (#217)
    • Fixed a SignedPolicy bug. (#252)
    Source code(tar.gz)
    Source code(zip)
  • v0.10.11(Jan 12, 2021)

    [Fixed]

    • Fixed a problem reading data size incorrectly in ff_h2645_extract_rbsp()
    • Fixed a problem that do not generate HLS chunk when using Origin-Edge structure (#248)
    • Fixed a problem that RTSP Pull doesn't work when using Origin-Edge structure (#246)
    • Fixed a crash problem that occurs when playing WebRTC in a lot of clients
    • Fixed a problem where the session count is not calculated correctly
    • Fixed a problem where HLS/DASH/CMAF statistics are not calculated correctly
    • Fixed a problem with terminating connection during HLS/DASH/CMAF playback
    Source code(tar.gz)
    Source code(zip)
  • v0.10.10(Dec 17, 2020)

    In version 0.10.10, bugs related to HLS and MPEG-DASH were reported in the Origin-Edge environment. If you are using Origin-Edge, do not use 0.10.10. This issue has been fixed in 0.10.11.

    [Changed]

    • Prevent multiple providers from generating the same stream name
    • Added name to threads
    • Improved StreamWorker performance on many streams
    • Analyzed and optimized source codes related to CPU and memory

    [Fixed]

    • Fixed a problem that fail to classify H.265 keyframes
    • Fixed a problem with DASH packetizer that might incorrectly parse H.264 packets (#159)
    • Fixed a problem where SIGSEGV occurs in AppWorker thread
    • Fixed memory leaks that occur when a session is forced to terminate by WebRTC timeout
    • Fixed a problem that might prevent the provider stream from shutting down neatly
    • Fixed a problem that cause SIGSEGV while shutting down the RTMP provider at server shutdown
    • Fixed CPU and memory not releasing after all streams are closed
    • Fixed a problem that H.264 encoder generates keyframes every 8 seconds
    • Fixed a cause of the increase in the queue size of MediaRouterStream
    Source code(tar.gz)
    Source code(zip)
Owner
AirenSoft
AirenSoft is a group of media technology experts.
AirenSoft
yangwebrtc is a self-developed rtc architecture supporting Webrtc/Srt/Rtmp, including a variety of video and audio codecs and processing, etc.

YangWebrtc Overview yangwebrtc是一个自主研发的支持Webrtc/Srt/Rtmp的rtc架构,包含多种视音频编解码和处理等。 支持视频会议、高清录播直播、直播互动等多种视音频应用。 可用于远程教育、远程医疗、指挥调度、安防监控、影视录播、协同办公、直播互动等多种行业应用

null 301 Aug 5, 2022
media server based on c++11, support webrtc/rtmp/httpflv/websocket flv

cpp_media_server A media server is writen by C++11, and the network io is writen by Boost.Asio. It support rtmp/httpflv/websocket(flv)/webrtc. preinst

Alex.CR 139 Jun 30, 2022
Even newer Custom Firmware for Xiaomi Cameras based on Hi3518ev200 Chipset. It includes free RTSP, ONVIF and other improvements based on the work by roleoroleo

Why this Yi-Hack-V5 firmware? The answer is simple: missing updates, RTSP and not based on the latest stock firmware (which features improvements and

null 315 Aug 11, 2022
Use rtsp protocol to push local H265 video encoding files

rtspServerH265 Use rtsp protocol to push local H265 video encoding files 项目介绍 C++11实现的RTSP服务器和推流器。主要完成对H265视频编码文件的RTSP推流 使用说明 1.编译并运行程序; 2.打开VLC软件,在媒体

codec2021 2 May 18, 2022
RTSP Wasm Player

RTSP Wasm Player Overview # RTSP WebSocket Proxy RTSP/Webcam/File > FFmpeg open > Packets > WebSocket # WS Wasm Player WebSocket > Packets > Wasm FFm

kuokuo 62 Jul 28, 2022
Smartstreaming is a high-performance and scalable streaming media server.

1. introduction Smartstreaming is a high-performance and scalable streaming media server. 2. design | io | Coroutine | | transport | tcp/udp/srt/quic

null 2 Jan 7, 2022
Pear - WebRTC Toolkit for IoT/Embedded Device

Pear is a WebRTC SDK written in C. The SDK aims to integrate IoT/Embedded device with WebRTC applications.

null 559 Aug 10, 2022
webrtc c++ library for mediasoup with full sfu c++ demo

项目说明: 本项目是基于mediasoup v3 版本 webrtc m84版本 的sfu的js版本修改成的c++版本,支持和js版本一样的完整demo功能,但是本项目是直接把worker进程代码集成 到了demo可以直接代码级别的调用,支持VC2019,xcode,CLion的开发环境,可以直接断

null 99 Aug 9, 2022
Yangwebrtc - Webrtc Libary for PC, non-google lib

MetaRTC(yangwebrtc) Overview MetaRTC(yangwebrtc)是一个自主研发的支持Webrtc/Srt/Rtmp的rtc架构,包含多种视音频编解码和处理等。 yangwebrtc为PC版本 metaRTC为嵌入式版本 https://github.com/metar

meta 301 Aug 5, 2022
Program for IP TV streaming on the network via HTTP

msd Rozhuk Ivan [email protected] 2011 - 2021 msd - Multi stream daemon. Program for organizing IP TV streaming on the network via HTTP. Licence BSD

rim 39 Jul 6, 2022
Hack to allow live streaming from wyze cameras to vlc or mpv on your desktop.

Wyze Cam Live Streaming This is a hack to allow live streaming from a wyze cam on your local network. Installation - New! The simplest fix for wyze ev

null 80 Jul 31, 2022
a simple example of video streaming with a ESP32 AI Thinker

esp32-video-streaming its a simple camera system that im trying to make for fun I want to make an async server but idk it doesnt works correctly and w

ranon rat 6 Mar 9, 2022
Video stabilization is a software-based approach in real-time to eliminating environmental effects (wind, heavy vehicle etc.) and enhance the visual performance that degrade video streaming quality.

Video Stabilization Contents General Info Installation To Do General Info Video stabilization is a software-based approach in real-time to eliminating

null 5 Mar 7, 2022
Console based Streaming Music Player [W.I.P]

?? quanta It's a command line music player that can streams same music to multiple devices, hence creating a surround sound system. Or just use it as

null 1 Jan 27, 2022
A UE4 plugin used ffmpeg library to record/publish game viewport output and in-game audio.

Streaming A UE4 plugin used ffmpeg library to record/publish game viewport output and in-game audio. GPL license beacuse used ffmpeg. Structures GameV

Luo Yu 3 Aug 3, 2022
FFmpeg Kit for applications. Supports Android, Flutter, iOS, macOS, React Native and tvOS. Supersedes MobileFFmpeg, flutter_ffmpeg and react-native-ffmpeg.

FFmpeg Kit for applications. Supports Android, Flutter, iOS, macOS, React Native and tvOS. Supersedes MobileFFmpeg, flutter_ffmpeg and react-native-ffmpeg.

Taner Şener 1.6k Aug 8, 2022
PowerVS is a standalone broadcast video server based on ffmpeg

PowerVS PowerVS is a standalone broadcast video server based on ffmpeg ?? Table of Contents About Getting Started Running the tests Usage Development

null 3 Mar 17, 2022
A pure C linux MJPEG over HTTP server

mjpeg2http A pure C linux MJPEG over HTTP server Summary mjpeg2http is a minimalistic server primarily targeted to run on embedded computers, like rou

null 54 Apr 21, 2022
SRS is a simple, high efficiency and realtime video server, supports RTMP/WebRTC/HLS/HTTP-FLV/SRT/GB28181.

SRS is a simple, high efficiency and realtime video server, supports RTMP/WebRTC/HLS/HTTP-FLV/SRT/GB28181.

ossrs 18.9k Aug 14, 2022
yangwebrtc is a self-developed rtc architecture supporting Webrtc/Srt/Rtmp, including a variety of video and audio codecs and processing, etc.

YangWebrtc Overview yangwebrtc是一个自主研发的支持Webrtc/Srt/Rtmp的rtc架构,包含多种视音频编解码和处理等。 支持视频会议、高清录播直播、直播互动等多种视音频应用。 可用于远程教育、远程医疗、指挥调度、安防监控、影视录播、协同办公、直播互动等多种行业应用

null 301 Aug 5, 2022
A low-latency LRU approximation cache in C++ using CLOCK second-chance algorithm. Multi level cache too. Up to 2.5 billion lookups per second.

LruClockCache Low-latency LRU approximation cache in C++ using CLOCK second-chance algorithm. (see wiki for details) using MyKeyType = std::string; us

Hüseyin Tuğrul BÜYÜKIŞIK 28 Aug 5, 2022
media server based on c++11, support webrtc/rtmp/httpflv/websocket flv

cpp_media_server A media server is writen by C++11, and the network io is writen by Boost.Asio. It support rtmp/httpflv/websocket(flv)/webrtc. preinst

Alex.CR 139 Jun 30, 2022
StarRocks is a next-gen sub-second MPP database for full analysis senarios, including multi-dimensional analytics, real-time analytics and ad-hoc query, formerly known as DorisDB.

StarRocks is a next-gen sub-second MPP database for full analysis senarios, including multi-dimensional analytics, real-time analytics and ad-hoc query, formerly known as DorisDB.

StarRocks 3.1k Aug 10, 2022
Simple useful interoperability tests for WebRTC libraries. If you are a WebRTC library developer we'd love to include you!

Overview This project aims to be a convenient location for WebRTC library developers to perform interoperability tests. Who can Participate The projec

Aaron Clauson 97 Aug 11, 2022
GlueGD is a mod loader for Geometry Dash that does not require a modification to any existing Geometry Dash files or an external injector or launcher.

GlueGD is a mod loader for Geometry Dash that does not require a modification to any existing Geometry Dash files or an external injector or la

Aly Cerruti 9 Apr 10, 2022
LAppS - Lua Application Server for micro-services with default communication over WebSockets. The fastest and most vertically scalable WebSockets server implementation ever. Low latency C++ <-> Lua stack roundtrip.

LAppS - Lua Application Server This is an attempt to provide very easy to use Lua Application Server working over WebSockets protocol (RFC 6455). LApp

null 47 Apr 25, 2022
Memgraph is a streaming graph application platform that helps you wrangle your streaming data, build sophisticated models that you can query in real-time, and develop graph applications.

Memgraph is a streaming graph application platform that helps you wrangle your streaming data, build sophisticated models that you can query in real-time, and develop graph applications.

Memgraph 465 Aug 8, 2022
Even newer Custom Firmware for Xiaomi Cameras based on Hi3518ev200 Chipset. It includes free RTSP, ONVIF and other improvements based on the work by roleoroleo

Why this Yi-Hack-V5 firmware? The answer is simple: missing updates, RTSP and not based on the latest stock firmware (which features improvements and

null 315 Aug 11, 2022
Use rtsp protocol to push local H265 video encoding files

rtspServerH265 Use rtsp protocol to push local H265 video encoding files 项目介绍 C++11实现的RTSP服务器和推流器。主要完成对H265视频编码文件的RTSP推流 使用说明 1.编译并运行程序; 2.打开VLC软件,在媒体

codec2021 2 May 18, 2022