Jump to content
  • 0

Single AWS Marketplace EC2 Instance behind a Load Balancer. What needs to be done to make that work?


Robert Berger
 Share

Question

I'm not yet setting up a cluster, but I want to have a single (for now) antmedia server in a private subnet in AWS that is  fronted by an ALB. I presume this is possible?

Right now I have the ALB set up forwarding port 80, 443, 5080 and 5443 to port 5080 on the antmedia server. I can access the dashboard, start a live event on the dashboard, and I can view the pages for  https://antmedia-000.qa.omnyway.net/WebRTCAppEE/index.html and https://antmedia-000.qa.omnyway.net:5443//WebRTCAppEE/player.html.

But when I click on the "Start Publishing" nothing happens and if I click on the "Start Playing" it says ""no_stream_exist"".

I presume that the ALB isn't quit right or some other ports need to get in? It is hooked up with a NAT Gateway so the instance can talk out.

Here is a snippit of logs from when I try to start publishing:
2020-05-15 22:04:21,966 [webrtc-publish-stream1-0] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - running stop operations in executor for stream: stream1 Received audio frame: 0  Processed audio frame: 0Received video frame: 0  Processed video frame: 0
2020-05-15 22:04:21,966 [webrtc-publish-stream1-0] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - Publish Stats StreamId: stream1 TransferedByte: 0 Stream Duration: 1589580261966 Bitrate: 0 Source IP: null User-Agent: N/A
2020-05-15 22:04:21,973 [vert.x-worker-thread-15] INFO  i.a.e.adaptive.StreamAdaptor - Recording set to false in streamadaptor: 1228621405 for stream: stream1 stopping scheduler job id: 44
2020-05-15 22:04:21,974 [vert.x-worker-thread-15] INFO  i.a.e.adaptive.StreamAdaptor - Flushing video encoder:SFUForwarder for stream adaptor:1228621405 stream id:stream1
2020-05-15 22:04:21,974 [vert.x-worker-thread-15] INFO  i.a.e.adaptive.StreamAdaptor - Flushing audio encoder:aac for stream adaptor:1228621405 stream id:stream1
2020-05-15 22:04:21,974 [vert.x-worker-thread-15] INFO  i.a.e.adaptive.StreamAdaptor - Flushing audio encoder:libopus for stream adaptor:1228621405 stream id:stream1
2020-05-15 22:04:21,974 [vert.x-worker-thread-15] INFO  i.a.enterprise.webrtc.WebRTCAdaptor - unregistering stream1 muxer with 0p and codec: H264 from webrtc adaptor
2020-05-15 22:04:21,975 [vert.x-worker-thread-15] INFO  i.a.e.adaptive.SFUForwarder - Video codec writing trailer name: SFUForwarder height:480 for stream:stream1
2020-05-15 22:04:21,975 [vert.x-worker-thread-15] INFO  i.a.e.adaptive.SFUForwarder - Total processing time 0 ms Average processing time 0 ms per frame for stream:stream1
2020-05-15 22:04:21,975 [vert.x-worker-thread-15] INFO  i.a.enterprise.adaptive.AACEncoder - writing trailer codec name: aac bitrate:96000 for stream:stream1
2020-05-15 22:04:21,975 [vert.x-worker-thread-15] INFO  i.a.enterprise.adaptive.OpusEncoder - writing trailer codec name: libopus bitrate:96000 for stream:stream1
2020-05-15 22:04:21,975 [vert.x-worker-thread-15] INFO  i.a.enterprise.adaptive.OpusEncoder - Total processing time 0, Average processing time 0 ms per frame on average for stream:stream1
2020-05-15 22:04:21,975 [vert.x-worker-thread-15] INFO  i.a.e.adaptive.StreamAdaptor - Average thread entrance interval 9ms for stream: stream1
2020-05-15 22:04:21,975 [vert.x-worker-thread-15] INFO  i.a.e.adaptive.StreamAdaptor - Leaving streamadaptor: 1228621405 for stream: stream1
2020-05-15 22:04:21,976 [network_thread - 22806] INFO  org.webrtc.Logging - Tag:WebRtcAudioTrackExternal - Message:GetPlayoutUnderrunCount
2020-05-15 22:04:21,976 [network_thread - 22806] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - onIceConnectionChange CLOSED for streamId: stream1 hash:1362664335
2020-05-15 22:04:21,976 [network_thread - 22806] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - entering stop() for stream1
2020-05-15 22:04:21,976 [network_thread - 22806] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - Encoder is already stopped, returning for stream1
2020-05-15 22:04:21,977 [network_thread - 22806] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - stopping playout for stream stream1
2020-05-15 22:04:21,988 [webrtc-publish-stream1-0] INFO  i.a.e.w.WebRTCPublishStreamInfoListener - deleting zombi stream stream1
2020-05-15 22:04:21,997 [webrtc-publish-stream1-0] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - leaving stop() for stream1
2020-05-15 22:05:40,685 [http-nio2-0.0.0.0-5080-exec-7] INFO  i.a.e.w.WebSocketEnterpriseHandler - received token:null
2020-05-15 22:05:40,696 [http-nio2-0.0.0.0-5080-exec-7] INFO  i.a.e.w.WebSocketEnterpriseHandler - Adding new stream stream1 to session a
2020-05-15 22:05:40,697 [http-nio2-0.0.0.0-5080-exec-7] INFO  i.a.e.adaptive.EncoderAdaptor - ServerSettings exist io.antmedia.settings.ServerSettings@74f680f4
2020-05-15 22:05:40,699 [webrtc-publish-stream1-0] INFO  org.webrtc.Logging - Tag:NativeLibrary - Message:Native library has already been loaded.
2020-05-15 22:05:40,699 [webrtc-publish-stream1-0] INFO  org.webrtc.Logging - Tag:PeerConnectionFactory - Message:PeerConnectionFactory was initialized without an injected Loggable. Any existing Loggable will be deleted.
2020-05-15 22:05:40,699 [webrtc-publish-stream1-0] INFO  org.webrtc.Logging - Tag:JavaAudioDeviceModule - Message:createAudioDeviceModule
2020-05-15 22:05:40,699 [webrtc-publish-stream1-0] INFO  org.webrtc.Logging - Tag:JavaAudioDeviceModule - Message:HW NS will not be used.
2020-05-15 22:05:40,699 [webrtc-publish-stream1-0] INFO  org.webrtc.Logging - Tag:JavaAudioDeviceModule - Message:HW AEC will not be used.
2020-05-15 22:05:40,918 [http-nio2-0.0.0.0-5080-exec-4] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - before prepare for stream1 hash: 62207261
2020-05-15 22:05:40,918 [http-nio2-0.0.0.0-5080-exec-4] INFO  io.antmedia.muxer.HLSMuxer - hls time: 2, hls list size: 5
2020-05-15 22:05:40,919 [http-nio2-0.0.0.0-5080-exec-4] INFO  i.a.e.adaptive.StreamAdaptor - Stream adaptor scheduled job id 46 stream adaptor:399037933 for stream:stream1
2020-05-15 22:05:40,919 [http-nio2-0.0.0.0-5080-exec-4] INFO  i.a.enterprise.adaptive.AACEncoder - name : aac 
2020-05-15 22:05:40,920 [http-nio2-0.0.0.0-5080-exec-4] INFO  io.antmedia.muxer.HLSMuxer - copy codec parameter from context 0 stream index: 0
2020-05-15 22:05:40,920 [http-nio2-0.0.0.0-5080-exec-4] INFO  i.a.enterprise.adaptive.OpusEncoder - encoder name libopus source sample rate 44100, channel layout 3
2020-05-15 22:05:40,920 [http-nio2-0.0.0.0-5080-exec-4] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - after prepare for stream1 hash:62207261
2020-05-15 22:05:40,920 [http-nio2-0.0.0.0-5080-exec-4] WARN  i.a.e.adaptive.WebRTCEncoderAdaptor - Ice candidate will be added later for stream Id stream1. Remote Description not set
2020-05-15 22:05:40,920 [http-nio2-0.0.0.0-5080-exec-4] WARN  i.a.e.adaptive.WebRTCEncoderAdaptor - Ice candidate will be added later for stream Id stream1. Remote Description not set
2020-05-15 22:05:40,920 [http-nio2-0.0.0.0-5080-exec-4] WARN  i.a.e.adaptive.WebRTCEncoderAdaptor - Ice candidate will be added later for stream Id stream1. Remote Description not set
2020-05-15 22:05:40,921 [http-nio2-0.0.0.0-5080-exec-4] WARN  i.a.e.adaptive.WebRTCEncoderAdaptor - Ice candidate will be added later for stream Id stream1. Remote Description not set
2020-05-15 22:05:40,921 [http-nio2-0.0.0.0-5080-exec-4] WARN  i.a.e.adaptive.WebRTCEncoderAdaptor - Ice candidate will be added later for stream Id stream1. Remote Description not set
2020-05-15 22:05:40,923 [network_thread - 22821] INFO  i.a.e.adaptive.WebRTCVideoForwarder - create decoder for name:H264 and params: {level-asymmetry-allowed=1, packetization-mode=1, profile-level-id=42e01f}
2020-05-15 22:05:40,923 [network_thread - 22821] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - onAddTrack for streamId stream1
2020-05-15 22:05:40,923 [network_thread - 22821] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - onAddTrack for streamId stream1
2020-05-15 22:05:40,923 [network_thread - 22821] INFO  i.a.e.adaptive.WebRTCVideoForwarder - onAddStream for streamId stream1
2020-05-15 22:05:40,923 [webrtc-publish-stream1-0] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - onSetSuccess signalling thread for stream1 ice candidate queue size: 5
2020-05-15 22:05:40,923 [webrtc-publish-stream1-0] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - onSetSuccess iceCandidateQueue for stream1
2020-05-15 22:05:40,923 [webrtc-publish-stream1-0] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - onSetSuccess iceCandidateQueue for stream1
2020-05-15 22:05:40,923 [webrtc-publish-stream1-0] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - onSetSuccess iceCandidateQueue for stream1
2020-05-15 22:05:40,923 [webrtc-publish-stream1-0] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - onSetSuccess iceCandidateQueue for stream1
2020-05-15 22:05:40,923 [webrtc-publish-stream1-0] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - onSetSuccess iceCandidateQueue for stream1
2020-05-15 22:05:40,924 [network_thread - 22821] INFO  org.webrtc.Logging - Tag:WebRtcAudioTrackExternal - Message:initPlayout(sampleRate=16000, channels=1, bufferSizeFactor=1.0)
2020-05-15 22:05:40,924 [network_thread - 22821] INFO  org.webrtc.Logging - Tag:WebRtcAudioTrackExternal - Message:byteBuffer.capacity: 320
2020-05-15 22:05:40,924 [network_thread - 22821] INFO  org.webrtc.Logging - Tag:WebRtcAudioTrackExternal - Message:startPlayout(sampleRate=16000, channels=1)
2020-05-15 22:05:40,924 [network_thread - 22821] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - starting playout for stream stream1
2020-05-15 22:05:40,925 [network_thread - 22821] INFO  i.a.e.adaptive.WebRTCVideoForwarder - create decoder for name:H264 and params: {level-asymmetry-allowed=1, packetization-mode=1, profile-level-id=42e01f}
2020-05-15 22:05:40,925 [network_thread - 22821] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - onIceConnectionChange CHECKING for streamId: stream1 hash:62207261
2020-05-15 22:05:40,927 [network_thread - 22821] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - onIceCandidate: 0:0:candidate:1696137277 1 udp 2122260223 10.31.254.120 60867 typ host generation 0 ufrag Vyke network-id 1 network-cost 50::UNKNOWN stream id: stream1
2020-05-15 22:05:40,940 [network_thread - 22821] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - onIceCandidate: 0:0:candidate:3830515337 1 udp 1686052607 34.197.184.115 60058 typ srflx raddr 10.31.254.120 rport 60867 generation 0 ufrag Vyke network-id 1 network-cost 50:stun:209.85.144.127:19302:UNKNOWN stream id: stream1
2020-05-15 22:05:41,026 [network_thread - 22821] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - onIceCandidate: 0:0:candidate:731577549 1 tcp 1518280447 10.31.254.120 42743 typ host tcptype passive generation 0 ufrag Vyke network-id 1 network-cost 50::UNKNOWN stream id: stream1
2020-05-15 22:05:41,420 [webrtc-publish-stream1-0] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - Waiting for encoder to be ready for stream1 hash:62207261
2020-05-15 22:05:41,920 [webrtc-publish-stream1-0] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - Waiting for encoder to be ready for stream1 hash:62207261
2020-05-15 22:05:42,420 [webrtc-publish-stream1-0] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - Waiting for encoder to be ready for stream1 hash:62207261
2020-05-15 22:05:42,920 [webrtc-publish-stream1-0] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - Waiting for encoder to be ready for stream1 hash:62207261
2020-05-15 22:05:43,420 [webrtc-publish-stream1-0] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - Waiting for encoder to be ready for stream1 hash:62207261
2020-05-15 22:05:43,920 [webrtc-publish-stream1-0] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - Waiting for encoder to be ready for stream1 hash:62207261
2020-05-15 22:05:44,420 [webrtc-publish-stream1-0] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - Waiting for encoder to be ready for stream1 hash:62207261
2020-05-15 22:05:44,920 [webrtc-publish-stream1-0] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - Waiting for encoder to be ready for stream1 hash:62207261
2020-05-15 22:05:45,420 [webrtc-publish-stream1-0] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - Waiting for encoder to be ready for stream1 hash:62207261
2020-05-15 22:05:45,920 [webrtc-publish-stream1-0] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - Waiting for encoder to be ready for stream1 hash:62207261
2020-05-15 22:05:46,420 [webrtc-publish-stream1-0] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - Waiting for encoder to be ready for stream1 hash:62207261
2020-05-15 22:05:46,920 [webrtc-publish-stream1-0] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - Waiting for encoder to be ready for stream1 hash:62207261
2020-05-15 22:05:47,420 [webrtc-publish-stream1-0] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - Waiting for encoder to be ready for stream1 hash:62207261
2020-05-15 22:05:47,920 [webrtc-publish-stream1-0] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - Waiting for encoder to be ready for stream1 hash:62207261
2020-05-15 22:05:48,420 [webrtc-publish-stream1-0] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - Waiting for encoder to be ready for stream1 hash:62207261
2020-05-15 22:05:48,920 [webrtc-publish-stream1-0] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - Waiting for encoder to be ready for stream1 hash:62207261
2020-05-15 22:05:49,420 [webrtc-publish-stream1-0] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - Waiting for encoder to be ready for stream1 hash:62207261
2020-05-15 22:05:49,920 [webrtc-publish-stream1-0] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - Waiting for encoder to be ready for stream1 hash:62207261
2020-05-15 22:05:50,420 [webrtc-publish-stream1-0] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - Waiting for encoder to be ready for stream1 hash:62207261
2020-05-15 22:05:50,920 [webrtc-publish-stream1-0] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - Waiting for encoder to be ready for stream1 hash:62207261
2020-05-15 22:05:51,420 [webrtc-publish-stream1-0] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - Waiting for encoder to be ready for stream1 hash:62207261
2020-05-15 22:05:51,920 [webrtc-publish-stream1-0] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - Waiting for encoder to be ready for stream1 hash:62207261
2020-05-15 22:05:52,420 [webrtc-publish-stream1-0] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - Waiting for encoder to be ready for stream1 hash:62207261
2020-05-15 22:05:52,920 [webrtc-publish-stream1-0] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - Waiting for encoder to be ready for stream1 hash:62207261
2020-05-15 22:05:53,420 [webrtc-publish-stream1-0] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - Waiting for encoder to be ready for stream1 hash:62207261
2020-05-15 22:05:53,920 [webrtc-publish-stream1-0] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - Waiting for encoder to be ready for stream1 hash:62207261
2020-05-15 22:05:54,420 [webrtc-publish-stream1-0] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - Waiting for encoder to be ready for stream1 hash:62207261
2020-05-15 22:05:54,920 [webrtc-publish-stream1-0] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - Waiting for encoder to be ready for stream1 hash:62207261
2020-05-15 22:05:55,420 [webrtc-publish-stream1-0] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - Waiting for encoder to be ready for stream1 hash:62207261
2020-05-15 22:05:55,920 [webrtc-publish-stream1-0] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - Waiting for encoder to be ready for stream1 hash:62207261
2020-05-15 22:05:55,985 [network_thread - 22821] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - onIceConnectionChange FAILED for streamId: stream1 hash:62207261
2020-05-15 22:05:55,985 [network_thread - 22821] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - entering stop() for stream1
2020-05-15 22:05:55,985 [webrtc-publish-stream1-0] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - running stop operations in executor for stream: stream1 Received audio frame: 0  Processed audio frame: 0Received video frame: 0  Processed video frame: 0
2020-05-15 22:05:55,985 [webrtc-publish-stream1-0] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - Publish Stats StreamId: stream1 TransferedByte: 0 Stream Duration: 1589580355985 Bitrate: 0 Source IP: null User-Agent: N/A
2020-05-15 22:05:55,989 [vert.x-worker-thread-2] INFO  i.a.e.adaptive.StreamAdaptor - Recording set to false in streamadaptor: 399037933 for stream: stream1 stopping scheduler job id: 46
2020-05-15 22:05:55,989 [vert.x-worker-thread-2] INFO  i.a.e.adaptive.StreamAdaptor - Flushing video encoder:SFUForwarder for stream adaptor:399037933 stream id:stream1
2020-05-15 22:05:55,989 [vert.x-worker-thread-2] INFO  i.a.e.adaptive.StreamAdaptor - Flushing audio encoder:aac for stream adaptor:399037933 stream id:stream1
2020-05-15 22:05:55,989 [vert.x-worker-thread-2] INFO  i.a.e.adaptive.StreamAdaptor - Flushing audio encoder:libopus for stream adaptor:399037933 stream id:stream1
2020-05-15 22:05:55,989 [vert.x-worker-thread-2] INFO  i.a.enterprise.webrtc.WebRTCAdaptor - unregistering stream1 muxer with 0p and codec: H264 from webrtc adaptor
2020-05-15 22:05:55,990 [vert.x-worker-thread-2] INFO  i.a.e.adaptive.SFUForwarder - Video codec writing trailer name: SFUForwarder height:480 for stream:stream1
2020-05-15 22:05:55,990 [vert.x-worker-thread-2] INFO  i.a.e.adaptive.SFUForwarder - Total processing time 0 ms Average processing time 0 ms per frame for stream:stream1
2020-05-15 22:05:55,990 [vert.x-worker-thread-2] INFO  i.a.enterprise.adaptive.AACEncoder - writing trailer codec name: aac bitrate:96000 for stream:stream1
2020-05-15 22:05:55,990 [vert.x-worker-thread-2] INFO  i.a.enterprise.adaptive.OpusEncoder - writing trailer codec name: libopus bitrate:96000 for stream:stream1
2020-05-15 22:05:55,990 [vert.x-worker-thread-2] INFO  i.a.enterprise.adaptive.OpusEncoder - Total processing time 0, Average processing time 0 ms per frame on average for stream:stream1
2020-05-15 22:05:55,990 [vert.x-worker-thread-2] INFO  i.a.e.adaptive.StreamAdaptor - Average thread entrance interval 9ms for stream: stream1
2020-05-15 22:05:55,990 [vert.x-worker-thread-2] INFO  i.a.e.adaptive.StreamAdaptor - Leaving streamadaptor: 399037933 for stream: stream1
2020-05-15 22:05:55,998 [network_thread - 22821] INFO  org.webrtc.Logging - Tag:WebRtcAudioTrackExternal - Message:GetPlayoutUnderrunCount
2020-05-15 22:05:55,998 [network_thread - 22821] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - onIceConnectionChange CLOSED for streamId: stream1 hash:62207261
2020-05-15 22:05:55,998 [network_thread - 22821] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - entering stop() for stream1
2020-05-15 22:05:55,998 [network_thread - 22821] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - Encoder is already stopped, returning for stream1
2020-05-15 22:05:55,998 [network_thread - 22821] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - stopping playout for stream stream1
2020-05-15 22:05:56,009 [webrtc-publish-stream1-0] INFO  i.a.e.w.WebRTCPublishStreamInfoListener - deleting zombi stream stream1
2020-05-15 22:05:56,017 [webrtc-publish-stream1-0] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - leaving stop() for stream1
2020-05-15 22:06:01,553 [vert.x-eventloop-thread-2] INFO  i.antmedia.statistic.StatsCollector - -Heartbeat-> System cpu load: 1 Free memory: 5607840 KB

Link to comment
Share on other sites

  • Answers 2
  • Created
  • Last Reply

Top Posters For This Question

2 answers to this question

Recommended Posts

  • 0
Doesn't look like the ant media server can be in a private subnet. But making the subnet public and assigning a public IP address to the antmedia server, I was able to get it to work.


On Friday, May 15, 2020 at 3:16:59 PM UTC-7, Robert Berger wrote:
I'm not yet setting up a cluster, but I want to have a single (for now) antmedia server in a private subnet in AWS that is  fronted by an ALB. I presume this is possible?

Right now I have the ALB set up forwarding port 80, 443, 5080 and 5443 to port 5080 on the antmedia server. I can access the dashboard, start a live event on the dashboard, and I can view the pages for  https://antmedia-000.qa.omnyway.net/WebRTCAppEE/index.html and https://antmedia-000.qa.omnyway.net:5443//WebRTCAppEE/player.html.

But when I click on the "Start Publishing" nothing happens and if I click on the "Start Playing" it says ""no_stream_exist"".

I presume that the ALB isn't quit right or some other ports need to get in? It is hooked up with a NAT Gateway so the instance can talk out.

Here is a snippit of logs from when I try to start publishing:
2020-05-15 22:04:21,966 [webrtc-publish-stream1-0] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - running stop operations in executor for stream: stream1 Received audio frame: 0  Processed audio frame: 0Received video frame: 0  Processed video frame: 0
2020-05-15 22:04:21,966 [webrtc-publish-stream1-0] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - Publish Stats StreamId: stream1 TransferedByte: 0 Stream Duration: 1589580261966 Bitrate: 0 Source IP: null User-Agent: N/A
2020-05-15 22:04:21,973 [vert.x-worker-thread-15] INFO  i.a.e.adaptive.StreamAdaptor - Recording set to false in streamadaptor: 1228621405 for stream: stream1 stopping scheduler job id: 44
2020-05-15 22:04:21,974 [vert.x-worker-thread-15] INFO  i.a.e.adaptive.StreamAdaptor - Flushing video encoder:SFUForwarder for stream adaptor:1228621405 stream id:stream1
2020-05-15 22:04:21,974 [vert.x-worker-thread-15] INFO  i.a.e.adaptive.StreamAdaptor - Flushing audio encoder:aac for stream adaptor:1228621405 stream id:stream1
2020-05-15 22:04:21,974 [vert.x-worker-thread-15] INFO  i.a.e.adaptive.StreamAdaptor - Flushing audio encoder:libopus for stream adaptor:1228621405 stream id:stream1
2020-05-15 22:04:21,974 [vert.x-worker-thread-15] INFO  i.a.enterprise.webrtc.WebRTCAdaptor - unregistering stream1 muxer with 0p and codec: H264 from webrtc adaptor
2020-05-15 22:04:21,975 [vert.x-worker-thread-15] INFO  i.a.e.adaptive.SFUForwarder - Video codec writing trailer name: SFUForwarder height:480 for stream:stream1
2020-05-15 22:04:21,975 [vert.x-worker-thread-15] INFO  i.a.e.adaptive.SFUForwarder - Total processing time 0 ms Average processing time 0 ms per frame for stream:stream1
2020-05-15 22:04:21,975 [vert.x-worker-thread-15] INFO  i.a.enterprise.adaptive.AACEncoder - writing trailer codec name: aac bitrate:96000 for stream:stream1
2020-05-15 22:04:21,975 [vert.x-worker-thread-15] INFO  i.a.enterprise.adaptive.OpusEncoder - writing trailer codec name: libopus bitrate:96000 for stream:stream1
2020-05-15 22:04:21,975 [vert.x-worker-thread-15] INFO  i.a.enterprise.adaptive.OpusEncoder - Total processing time 0, Average processing time 0 ms per frame on average for stream:stream1
2020-05-15 22:04:21,975 [vert.x-worker-thread-15] INFO  i.a.e.adaptive.StreamAdaptor - Average thread entrance interval 9ms for stream: stream1
2020-05-15 22:04:21,975 [vert.x-worker-thread-15] INFO  i.a.e.adaptive.StreamAdaptor - Leaving streamadaptor: 1228621405 for stream: stream1
2020-05-15 22:04:21,976 [network_thread - 22806] INFO  org.webrtc.Logging - Tag:WebRtcAudioTrackExternal - Message:GetPlayoutUnderrunCount
2020-05-15 22:04:21,976 [network_thread - 22806] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - onIceConnectionChange CLOSED for streamId: stream1 hash:1362664335
2020-05-15 22:04:21,976 [network_thread - 22806] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - entering stop() for stream1
2020-05-15 22:04:21,976 [network_thread - 22806] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - Encoder is already stopped, returning for stream1
2020-05-15 22:04:21,977 [network_thread - 22806] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - stopping playout for stream stream1
2020-05-15 22:04:21,988 [webrtc-publish-stream1-0] INFO  i.a.e.w.WebRTCPublishStreamInfoListener - deleting zombi stream stream1
2020-05-15 22:04:21,997 [webrtc-publish-stream1-0] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - leaving stop() for stream1
2020-05-15 22:05:40,685 [http-nio2-0.0.0.0-5080-exec-7] INFO  i.a.e.w.WebSocketEnterpriseHandler - received token:null
2020-05-15 22:05:40,696 [http-nio2-0.0.0.0-5080-exec-7] INFO  i.a.e.w.WebSocketEnterpriseHandler - Adding new stream stream1 to session a
2020-05-15 22:05:40,697 [http-nio2-0.0.0.0-5080-exec-7] INFO  i.a.e.adaptive.EncoderAdaptor - ServerSettings exist io.antmedia.settings.ServerSettings@74f680f4
2020-05-15 22:05:40,699 [webrtc-publish-stream1-0] INFO  org.webrtc.Logging - Tag:NativeLibrary - Message:Native library has already been loaded.
2020-05-15 22:05:40,699 [webrtc-publish-stream1-0] INFO  org.webrtc.Logging - Tag:PeerConnectionFactory - Message:PeerConnectionFactory was initialized without an injected Loggable. Any existing Loggable will be deleted.
2020-05-15 22:05:40,699 [webrtc-publish-stream1-0] INFO  org.webrtc.Logging - Tag:JavaAudioDeviceModule - Message:createAudioDeviceModule
2020-05-15 22:05:40,699 [webrtc-publish-stream1-0] INFO  org.webrtc.Logging - Tag:JavaAudioDeviceModule - Message:HW NS will not be used.
2020-05-15 22:05:40,699 [webrtc-publish-stream1-0] INFO  org.webrtc.Logging - Tag:JavaAudioDeviceModule - Message:HW AEC will not be used.
2020-05-15 22:05:40,918 [http-nio2-0.0.0.0-5080-exec-4] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - before prepare for stream1 hash: 62207261
2020-05-15 22:05:40,918 [http-nio2-0.0.0.0-5080-exec-4] INFO  io.antmedia.muxer.HLSMuxer - hls time: 2, hls list size: 5
2020-05-15 22:05:40,919 [http-nio2-0.0.0.0-5080-exec-4] INFO  i.a.e.adaptive.StreamAdaptor - Stream adaptor scheduled job id 46 stream adaptor:399037933 for stream:stream1
2020-05-15 22:05:40,919 [http-nio2-0.0.0.0-5080-exec-4] INFO  i.a.enterprise.adaptive.AACEncoder - name : aac 
2020-05-15 22:05:40,920 [http-nio2-0.0.0.0-5080-exec-4] INFO  io.antmedia.muxer.HLSMuxer - copy codec parameter from context 0 stream index: 0
2020-05-15 22:05:40,920 [http-nio2-0.0.0.0-5080-exec-4] INFO  i.a.enterprise.adaptive.OpusEncoder - encoder name libopus source sample rate 44100, channel layout 3
2020-05-15 22:05:40,920 [http-nio2-0.0.0.0-5080-exec-4] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - after prepare for stream1 hash:62207261
2020-05-15 22:05:40,920 [http-nio2-0.0.0.0-5080-exec-4] WARN  i.a.e.adaptive.WebRTCEncoderAdaptor - Ice candidate will be added later for stream Id stream1. Remote Description not set
2020-05-15 22:05:40,920 [http-nio2-0.0.0.0-5080-exec-4] WARN  i.a.e.adaptive.WebRTCEncoderAdaptor - Ice candidate will be added later for stream Id stream1. Remote Description not set
2020-05-15 22:05:40,920 [http-nio2-0.0.0.0-5080-exec-4] WARN  i.a.e.adaptive.WebRTCEncoderAdaptor - Ice candidate will be added later for stream Id stream1. Remote Description not set
2020-05-15 22:05:40,921 [http-nio2-0.0.0.0-5080-exec-4] WARN  i.a.e.adaptive.WebRTCEncoderAdaptor - Ice candidate will be added later for stream Id stream1. Remote Description not set
2020-05-15 22:05:40,921 [http-nio2-0.0.0.0-5080-exec-4] WARN  i.a.e.adaptive.WebRTCEncoderAdaptor - Ice candidate will be added later for stream Id stream1. Remote Description not set
2020-05-15 22:05:40,923 [network_thread - 22821] INFO  i.a.e.adaptive.WebRTCVideoForwarder - create decoder for name:H264 and params: {level-asymmetry-allowed=1, packetization-mode=1, profile-level-id=42e01f}
2020-05-15 22:05:40,923 [network_thread - 22821] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - onAddTrack for streamId stream1
2020-05-15 22:05:40,923 [network_thread - 22821] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - onAddTrack for streamId stream1
2020-05-15 22:05:40,923 [network_thread - 22821] INFO  i.a.e.adaptive.WebRTCVideoForwarder - onAddStream for streamId stream1
2020-05-15 22:05:40,923 [webrtc-publish-stream1-0] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - onSetSuccess signalling thread for stream1 ice candidate queue size: 5
2020-05-15 22:05:40,923 [webrtc-publish-stream1-0] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - onSetSuccess iceCandidateQueue for stream1
2020-05-15 22:05:40,923 [webrtc-publish-stream1-0] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - onSetSuccess iceCandidateQueue for stream1
2020-05-15 22:05:40,923 [webrtc-publish-stream1-0] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - onSetSuccess iceCandidateQueue for stream1
2020-05-15 22:05:40,923 [webrtc-publish-stream1-0] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - onSetSuccess iceCandidateQueue for stream1
2020-05-15 22:05:40,923 [webrtc-publish-stream1-0] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - onSetSuccess iceCandidateQueue for stream1
2020-05-15 22:05:40,924 [network_thread - 22821] INFO  org.webrtc.Logging - Tag:WebRtcAudioTrackExternal - Message:initPlayout(sampleRate=16000, channels=1, bufferSizeFactor=1.0)
2020-05-15 22:05:40,924 [network_thread - 22821] INFO  org.webrtc.Logging - Tag:WebRtcAudioTrackExternal - Message:byteBuffer.capacity: 320
2020-05-15 22:05:40,924 [network_thread - 22821] INFO  org.webrtc.Logging - Tag:WebRtcAudioTrackExternal - Message:startPlayout(sampleRate=16000, channels=1)
2020-05-15 22:05:40,924 [network_thread - 22821] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - starting playout for stream stream1
2020-05-15 22:05:40,925 [network_thread - 22821] INFO  i.a.e.adaptive.WebRTCVideoForwarder - create decoder for name:H264 and params: {level-asymmetry-allowed=1, packetization-mode=1, profile-level-id=42e01f}
2020-05-15 22:05:40,925 [network_thread - 22821] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - onIceConnectionChange CHECKING for streamId: stream1 hash:62207261
2020-05-15 22:05:40,927 [network_thread - 22821] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - onIceCandidate: 0:0:candidate:1696137277 1 udp 2122260223 10.31.254.120 60867 typ host generation 0 ufrag Vyke network-id 1 network-cost 50::UNKNOWN stream id: stream1
2020-05-15 22:05:40,940 [network_thread - 22821] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - onIceCandidate: 0:0:candidate:3830515337 1 udp 1686052607 34.197.184.115 60058 typ srflx raddr 10.31.254.120 rport 60867 generation 0 ufrag Vyke network-id 1 network-cost 50:stun:209.85.144.127:19302:UNKNOWN stream id: stream1
2020-05-15 22:05:41,026 [network_thread - 22821] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - onIceCandidate: 0:0:candidate:731577549 1 tcp 1518280447 10.31.254.120 42743 typ host tcptype passive generation 0 ufrag Vyke network-id 1 network-cost 50::UNKNOWN stream id: stream1
2020-05-15 22:05:41,420 [webrtc-publish-stream1-0] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - Waiting for encoder to be ready for stream1 hash:62207261
2020-05-15 22:05:41,920 [webrtc-publish-stream1-0] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - Waiting for encoder to be ready for stream1 hash:62207261
2020-05-15 22:05:42,420 [webrtc-publish-stream1-0] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - Waiting for encoder to be ready for stream1 hash:62207261
2020-05-15 22:05:42,920 [webrtc-publish-stream1-0] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - Waiting for encoder to be ready for stream1 hash:62207261
2020-05-15 22:05:43,420 [webrtc-publish-stream1-0] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - Waiting for encoder to be ready for stream1 hash:62207261
2020-05-15 22:05:43,920 [webrtc-publish-stream1-0] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - Waiting for encoder to be ready for stream1 hash:62207261
2020-05-15 22:05:44,420 [webrtc-publish-stream1-0] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - Waiting for encoder to be ready for stream1 hash:62207261
2020-05-15 22:05:44,920 [webrtc-publish-stream1-0] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - Waiting for encoder to be ready for stream1 hash:62207261
2020-05-15 22:05:45,420 [webrtc-publish-stream1-0] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - Waiting for encoder to be ready for stream1 hash:62207261
2020-05-15 22:05:45,920 [webrtc-publish-stream1-0] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - Waiting for encoder to be ready for stream1 hash:62207261
2020-05-15 22:05:46,420 [webrtc-publish-stream1-0] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - Waiting for encoder to be ready for stream1 hash:62207261
2020-05-15 22:05:46,920 [webrtc-publish-stream1-0] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - Waiting for encoder to be ready for stream1 hash:62207261
2020-05-15 22:05:47,420 [webrtc-publish-stream1-0] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - Waiting for encoder to be ready for stream1 hash:62207261
2020-05-15 22:05:47,920 [webrtc-publish-stream1-0] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - Waiting for encoder to be ready for stream1 hash:62207261
2020-05-15 22:05:48,420 [webrtc-publish-stream1-0] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - Waiting for encoder to be ready for stream1 hash:62207261
2020-05-15 22:05:48,920 [webrtc-publish-stream1-0] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - Waiting for encoder to be ready for stream1 hash:62207261
2020-05-15 22:05:49,420 [webrtc-publish-stream1-0] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - Waiting for encoder to be ready for stream1 hash:62207261
2020-05-15 22:05:49,920 [webrtc-publish-stream1-0] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - Waiting for encoder to be ready for stream1 hash:62207261
2020-05-15 22:05:50,420 [webrtc-publish-stream1-0] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - Waiting for encoder to be ready for stream1 hash:62207261
2020-05-15 22:05:50,920 [webrtc-publish-stream1-0] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - Waiting for encoder to be ready for stream1 hash:62207261
2020-05-15 22:05:51,420 [webrtc-publish-stream1-0] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - Waiting for encoder to be ready for stream1 hash:62207261
2020-05-15 22:05:51,920 [webrtc-publish-stream1-0] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - Waiting for encoder to be ready for stream1 hash:62207261
2020-05-15 22:05:52,420 [webrtc-publish-stream1-0] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - Waiting for encoder to be ready for stream1 hash:62207261
2020-05-15 22:05:52,920 [webrtc-publish-stream1-0] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - Waiting for encoder to be ready for stream1 hash:62207261
2020-05-15 22:05:53,420 [webrtc-publish-stream1-0] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - Waiting for encoder to be ready for stream1 hash:62207261
2020-05-15 22:05:53,920 [webrtc-publish-stream1-0] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - Waiting for encoder to be ready for stream1 hash:62207261
2020-05-15 22:05:54,420 [webrtc-publish-stream1-0] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - Waiting for encoder to be ready for stream1 hash:62207261
2020-05-15 22:05:54,920 [webrtc-publish-stream1-0] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - Waiting for encoder to be ready for stream1 hash:62207261
2020-05-15 22:05:55,420 [webrtc-publish-stream1-0] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - Waiting for encoder to be ready for stream1 hash:62207261
2020-05-15 22:05:55,920 [webrtc-publish-stream1-0] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - Waiting for encoder to be ready for stream1 hash:62207261
2020-05-15 22:05:55,985 [network_thread - 22821] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - onIceConnectionChange FAILED for streamId: stream1 hash:62207261
2020-05-15 22:05:55,985 [network_thread - 22821] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - entering stop() for stream1
2020-05-15 22:05:55,985 [webrtc-publish-stream1-0] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - running stop operations in executor for stream: stream1 Received audio frame: 0  Processed audio frame: 0Received video frame: 0  Processed video frame: 0
2020-05-15 22:05:55,985 [webrtc-publish-stream1-0] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - Publish Stats StreamId: stream1 TransferedByte: 0 Stream Duration: 1589580355985 Bitrate: 0 Source IP: null User-Agent: N/A
2020-05-15 22:05:55,989 [vert.x-worker-thread-2] INFO  i.a.e.adaptive.StreamAdaptor - Recording set to false in streamadaptor: 399037933 for stream: stream1 stopping scheduler job id: 46
2020-05-15 22:05:55,989 [vert.x-worker-thread-2] INFO  i.a.e.adaptive.StreamAdaptor - Flushing video encoder:SFUForwarder for stream adaptor:399037933 stream id:stream1
2020-05-15 22:05:55,989 [vert.x-worker-thread-2] INFO  i.a.e.adaptive.StreamAdaptor - Flushing audio encoder:aac for stream adaptor:399037933 stream id:stream1
2020-05-15 22:05:55,989 [vert.x-worker-thread-2] INFO  i.a.e.adaptive.StreamAdaptor - Flushing audio encoder:libopus for stream adaptor:399037933 stream id:stream1
2020-05-15 22:05:55,989 [vert.x-worker-thread-2] INFO  i.a.enterprise.webrtc.WebRTCAdaptor - unregistering stream1 muxer with 0p and codec: H264 from webrtc adaptor
2020-05-15 22:05:55,990 [vert.x-worker-thread-2] INFO  i.a.e.adaptive.SFUForwarder - Video codec writing trailer name: SFUForwarder height:480 for stream:stream1
2020-05-15 22:05:55,990 [vert.x-worker-thread-2] INFO  i.a.e.adaptive.SFUForwarder - Total processing time 0 ms Average processing time 0 ms per frame for stream:stream1
2020-05-15 22:05:55,990 [vert.x-worker-thread-2] INFO  i.a.enterprise.adaptive.AACEncoder - writing trailer codec name: aac bitrate:96000 for stream:stream1
2020-05-15 22:05:55,990 [vert.x-worker-thread-2] INFO  i.a.enterprise.adaptive.OpusEncoder - writing trailer codec name: libopus bitrate:96000 for stream:stream1
2020-05-15 22:05:55,990 [vert.x-worker-thread-2] INFO  i.a.enterprise.adaptive.OpusEncoder - Total processing time 0, Average processing time 0 ms per frame on average for stream:stream1
2020-05-15 22:05:55,990 [vert.x-worker-thread-2] INFO  i.a.e.adaptive.StreamAdaptor - Average thread entrance interval 9ms for stream: stream1
2020-05-15 22:05:55,990 [vert.x-worker-thread-2] INFO  i.a.e.adaptive.StreamAdaptor - Leaving streamadaptor: 399037933 for stream: stream1
2020-05-15 22:05:55,998 [network_thread - 22821] INFO  org.webrtc.Logging - Tag:WebRtcAudioTrackExternal - Message:GetPlayoutUnderrunCount
2020-05-15 22:05:55,998 [network_thread - 22821] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - onIceConnectionChange CLOSED for streamId: stream1 hash:62207261
2020-05-15 22:05:55,998 [network_thread - 22821] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - entering stop() for stream1
2020-05-15 22:05:55,998 [network_thread - 22821] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - Encoder is already stopped, returning for stream1
2020-05-15 22:05:55,998 [network_thread - 22821] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - stopping playout for stream stream1
2020-05-15 22:05:56,009 [webrtc-publish-stream1-0] INFO  i.a.e.w.WebRTCPublishStreamInfoListener - deleting zombi stream stream1
2020-05-15 22:05:56,017 [webrtc-publish-stream1-0] INFO  i.a.e.adaptive.WebRTCEncoderAdaptor - leaving stop() for stream1
2020-05-15 22:06:01,553 [vert.x-eventloop-thread-2] INFO  i.antmedia.statistic.StatsCollector - -Heartbeat-> System cpu load: 1 Free memory: 5607840 KB

Link to comment
Share on other sites

  • 0
I have my AMS on a private IP behind a Firewall and NGINX Load Balancer/Reverse Proxy server.  I used this document to assist with setup (and some tech support for the AMS team) to get it working.  Might help you.  There are some other ports your Load Balancer has to forward.

Link to comment
Share on other sites

 Share

×
×
  • Create New...