Closed farawaysouthwest closed 9 months ago
Hi @farawaysouthwest,
Thank you for your question.
Yes, community edition supports RTMPS and I think it's better to ask this question on Discussion.
Regards Oguz
Hi @farawaysouthwest , How are you?
I wanted to check if you were able to publish RTMPS. I tried it again and it seems to publish fine on my end https://github.com/orgs/ant-media/discussions/4907
Also, please make sure that SSL is enabled on the server.
Thank you.
Hi @farawaysouthwest , How are you?
I wanted to check if you were able to publish RTMPS. I tried it again and it seems to publish fine on my end https://github.com/orgs/ant-media/discussions/4907
Also, please make sure that SSL is enabled on the server.
Thank you.
Hi @Mohit-3196, thank you for the followup. I'm still unable to connect vis RTMPS.
I've validated the following:
red5-core.xml
has been uncommented, the server has been restarted.I get the following error:
WARN o.r.server.net.rtmp.RTMPConnection - Stream service was not found for scope: null or non-existant
2023-11-20 18:26:28,801 [NioProcessor-22]
INFO o.r.server.net.rtmp.BaseRTMPHandler - connectionClosed: IKVFNQGG1XYKL
Hi @farawaysouthwest , I see, Thank you.
Is it possible for you to share your Ant Media Server Web panel login details with me? I can login and check the issue in more detail there.
You can write to me at mohit.dubey@antmedia.io
Cheers
Hi @farawaysouthwest ,
Let me know if you have any comments for me.
Hi @Mohit-3196, thank you for the followup! Unfortunately, I can not provide login access for security reasons.
As a fellow software engineer, I would hope that a defined error message like I provided would help us define next troubleshooting steps?
Are any any actions I can take to dig deeper into this? I'm running on a standard install of Ubuntu, is there possibly an additional SSL package or configuration item that I could look at?
Hi @farawaysouthwest , I could share the error only if I faced any :) but there's no error when I try publishing RTMPS to the community edition. Also, the logs there seem to be related to the RTMP handler.
If you cannot provide the login details, is it possible for you to share the red5-core.xml
file so that I can check if things are fine there?
Thank you
hi @Mohit-3196 @farawaysouthwest,
Thank you for the discussion.
When I see the following log below, it makes me think that the url is correct. Could you please check the url is in the format rtmps://[{SERVER_ADDRESS}:8443/{APP}/{STREAM_ID}
If it does not help, maybe scheduling a meeting and looking at the problem may save good amount of time.
WARN o.r.server.net.rtmp.RTMPConnection - Stream service was not found for scope: null or non-existant 2023-11-20 18:26:28,801 [NioProcessor-22] INFO o.r.server.net.rtmp.BaseRTMPHandler - connectionClosed: IKVFNQGG1XYKL
Hi @farawaysouthwest, How are you?
Did you have a chance to check the publish URL format as suggested above?
Thank you
Hi @farawaysouthwest, How are you?
Did you have a chance to check the publish URL format as suggested above?
Thank you
Hi there!
I can confirm that my url is correct, and that all WAF blocking has been correctly configured.
I don't believe this is something wrong with URL etc. As I stated earlier, I can get a very reliable, repeatable error message in the logs on every failed connection attempt:
WARN o.r.server.net.rtmp.RTMPConnection - Stream service was not found for scope: null or non-existent 2023-11-20 18:26:28,801 [NioProcessor-22]
This leads me to believe I have discovered a bug, or possibly there is a configuration error with the red-core file? How would you propose I troubleshoot this further? I could install a fresh VM on a similar system and see if the error persists over there, but I need to know if that would lead to any exploratory action on your part?
Hi @farawaysouthwest, When you reported this issue, I ran the community edition on my end, and the rtmps publish worked fine. Therefore I couldn't reproduce the issue. Depending on the log excerpts you shared, my colleague advised checking the publish URL format.
Here's how we can proceed:
red5-core.xml
file with me and I can try running the same on my end.Let me know if this is OK for you.
Thank you.
Hi @farawaysouthwest, How are you?
I'm waiting for the file so that we can proceed to the next step. We have been spending time on this issue for a long now so let's proceed with some increased energy and synergy to find the find the blocker and resolve it.
Thank you.
Hi @Mohit-3196, Thank you for following up, we have uncovered a more serious issue that I will need to make a separate ticket for, but please see the file below, (Github will not let me attach the file directly), thank you for your help!
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:lang="http://www.springframework.org/schema/lang"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang.xsd">
<!-- DO NOT FORMAT THIS FILE IN ECLIPSE -->
<bean id="customEditorConfigurer" class="org.springframework.beans.factory.config.CustomEditorConfigurer">
<property name="customEditors">
<map>
<entry key="java.net.SocketAddress" value="org.apache.mina.integration.beans.InetSocketAddressEditor" />
</map>
</property>
</bean>
<bean id="placeholderConfig" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="classpath:/red5.properties" />
</bean>
<!-- RTMP -->
<bean id="rtmpScheduler" class="org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler">
<property name="poolSize" value="${rtmp.scheduler.pool_size}" />
<property name="daemon" value="true" />
<property name="waitForTasksToCompleteOnShutdown" value="true" />
<property name="threadNamePrefix" value="RTMPConnectionScheduler-" />
</bean>
<bean id="messageExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
<property name="corePoolSize" value="${rtmp.executor.core_pool_size}" />
<property name="maxPoolSize" value="${rtmp.executor.max_pool_size}" />
<property name="queueCapacity" value="${rtmp.executor.queue_capacity}" />
<property name="daemon" value="false" />
<property name="waitForTasksToCompleteOnShutdown" value="true" />
<property name="threadNamePrefix" value="RTMPConnectionExecutor-" />
</bean>
<bean id="deadlockGuardScheduler" class="org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler">
<property name="poolSize" value="${rtmp.deadlockguard.sheduler.pool_size}" />
<property name="daemon" value="false" />
<property name="waitForTasksToCompleteOnShutdown" value="true" />
<property name="threadNamePrefix" value="DeadlockGuardScheduler-" />
</bean>
<!-- RTMP connection manager -->
<bean id="rtmpConnManager" class="org.red5.server.net.rtmp.RTMPConnManager" />
<!-- RTMP Decoding -->
<!-- Use injection to set the max packet size -->
<bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
<property name="staticMethod">
<value>org.red5.server.net.rtmp.codec.RTMPProtocolDecoder.setMaxPacketSize</value>
</property>
<property name="arguments" value="${rtmp.max_packet_size}"/>
</bean>
<!-- RTMP Handler -->
<bean id="rtmpHandler" class="org.red5.server.net.rtmp.RTMPHandler">
<property name="server" ref="red5.server" />
<property name="statusObjectService" ref="statusObjectService" />
<!-- Enable this to allow unvalidated connections -->
<property name="unvalidatedConnectionAllowed" value="true" />
</bean>
<!-- RTMP Mina IO Handler -->
<bean id="rtmpMinaIoHandler" class="org.red5.server.net.rtmp.RTMPMinaIoHandler">
<property name="handler" ref="rtmpHandler" />
</bean>
<!-- RTMP Mina Transport -->
<bean id="rtmpTransport" class="org.red5.server.net.rtmp.RTMPMinaTransport" init-method="start" destroy-method="stop">
<property name="ioHandler" ref="rtmpMinaIoHandler" />
<property name="addresses">
<list>
<value>${rtmp.host}:${rtmp.port}</value>
<!-- You can now add additional ports and ip addresses
<value>${rtmp.host}:1936</value>
-->
</list>
</property>
<property name="ioThreads" value="${rtmp.io_threads}" />
<property name="sendBufferSize" value="${rtmp.send_buffer_size}" />
<property name="receiveBufferSize" value="${rtmp.receive_buffer_size}" />
<property name="trafficClass" value="${rtmp.traffic_class}" />
<property name="backlog" value="${rtmp.backlog}" />
<property name="tcpNoDelay" value="${rtmp.tcp_nodelay}" />
<property name="keepAlive" value="${rtmp.tcp_keepalive}" />
<property name="thoughputCalcInterval" value="${rtmp.thoughput_calc_interval}" />
<property name="enableDefaultAcceptor" value="${rtmp.default_acceptor}" />
<!-- Pool settings are used when the default acceptor is disabled -->
<property name="initialPoolSize" value="${rtmp.initial_pool_size}" />
<property name="maxPoolSize" value="${rtmp.max_pool_size}" />
<property name="maxProcessorPoolSize" value="${rtmp.max_processor_pool_size}" />
<property name="executorKeepAliveTime" value="${rtmp.executor_keepalive_time}" />
<!-- This is the interval at which the sessions are polled for stats. If mina monitoring is not enabled, polling will not occur. -->
<property name="minaPollInterval" value="${jmx.mina.poll.interval}" />
<property name="enableMinaMonitor" value="${jmx.mina.monitor.enable}" />
<property name="enableMinaLogFilter" value="${mina.logfilter.enable}" />
</bean>
<!-- RTMP Mina Connection -->
<bean id="rtmpMinaConnection" scope="prototype" class="org.red5.server.net.rtmp.RTMPMinaConnection">
<!-- Executor for scheduled tasks -->
<property name="scheduler" ref="rtmpScheduler" />
<!-- Executor for incoming messages -->
<property name="executor" ref="messageExecutor" />
<!-- Deadlock guard executor -->
<property name="deadlockGuardScheduler" ref="deadlockGuardScheduler" />
<!-- Ping clients every X ms. Set to 0 to disable ghost detection code. -->
<property name="pingInterval" value="${rtmp.ping_interval}" />
<!-- Disconnect client after X ms of not responding. -->
<property name="maxInactivity" value="${rtmp.max_inactivity}" />
<!-- Max. time in milliseconds to wait for a valid handshake. -->
<property name="maxHandshakeTimeout" value="${rtmp.max_handshake_time}" />
<!-- Default server bandwidth per connection -->
<property name="defaultServerBandwidth" value="${rtmp.default_server_bandwidth}" />
<!-- Default client bandwidth per connection -->
<property name="defaultClientBandwidth" value="${rtmp.default_client_bandwidth}" />
<!-- Client bandwidth limit type: 0 = hard, 1 = soft, 2 = dynamic -->
<property name="limitType" value="${rtmp.client_bandwidth_limit_type}" />
<!-- Bandwidth detection. If "false" the server will NOT initiate a check -->
<property name="bandwidthDetection" value="${rtmp.bandwidth_detection}" />
<!-- Maximum time allowed for a single RTMP packet to be processed -->
<property name="maxHandlingTimeout" value="${rtmp.max_handling_time}" />
<!-- Specify the size of queue that will trigger audio packet dropping, disabled if it's 0 -->
<property name="executorQueueSizeToDropAudioPackets" value="${rtmp.executor.queue_size_to_drop_audio_packets}" />
<!-- Concurrent collection tweaks -->
<property name="channelsInitalCapacity" value="${rtmp.channel.initial.capacity}" />
<property name="channelsConcurrencyLevel" value="${rtmp.channel.concurrency.level}" />
<property name="streamsInitalCapacity" value="${rtmp.stream.initial.capacity}" />
<property name="streamsConcurrencyLevel" value="${rtmp.stream.concurrency.level}" />
<property name="pendingCallsInitalCapacity" value="${rtmp.pending.calls.initial.capacity}" />
<property name="pendingCallsConcurrencyLevel" value="${rtmp.pending.calls.concurrency.level}" />
<property name="reservedStreamsInitalCapacity" value="${rtmp.reserved.streams.initial.capacity}" />
<property name="reservedStreamsConcurrencyLevel" value="${rtmp.reserved.streams.concurrency.level}" />
</bean>
<bean id="rtmpsMinaIoHandler" class="org.red5.server.net.rtmps.RTMPSMinaIoHandler">
<property name="handler" ref="rtmpHandler" />
<property name="keystorePassword" value="${rtmps.keystorepass}" />
<property name="keystoreFile" value="${rtmps.keystorefile}" />
<property name="truststorePassword" value="${rtmps.truststorepass}" />
<property name="truststoreFile" value="${rtmps.truststorefile}" />
<property name="cipherSuites">
<array>
<value>TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256</value>
<value>TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA</value>
<value>TLS_ECDHE_RSA_WITH_RC4_128_SHA</value>
<value>TLS_RSA_WITH_AES_128_CBC_SHA256</value>
<value>TLS_RSA_WITH_AES_128_CBC_SHA</value>
<value>SSL_RSA_WITH_RC4_128_SHA</value>
</array>
</property>
<property name="protocols">
<array>
<value>TLSv1</value>
<value>TLSv1.1</value>
<value>TLSv1.2</value>
</array>
</property>
</bean>
<!-- RTMPS -->
<bean id="rtmpsTransport" class="org.red5.server.net.rtmp.RTMPMinaTransport" init-method="start" destroy-method="stop">
<property name="ioHandler" ref="rtmpsMinaIoHandler" />
<property name="addresses">
<list>
<value>${rtmps.host}:${rtmps.port}</value>
</list>
</property>
<property name="ioThreads" value="${rtmp.io_threads}" />
<property name="tcpNoDelay" value="${rtmp.tcp_nodelay}" />
</bean>
<!-- Enable when you need it. - - >
<bean id="rtmpProxyTransport" class="org.red5.server.net.rtmp.RTMPMinaTransport" init-method="start" destroy-method="stop">
<property name="ioHandler" ref="debugProxyIoHandler" />
<property name="address" value="${proxy.source_host}" />
<property name="port" value="${proxy.source_port}" />
<property name="ioThreads" value="${rtmp.io_threads}" />
<property name="tcpNoDelay" value="${rtmp.tcp_nodelay}" />
</bean>
<bean id="debugProxyIoHandler" class="org.red5.server.net.proxy.DebugProxyHandler">
<property name="codecFactory" ref="rtmpCodecFactory" />
<property name="forward" value="${proxy.destination_host}:${proxy.destination_port}" />
<property name="dumpTo" value="./webapps/dump/" />
</bean>
-->
</beans>
Hi @farawaysouthwest, Thank you for the file.
Let me check and get back to you.
Hi @farawaysouthwest, Please use this file
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:lang="http://www.springframework.org/schema/lang"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/lang http://www.springframework.org/schema/lang/spring-lang.xsd">
<!-- DO NOT FORMAT THIS FILE IN ECLIPSE -->
<bean id="customEditorConfigurer" class="org.springframework.beans.factory.config.CustomEditorConfigurer">
<property name="customEditors">
<map>
<entry key="java.net.SocketAddress" value="org.apache.mina.integration.beans.InetSocketAddressEditor" />
</map>
</property>
</bean>
<bean id="placeholderConfig" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="location" value="classpath:/red5.properties" />
</bean>
<!-- RTMP -->
<bean id="rtmpScheduler" class="org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler">
<property name="poolSize" value="${rtmp.scheduler.pool_size}" />
<property name="daemon" value="true" />
<property name="waitForTasksToCompleteOnShutdown" value="true" />
<property name="threadNamePrefix" value="RTMPConnectionScheduler-" />
</bean>
<bean id="messageExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
<property name="corePoolSize" value="${rtmp.executor.core_pool_size}" />
<property name="maxPoolSize" value="${rtmp.executor.max_pool_size}" />
<property name="queueCapacity" value="${rtmp.executor.queue_capacity}" />
<property name="daemon" value="false" />
<property name="waitForTasksToCompleteOnShutdown" value="true" />
<property name="threadNamePrefix" value="RTMPConnectionExecutor-" />
</bean>
<bean id="deadlockGuardScheduler" class="org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler">
<property name="poolSize" value="${rtmp.deadlockguard.sheduler.pool_size}" />
<property name="daemon" value="false" />
<property name="waitForTasksToCompleteOnShutdown" value="true" />
<property name="threadNamePrefix" value="DeadlockGuardScheduler-" />
</bean>
<!-- RTMP connection manager -->
<bean id="rtmpConnManager" class="org.red5.server.net.rtmp.RTMPConnManager" />
<!-- RTMP Decoding -->
<!-- Use injection to set the max packet size -->
<bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
<property name="staticMethod">
<value>org.red5.server.net.rtmp.codec.RTMPProtocolDecoder.setMaxPacketSize</value>
</property>
<property name="arguments" value="${rtmp.max_packet_size}"/>
</bean>
<!-- RTMP Handler -->
<bean id="rtmpHandler" class="org.red5.server.net.rtmp.RTMPHandler">
<property name="server" ref="red5.server" />
<property name="statusObjectService" ref="statusObjectService" />
<!-- Enable this to allow unvalidated connections -->
<property name="unvalidatedConnectionAllowed" value="true" />
</bean>
<!-- RTMP Mina IO Handler -->
<bean id="rtmpMinaIoHandler" class="org.red5.server.net.rtmp.RTMPMinaIoHandler">
<property name="handler" ref="rtmpHandler" />
</bean>
<!-- RTMP Mina Transport -->
<bean id="rtmpTransport" class="org.red5.server.net.rtmp.RTMPMinaTransport" init-method="start" destroy-method="stop">
<property name="ioHandler" ref="rtmpMinaIoHandler" />
<property name="addresses">
<list>
<value>${rtmp.host}:${rtmp.port}</value>
<!-- You can now add additional ports and ip addresses
<value>${rtmp.host}:1936</value>
-->
</list>
</property>
<property name="ioThreads" value="${rtmp.io_threads}" />
<property name="sendBufferSize" value="${rtmp.send_buffer_size}" />
<property name="receiveBufferSize" value="${rtmp.receive_buffer_size}" />
<property name="trafficClass" value="${rtmp.traffic_class}" />
<property name="backlog" value="${rtmp.backlog}" />
<property name="tcpNoDelay" value="${rtmp.tcp_nodelay}" />
<property name="keepAlive" value="${rtmp.tcp_keepalive}" />
<property name="thoughputCalcInterval" value="${rtmp.thoughput_calc_interval}" />
<property name="enableDefaultAcceptor" value="${rtmp.default_acceptor}" />
<!-- Pool settings are used when the default acceptor is disabled -->
<property name="initialPoolSize" value="${rtmp.initial_pool_size}" />
<property name="maxPoolSize" value="${rtmp.max_pool_size}" />
<property name="maxProcessorPoolSize" value="${rtmp.max_processor_pool_size}" />
<property name="executorKeepAliveTime" value="${rtmp.executor_keepalive_time}" />
<!-- This is the interval at which the sessions are polled for stats. If mina monitoring is not enabled, polling will not occur. -->
<property name="minaPollInterval" value="${jmx.mina.poll.interval}" />
<property name="enableMinaMonitor" value="${jmx.mina.monitor.enable}" />
<property name="enableMinaLogFilter" value="${mina.logfilter.enable}" />
</bean>
<!-- RTMP Mina Connection -->
<bean id="rtmpMinaConnection" scope="prototype" class="org.red5.server.net.rtmp.RTMPMinaConnection">
<!-- Executor for scheduled tasks -->
<property name="scheduler" ref="rtmpScheduler" />
<!-- Executor for incoming messages -->
<property name="executor" ref="messageExecutor" />
<!-- Deadlock guard executor -->
<property name="deadlockGuardScheduler" ref="deadlockGuardScheduler" />
<!-- Ping clients every X ms. Set to 0 to disable ghost detection code. -->
<property name="pingInterval" value="${rtmp.ping_interval}" />
<!-- Disconnect client after X ms of not responding. -->
<property name="maxInactivity" value="${rtmp.max_inactivity}" />
<!-- Max. time in milliseconds to wait for a valid handshake. -->
<property name="maxHandshakeTimeout" value="${rtmp.max_handshake_time}" />
<!-- Default server bandwidth per connection -->
<property name="defaultServerBandwidth" value="${rtmp.default_server_bandwidth}" />
<!-- Default client bandwidth per connection -->
<property name="defaultClientBandwidth" value="${rtmp.default_client_bandwidth}" />
<!-- Client bandwidth limit type: 0 = hard, 1 = soft, 2 = dynamic -->
<property name="limitType" value="${rtmp.client_bandwidth_limit_type}" />
<!-- Bandwidth detection. If "false" the server will NOT initiate a check -->
<property name="bandwidthDetection" value="${rtmp.bandwidth_detection}" />
<!-- Maximum time allowed for a single RTMP packet to be processed -->
<property name="maxHandlingTimeout" value="${rtmp.max_handling_time}" />
<!-- Specify the size of queue that will trigger audio packet dropping, disabled if it's 0 -->
<property name="executorQueueSizeToDropAudioPackets" value="${rtmp.executor.queue_size_to_drop_audio_packets}" />
<!-- Concurrent collection tweaks -->
<property name="channelsInitalCapacity" value="${rtmp.channel.initial.capacity}" />
<property name="channelsConcurrencyLevel" value="${rtmp.channel.concurrency.level}" />
<property name="streamsInitalCapacity" value="${rtmp.stream.initial.capacity}" />
<property name="streamsConcurrencyLevel" value="${rtmp.stream.concurrency.level}" />
<property name="pendingCallsInitalCapacity" value="${rtmp.pending.calls.initial.capacity}" />
<property name="pendingCallsConcurrencyLevel" value="${rtmp.pending.calls.concurrency.level}" />
<property name="reservedStreamsInitalCapacity" value="${rtmp.reserved.streams.initial.capacity}" />
<property name="reservedStreamsConcurrencyLevel" value="${rtmp.reserved.streams.concurrency.level}" />
</bean>
<!-- RTMPS -->
<!-- Notes to self:
https://www.openssl.org/docs/apps/ciphers.html#TLS-v1.2-cipher-suites
https://www.sslshopper.com/article-how-to-disable-weak-ciphers-and-ssl-2-in-tomcat.html
-->
<bean id="rtmpsMinaIoHandler" class="org.red5.server.net.rtmps.RTMPSMinaIoHandler">
<property name="handler" ref="rtmpHandler" />
<property name="keystorePassword" value="${rtmps.keystorepass}" />
<property name="keystoreFile" value="${rtmps.keystorefile}" />
<property name="truststorePassword" value="${rtmps.truststorepass}" />
<property name="truststoreFile" value="${rtmps.truststorefile}" />
<property name="cipherSuites">
<array>
<value>TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256</value>
<value>TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA</value>
<value>TLS_ECDHE_RSA_WITH_RC4_128_SHA</value>
<value>TLS_RSA_WITH_AES_128_CBC_SHA256</value>
<value>TLS_RSA_WITH_AES_128_CBC_SHA</value>
<value>SSL_RSA_WITH_RC4_128_SHA</value>
</array>
</property>
<property name="protocols">
<array>
<value>TLSv1</value>
<value>TLSv1.1</value>
<value>TLSv1.2</value>
</array>
</property>
</bean>
<bean id="rtmpsTransport" class="org.red5.server.net.rtmp.RTMPMinaTransport" init-method="start" destroy-method="stop">
<property name="ioHandler" ref="rtmpsMinaIoHandler" />
<property name="addresses">
<list>
<value>${rtmps.host}:${rtmps.port}</value>
</list>
</property>
<property name="ioThreads" value="${rtmp.io_threads}" />
<property name="tcpNoDelay" value="${rtmp.tcp_nodelay}" />
</bean>
<!-- Enable when you need it.
<bean id="rtmpProxyTransport" class="org.red5.server.net.rtmp.RTMPMinaTransport" init-method="start" destroy-method="stop">
<property name="ioHandler" ref="debugProxyIoHandler" />
<property name="address" value="${proxy.source_host}" />
<property name="port" value="${proxy.source_port}" />
<property name="ioThreads" value="${rtmp.io_threads}" />
<property name="tcpNoDelay" value="${rtmp.tcp_nodelay}" />
</bean>
<bean id="debugProxyIoHandler" class="org.red5.server.net.proxy.DebugProxyHandler">
<property name="codecFactory" ref="rtmpCodecFactory" />
<property name="forward" value="${proxy.destination_host}:${proxy.destination_port}" />
<property name="dumpTo" value="./webapps/dump/" />
</bean>
-->
</beans>
It should work for you. In case it doesn't, please let me know.
Thank you.
Hi @farawaysouthwest, How are you?
Were you able to try with this file that I shared? Please let back to me after you check it.
Thank you.
Hi @farawaysouthwest, I'm closing this issue now for inactivity. Please feel free to reopen the issue for any comments that you may have.
Thank you and Happy New Year :)
Hi there!
Is stream pushing via RTMPS an enterprise only feature?
I've followed the doc outlined here, got a successful restart on the service, and attempted to push stream via OBS on port
8443
, I have also ensured that the port is open on my firewall.OBS dials for a few seconds then the connection times out, so it is seeing the server, are there any additional troubleshooting methods for this?