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.

Comments
  • High memory usage after upgrading to 0.14.11

    High memory usage after upgrading to 0.14.11

    Describe the bug OME is using way more memory than before, after upgrading from 0.14.5 to 0.14.11

    In this screenshot you can see memory usage is stable in 0.14.5 then it jumps after upgrading to 0.14.11

    https://i.imgur.com/XIzdRgh.png

    Is this normal behavior with the newer version? Is there any config we can change to reduce memory usage?

    To Reproduce Steps to reproduce the behavior:

    1. Set Server.xml as follows https://gist.github.com/hernanrz/d1d983eb0edd94f4ad3a5cffe66d946e

    Expected behavior Stable memory usage, like we see in 0.14.5

    Server (please complete the following information):

    • OS: Ubuntu 20.04 with Docker Engine 20.10
    • OvenMediaEngine Version: 0.14.11
    bug 
    opened by hernanrz 99
  • 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 42
  • 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 34
  • 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
  • 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
  • SIGSEGV on latest OME

    SIGSEGV on latest OME

    Describe the bug Our OME instance (0.14.16) crashed with a SIGSEGV recently

    Using docker, our dockerfile and server.xml

    https://gist.github.com/naanlizard/152b7e22c7a9a043ce88ba8edd61b9bb

    Logs This log is only from a little before the crash. omecrashred.txt

    Here is the full log, it's quite large omecrashred2.txt.gz

    And the dump crash_20221128.dump.txt

    bug 
    opened by naanlizard 3
  • PPV Scenario - How to handle ?

    PPV Scenario - How to handle ?

    Hello, I hope you are well, I would like to congratulate you for the huge work you are doing, frankly I tried this week end several solutions: wowza, antmedia, red5 and I must say that despite the fact that these solutions are commercial, they are less good than your 100% open source solution that I find really well documented and simple to deploy with interesting features around WebRTC.

    I need a solution for a PPV platform with an interactive livestream (chat) hence the need to start on a solution based on Webrtc/LL Hls.

    Scenario: A livestream is launched, several users are connected, then a viewer among them decides to start a private stream, all those who are connected are ejected from the stream except the one who starts the paying session, then some users have the possibility to join the private session, if the users who pay disconnect, the stream becomes public again.

    On the client side it's easy to manage but solution on the server side is needed to prevent smart guys to access the stream.

    How to manage this in your opinion? I could pay if it requires additional development.

    Thanks in advance

    help 
    opened by kaizerdev 2
  • The API for the PATCH, behaves as if it were a simple GET.

    The API for the PATCH, behaves as if it were a simple GET.

    Describe the bug The API for PATCH 'APPLICATION' and 'OUTPUT-PROFILE', behaves as if it were a simple GET.

    To Reproduce Steps to reproduce the behavior:

    1. Through the API, POST a new VIRTUAL HOST.
    2. Through the API, POST a new APPLICATION.
    3. Through the API, PATCH the previous APPLICATION.
    4. OvenMediaEngine returns a response that appears to be a simple GET of the APPLICATION or OUTPUT-PROFILE.

    Expected behavior I expected OvenMediaEngine to PATCH the APPLICATION.

    Server (please complete the following information):

    • OS: [Ubuntu 20.04]
    • OvenMediaEngine Version: [master]
    • Branch: [master]

    Additional context The problem is caused in this statement: if (HTTP_CHECK_METHOD(request_info.method, request->GetMethod())).

    The statement:

     enum class Method : uint16_t
    	{
    		Unknown = 0x0000,
    
    		Get = 0x0001,
    		Head = 0x0002,
    		Post = 0x0004,
    		Put = 0x0008,
    		Delete = 0x0010,
    		Connect = 0x0020,
    		Options = 0x0040,
    		Trace = 0x0080,
    
    		Patch = 0x0100,
    
    		All = Get | Head | Post | Put | Delete | Connect | Options | Trace | Patch
    	};
    

    claims Method is 'uint16_t', but the macro: #define HTTP_CHECK_METHOD(method, flag) OV_CHECK_FLAG((uint8_t)method, (uint8_t)flag)

    cast to uint8_t, a clear overflow.

    With this simple patch:

    --- a/src/projects/modules/http/http_private.h
    +++ b/src/projects/modules/http/http_private.h
    @@ -10,4 +10,4 @@
     
     #define OV_LOG_TAG                          "HttpServer"
     
    -#define HTTP_CHECK_METHOD(method, flag)     OV_CHECK_FLAG((uint8_t)method, (uint8_t)flag)
    +#define HTTP_CHECK_METHOD(method, flag)     OV_CHECK_FLAG((uint16_t)method, (uint16_t)flag)"
    

    everything is alright.

    Many thanks in advance.

    bug 
    opened by trapasso 6
  • RTMP Client

    RTMP Client

    Hi guys,

    I would like to have the option to pull RTMP streams along with WEBRTC/HLS streams I know that it is possible to push RTMP to a different server, but this will create latency and a need for a different server. Can RTMP packets be pulled or, if not, do you intend to add support, and when?

    feature 
    opened by AdamKraif 4
  • Pls Help TLS configuration not working.

    Pls Help TLS configuration not working.

    #Those in BOLD are the one i edited #Certificates and Key are uploaded to my server #TLS of my website is working perfectly

    I can Stream and watch without TLS (http and ws)

    === edited server.xml ===

    		<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>**mydomain.live**</Name>
    			</Names>
    			<!--
    			<TLS>
    				<CertPath>**etc/encryption/certificate.crt**</CertPath>
    				<KeyPath>**etc/encryption/server.key**</KeyPath>
    				<ChainCertPath>**etc/encryption/ca_bundle.crt**</ChainCertPath>
    			</TLS>
    			-->
    		</Host>
    

    === error logs== [2022-11-19 20:23:33.117] E [SPRtcSig-T3334:105209] HttpServer | https_server.cpp:95 | Could not handle connection event: there is no certificate [2022-11-19 20:23:34.678] C [SPRtcSig-T3334:105209] HttpServer | http_server.cpp:201 | Could not find HTTP connection : 4 / size(0) [2022-11-19 20:23:34.822] E [SPRtcSig-T3334:105209] HttpServer | https_server.cpp:95 | Could not handle connection event: there is no certificate [2022-11-19 20:24:04.824] C [SPRtcSig-T3334:105209] HttpServer | http_server.cpp:201 | Could not find HTTP connection : 4 / size(0) [2022-11-19 20:24:04.870] E [SPRtcSig-T3334:105209] HttpServer | https_server.cpp:95 | Could not handle connection event: there is no certificate

    help 
    opened by popseye 5
  • High CPU usage for ~10 seconds during RTSP pulled stream establishment and GPU hardware acceleration turned on

    High CPU usage for ~10 seconds during RTSP pulled stream establishment and GPU hardware acceleration turned on

    Describe the bug I am getting CPU utilisation going to 100% during the initial establishment of a streamed connection to an RTSP pulled camera source with hardware acceleration enabled. This seams to last for around ~10 seconds before returning to expected levels (~15%). The establishment of the camera stream is also noticeably quite slow as a result in OvenPlayer and sometimes fails to play at all (this is because OME is timing out due to execution time starvation caused by the excessive CPU load).

    Using top -H -p as recommended in the performance tuning section, I can see the Dech264NV Thread is maxing out to 100% before dropping down to about 7% where it then consistently remains while the stream plays. Using nvidea-smi, I can see the GPU usage never gets above 10% and seems to drop to 0% while the CPU is at 100% during the initial 10 second period.

    If I turn off GPU hardware acceleration, the 100% cpu usage does not occur and the stream establishes and plays in OvenPlayer pretty quickly (as expected in around 2 seconds). CPU usage is around 32% for Dech264.

    As previously reported, earlier versions of OME don't exhibit the 100% cpu with hw accel enabled.

    To Reproduce Enable GPU hardware acceleration and view a WebRTC stream via OvenPlayer for a RTSP pulled source (IP camera in my case)

    Expected behavior CPU usage doe not max out to 100% during inital 10 second period.

    Server (please complete the following information):

    • OS: Ububtu 18 LTS
    • OvenMediaEngine Version: v0.14.14
    • Branch: master

    Player (please complete the following information):

    • Device: Macbook
    • OS: MacOS Mavericks
    • Browser Chrome
    • Version 106

    Additional context OvenPlayer to view stream on another device than OvenMediaEngine server.

    Output from nvidia-smi: `` +-----------------------------------------------------------------------------+ | NVIDIA-SMI 470.141.03 Driver Version: 470.141.03 CUDA Version: 11.4 | |-------------------------------+----------------------+----------------------+ | GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | | | | MIG M. | |===============================+======================+======================| | 0 NVIDIA GeForce ... Off | 00000000:01:00.0 On | N/A | | 0% 55C P2 21W / 100W | 836MiB / 3910MiB | 8% Default | | | | N/A | +-------------------------------+----------------------+----------------------+

    +-----------------------------------------------------------------------------+ | Processes: | | GPU GI CI PID Type Process name GPU Memory | | ID ID Usage | |=============================================================================| | 0 N/A N/A 1234 G /usr/lib/xorg/Xorg 18MiB | | 0 N/A N/A 1339 G /usr/bin/gnome-shell 74MiB | | 0 N/A N/A 1712 G /usr/lib/xorg/Xorg 259MiB | | 0 N/A N/A 1845 G /usr/bin/gnome-shell 78MiB | | 0 N/A N/A 2851 G ...794304095522014205,131072 34MiB | | 0 N/A N/A 7612 G ...RendererForSitePerProcess 9MiB | | 0 N/A N/A 8410 C /usr/bin/OvenMediaEngine 354MiB | +-----------------------------------------------------------------------------+ ``

    bug 
    opened by mrw-s 5
Releases(v0.14.16)
  • v0.14.16(Nov 23, 2022)

    [Compatibility]

    • Compatible with dependencies(prerequisites.sh) installed in 0.14.9 or later

      • Recommendation : Update to OpenSSL 3.0.7 by rerunning prerequisites.sh to fix the security issue.
      • Recommendation2 : jemalloc is used again. Run prerequisites.sh to update to jemalloc 5.3.0.
    • Compatible with version 0.14.8 or higher of Origin or Edge

    • Compatible with Server.xml used in 0.12.6 or later

    [Added]

    • Added various macros to <OutputPath> of LLHLS Dump

    [Changed]

    • Changed the policy of <Encodes><Video><ThreadCount>
      • -1: automatic thread count of OME / 0: automatic thread count of codec / 1 or more: same as before
    • Changed to allow even certain parts in the RTMP Sequence Header that violate the standard
    • Changed to use jemalloc again

    [Fixed]

    • Fixed an issue where memory continued to grow when a long keyframe interval stream was input to LLHLS.
    Source code(tar.gz)
    Source code(zip)
  • v0.14.15(Nov 14, 2022)

    [Compatibility]

    Compatible with dependencies(prerequisites.sh) installed in 0.14.9 or later

    • Recommendation : Update to OpenSSL 3.0.7 by rerunning prerequisites.sh to fix the security issue.

    Compatible with version 0.14.8 or higher of Origin or Edge Compatible with Server.xml used in 0.12.6 or later

    [Added]

    • Added setting <Publishers><LLHLS><CacheControl>

    [Improved]

    • Improved LLHLS stability
    • Improved LLHLS playlist creation efficiency

    [Changed]

    • Changed HTTP server to respond 404 instead of 500 to unknown file request
    • Changed so that the LLHLS segment can be accessed for a certain period of time even after being pushed out of the chunklist
    • Changed <ThreadCount> 0 to use encoder's automatic thread count feature

    [Fixed]

    • Fixed OriginMapStore not working
    • Fixed an issue where the keyframe interval was inaccurate
    Source code(tar.gz)
    Source code(zip)
  • v0.14.14(Oct 27, 2022)

    [Compatibility]

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

    [Added]

    • Added PART_HOLD_BACK setting to LLHLS

    [Fixed]

    • Fixed the problem that the stream pulled by RTSP Pull is not transcoded
    • Fixed LLHLS Dump failing under certain conditions
    Source code(tar.gz)
    Source code(zip)
  • v0.14.13(Oct 21, 2022)

    [Compatibility]

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

    [Fixed]

    • Fixed RTSP to ignore and start even if there are unsupported media types
    • Fixed the problem that LLHLS does not start when a stream is input with RTSP pull
    • Fixed LLHLS hint appearing in the wrong place
    Source code(tar.gz)
    Source code(zip)
  • v0.14.12(Oct 18, 2022)

    [Compatibility]

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

    [Fixed]

    • Fixed an issue where the memory usage of LLHLS streams that failed to start continued to increase
    • Fixed an issue where memory usage continues to increase even when the LLHLS dump does not work

    [Improved]

    • #EXT-X-PROGRAM-DATE-TIME time more accurately to be closer to the wall clock
    • Added Redhat Enterprise 8 version to installation script
    Source code(tar.gz)
    Source code(zip)
  • v0.14.11(Oct 6, 2022)

    [Compatibility]

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

    [Added]

    • Added function to dump LLHLS live to file for VoD

    [Fixed]

    • Fixed LLHLS sending files from different streams

    [Improved]

    • Improved LLHLS segment length calculation method
    Source code(tar.gz)
    Source code(zip)
  • v0.14.10(Sep 5, 2022)

    [Compatibility]

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

    [Fixed]

    • Fixed a possibility that SIGSEGV could occur when requesting play to a non-existent app in LLHLS
    Source code(tar.gz)
    Source code(zip)
  • v0.14.9(Aug 29, 2022)

    [Compatibility]

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

    [Added]

    [Fixed]

    • Removed limit(cutoff) of audio frequency of OPUS

    [Changed]

    • Changed OpenH264 version to 2.3.0
    Source code(tar.gz)
    Source code(zip)
  • 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)
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 329 Nov 30, 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 359 Nov 24, 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 3 Oct 12, 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 81 Nov 27, 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 573 Nov 26, 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 119 Nov 25, 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 328 Nov 23, 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 42 Nov 8, 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 84 Oct 25, 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 6 Sep 23, 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 12 Nov 17, 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 55 Sep 24, 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 20k Nov 25, 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 329 Nov 30, 2022