AirenSoft / OvenMediaEngine

OvenMediaEngine (OME) is a Sub-Second Latency Live Streaming Server with Large-Scale and High-Definition. #WebRTC #LLHLS
https://airensoft.com/ome.html
GNU Affero General Public License v3.0
2.59k stars 1.06k forks source link

RTMPPush crash from Mobile IPhone WebRTC #446

Closed DanielnetoDotCom closed 3 years ago

DanielnetoDotCom commented 3 years ago

Hi,

whatever configuration I try the WebRTC from iPhone is unstable (Not tested on Android yet)

the live works for few seconds then crash.

here are my logs, I guess has something to do with Application provided invalid, non monotonically increasing dts to muxer in stream, any help I appreciate.

2021-07-20T19:59:47.304861674Z [2021-07-20 19:59:47.304] W [RtmpPubWorker:77] RTMPPush | rtmppush_session.cpp:73   | Could not supported codec. codec_id(8)
2021-07-20T19:59:47.368051330Z [2021-07-20 19:59:47.367] I [RtmpPubWorker:77] FFmpeg | third_parties.cpp:118  | Output #0, flv, to 'rtmp://t.ypt.me/live2?e=b3dtVG9pU2o4bjIvblJyTnVrb0twdzM5WDFqRmpqM1c3c2daRlNQajBSNVZOUUE1YTVkMmFNb3VPY09ZVll3Lw==/60f729f03e666':
2021-07-20T19:59:47.368093977Z [2021-07-20 19:59:47.367] I [RtmpPubWorker:77] FFmpeg | third_parties.cpp:118  |   Metadata:
2021-07-20T19:59:47.368289390Z [2021-07-20 19:59:47.368] I [RtmpPubWorker:77] FFmpeg | third_parties.cpp:118  |     encoder         : 
2021-07-20T19:59:47.368330713Z [2021-07-20 19:59:47.368] I [RtmpPubWorker:77] FFmpeg | third_parties.cpp:118  | Lavf58.45.100
2021-07-20T19:59:47.368349276Z [2021-07-20 19:59:47.368] I [RtmpPubWorker:77] FFmpeg | third_parties.cpp:118  | 
2021-07-20T19:59:47.368394577Z [2021-07-20 19:59:47.368] I [RtmpPubWorker:77] FFmpeg | third_parties.cpp:118  |     Stream #0:0
2021-07-20T19:59:47.368478745Z [2021-07-20 19:59:47.368] I [RtmpPubWorker:77] FFmpeg | third_parties.cpp:118  | : Video: h264, 1 reference frame ([7][0][0][0] / 0x0007), yuv420p, 1280x720 (0x0) [SAR 1:1 DAR 16:9], 0/1, q=2-31
2021-07-20T19:59:47.368587383Z [2021-07-20 19:59:47.368] I [RtmpPubWorker:77] FFmpeg | third_parties.cpp:118  | , 
2021-07-20T19:59:47.368736646Z [2021-07-20 19:59:47.368] I [RtmpPubWorker:77] FFmpeg | third_parties.cpp:118  | 1k tbn
2021-07-20T19:59:47.368777515Z [2021-07-20 19:59:47.368] I [RtmpPubWorker:77] FFmpeg | third_parties.cpp:118  | 
2021-07-20T19:59:47.368920047Z [2021-07-20 19:59:47.368] I [RtmpPubWorker:77] FFmpeg | third_parties.cpp:118  |     Stream #0:1
2021-07-20T19:59:47.368989904Z [2021-07-20 19:59:47.368] I [RtmpPubWorker:77] FFmpeg | third_parties.cpp:118  | : Audio: aac ([10][0][0][0] / 0x000A), 48000 Hz, stereo, 128 kb/s
2021-07-20T19:59:47.369038250Z [2021-07-20 19:59:47.368] I [RtmpPubWorker:77] FFmpeg | third_parties.cpp:118  | 
2021-07-20T19:59:51.390811444Z [2021-07-20 19:59:51.390] I [AppWorker:114] LLDASH | cmaf_packetizer.cpp:766  | [0x7f403c021070] LLDASH segment is ready to stream [#default#app/t.ypt.me_60f72a9e2b1fa], segment duration: 5.000000s, count: 1
2021-07-20T19:59:51.391115418Z [2021-07-20 19:59:51.390] I [AppWorker:114] LLDASH.Stat | cmaf_packetizer.cpp:886  | [#default#app/t.ypt.me_60f72a9e2b1fa] Jitter statistics
2021-07-20T19:59:51.391179317Z   - Elapsed: 5594ms (current: 1626811191390ms, start: 1626811185796ms)
2021-07-20T19:59:51.391203850Z   - Jitter: 115ms (115ms - 0ms), correction: 0ms => 0ms (0ms)
2021-07-20T19:59:51.391221932Z   - Stream delta: 5479ms
2021-07-20T19:59:51.391246365Z     - Video: last PTS: 5479ms, start: 0ms, delta: 5479ms
2021-07-20T19:59:51.391263721Z     - Audio: last PTS: 5610ms, start: 64ms, delta: 5546ms
2021-07-20T19:59:51.391280689Z     - A-V Sync: 67 (A: 5546, V: 5479)
2021-07-20T19:59:51.391960046Z [2021-07-20 19:59:51.391] I [AppWorker:110] HLS.Stat | hls_packetizer.cpp:349  | [#default#app/t.ypt.me_60f72a9e2b1fa] HLS: A-V Sync: 53ms (A: 85ms, V: 32ms)2021-07-20T19:59:59.417656481Z [2021-07-20 19:59:59.417] W [AppWorker:112] FFmpeg | third_parties.cpp:114  | [AVFormatContext: 0x7f4058294e40] Packet with invalid duration -3420 in stream 0
2021-07-20T19:59:59.418253575Z [2021-07-20 19:59:59.418] W [AppWorker:110] FFmpeg | third_parties.cpp:114  | [AVFormatContext: 0x7f405c07da80] Packet with invalid duration -3420 in stream 0
2021-07-20T19:59:59.426841754Z [2021-07-20 19:59:59.426] E [AppWorker:112] FFmpeg | third_parties.cpp:110  | [AVFormatContext: 0x7f4058294e40] Application provided invalid, non monotonically increasing dts to muxer in stream 0: 1231740 >= 1228320
2021-07-20T19:59:59.426889304Z [2021-07-20 19:59:59.426] E [AppWorker:110] FFmpeg | third_parties.cpp:110  | [AVFormatContext: 0x7f405c07da80] Application provided invalid, non monotonically increasing dts to muxer in stream 0: 1231740 >= 1228320
2021-07-20T19:59:59.426914382Z [2021-07-20 19:59:59.426] E [StreamWorker:1389] FFmpeg | third_parties.cpp:110  | [AVFormatContext: 0x7f3fd8017bc0] Application provided invalid, non monotonically increasing dts to muxer in stream 0: 13686 >= 13648
2021-07-20T19:59:59.426932088Z [2021-07-20 19:59:59.426] E [AppWorker:110] Writer | writer.cpp:632  | [0x7f403c038468] Could not write the frame: Invalid argument
2021-07-20T19:59:59.426954901Z [2021-07-20 19:59:59.426] E [AppWorker:112] Writer | writer.cpp:632  | [0x7f403c02cbd0] Could not write the frame: Invalid argument
2021-07-20T19:59:59.427043827Z [2021-07-20 19:59:59.426] E [StreamWorker:1389] RTMPWriter | rtmp_writer.cpp:376  | Send packet error(-22:Invalid argument)
2021-07-20T19:59:59.427059777Z [2021-07-20 19:59:59.427] E [StreamWorker:1389] RTMPPush | rtmppush_session.cpp:158  | Failed to add packet
2021-07-20T19:59:59.427200345Z [2021-07-20 19:59:59.427] W [StreamWorker:1389] FFmpeg | third_parties.cpp:114  | [AVFormatContext: 0x7f3fd8017bc0] Failed to update header with correct duration.
2021-07-20T19:59:59.427267799Z [2021-07-20 19:59:59.427] W [StreamWorker:1389] FFmpeg | third_parties.cpp:114  | [AVFormatContext: 0x7f3fd8017bc0] Failed to update header with correct filesize.
2021-07-20T20:00:00.870287843Z [2021-07-20 20:00:00.870] I [AppWorker:114] LLDASH.Stat | cmaf_packetizer.cpp:886  | [#default#app/t.ypt.me_60f72a9e2b1fa] Jitter statistics
2021-07-20T20:00:00.870336821Z   - Elapsed: 15073ms (current: 1626811200869ms, start: 1626811185796ms)
2021-07-20T20:00:00.870354939Z   - Jitter: 76ms (76ms - 0ms), correction: 0ms => 0ms (0ms)
2021-07-20T20:00:00.870369404Z   - Stream delta: 14997ms
2021-07-20T20:00:00.870383902Z     - Video: last PTS: 15160ms, start: 0ms, delta: 15160ms
2021-07-20T20:00:00.870397337Z     - Audio: last PTS: 15061ms, start: 64ms, delta: 14997ms
2021-07-20T20:00:00.870412813Z     - A-V Sync: -163 (A: 14997, V: 15160)
2021-07-20T20:00:05.921218167Z [2021-07-20 20:00:05.920] I [AppWorker:114] LLDASH.Stat | cmaf_packetizer.cpp:886  | [#default#app/t.ypt.me_60f72a9e2b1fa] Jitter statistics
2021-07-20T20:00:05.921333569Z   - Elapsed: 20124ms (current: 1626811205920ms, start: 1626811185796ms)
2021-07-20T20:00:05.921378233Z   - Jitter: 397ms (397ms - 0ms), correction: 0ms => 0ms (0ms)
2021-07-20T20:00:05.921421633Z   - Stream delta: 19727ms
2021-07-20T20:00:05.921455432Z     - Video: last PTS: 19727ms, start: 0ms, delta: 19727ms
2021-07-20T20:00:05.921487912Z     - Audio: last PTS: 20053ms, start: 64ms, delta: 19989ms
2021-07-20T20:00:05.921514303Z     - A-V Sync: 262 (A: 19989, V: 19727)
getroot commented 3 years ago

I need more information to figure this out.

DanielnetoDotCom commented 3 years ago

Thanks for your support, I am making a lot of tests let me give you more details

If I use the WebRTC player from a desktop browser it works perfect, but I am getting the same result from mobile,

Tested on Chrome and Safari iOS and Chrome on Android

Are you trying to stream over WebRTC from iPhone?

Yes also I have tried from Android and I got the same result

Tested from https://demo.ovenplayer.com/demo_input.html?

No, I got the ovenplayer and I am hosting myself

Are you trying to get input over WebRTC and push to another server with RTMP?

Correct

What does crash mean? Is the server dead? Or is playback interrupted?

Only the RTMPPush. when I push it connects on the Nginx server, transmit for about 5 seconds then disconnect, I am pretty sure is something on the OME ffmpeg command

If the server dies, compile in debug mode and reproduce the crash, and then provide us with a crash dump to solve the problem quickly. (It will exist as crash_20210721.dump in the directory where the ome binary is located.)

Does not dies, only the RTMPPush is interrupted

What system goes into iPhone -> OME -> (???)?? And if you play directly from ome over hls or webrtc does it work?

Yes, it does work

What version of OME are you using?

Docker latest

Upload full log. If you truncate the log and upload it, I can't figure out the problem.

The truncated log is on this query https://github.com/AirenSoft/OvenMediaEngine/issues/446#issue-949033267

Upload Server.xml.

<?xml version="1.0" encoding="UTF-8"?>

<Server version="8">
    <Name>OvenMediaEngine</Name>
    <!-- Host type (origin/edge) -->
    <Type>origin</Type>
    <!-- Specify IP address to bind (* means all IPs) -->
    <IP>*</IP>

    <!-- 
    To get the public IP address(mapped address of stun) of the local server. 
    This is useful when OME cannot obtain a public IP from an interface, such as AWS or docker environment. 
    If this is successful, you can use ${PublicIP} in your settings.
    -->
    <StunServer>stun.l.google.com:19302</StunServer>

    <!-- Settings for the ports to bind -->
    <Bind>
        <!-- Enable this configuration if you want to use API Server -->
        <Managers>
            <API>
                <Port>${env:OME_API_PORT:48081}</Port>
                <WorkerCount>1</WorkerCount>
            </API>
        </Managers>

        <Providers>
            <RTMP>
                <Port>${env:OME_RTMP_PROV_PORT:41935}</Port>
            </RTMP>
            <SRT>
                <Port>${env:OME_SRT_PROV_PORT:9999}</Port>
            </SRT>
            <MPEGTS>
                <Port>${env:OME_MPEGTS_PROV_PORT:4000-4003,4004,4005/udp}</Port>
            </MPEGTS>
            <WebRTC>
                <Signalling>
                    <Port>${env:OME_SIGNALLING_PORT:3333}</Port>
                    <!-- If you want to use TLS, specify the TLS port -->
                    <TLSPort>${env:OME_SOCKET_PORT:3334}</TLSPort>
                </Signalling>
                <IceCandidates>
                    <TcpRelay>${env:OME_TCP_RELAY_ADDRESS:*:3478}</TcpRelay>
                    <IceCandidate>${env:OME_ICE_CANDIDATES:*:10006-10010/udp}</IceCandidate>
                </IceCandidates>
            </WebRTC>
        </Providers>

        <Publishers>
            <!-- The OVT is protocol for ORIGIN-EDGE -->
            <OVT>
                <Port>${env:OME_ORIGIN_PORT:9000}</Port>
            </OVT>
            <HLS>
                <Port>${env:OME_HLS_STREAM_PORT:8080}</Port>
                <!-- If you want to use TLS, specify the TLS port -->
                <TLSPort>${env:OME_STREAM_PORT_TLS:8443}</TLSPort>
            </HLS>
            <DASH>
                <Port>${env:OME_DASH_STREAM_PORT:8080}</Port>
                <!-- If you want to use TLS, specify the TLS port -->
                <TLSPort>${env:OME_STREAM_PORT_TLS:8443}</TLSPort>
            </DASH>
            <WebRTC>
                <Signalling>
                    <Port>${env:OME_SIGNALLING_PORT:3333}</Port>
                    <!-- If you want to use TLS, specify the TLS port -->
                    <TLSPort>${env:OME_SOCKET_PORT:3334}</TLSPort>
                </Signalling>
                <IceCandidates>
                    <TcpRelay>${env:OME_TCP_RELAY_ADDRESS:*:3478}</TcpRelay>
                    <IceCandidate>${env:OME_ICE_CANDIDATES:*:10006-10010/udp}</IceCandidate>
                </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>

            <!-- Settings for multi ip/domain and TLS -->
            <Host>
                <Names>
                    <Name>{ServerHost}</Name>
                </Names>

                <TLS>
                    <CertPath>/cert/CertPath.pem</CertPath>
                    <KeyPath>/cert/KeyPath.pem</KeyPath>
                    <ChainCertPath>/cert/ChainCertPath.pem</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>
                    <SeretKey></SecretKey>
                    <Timeout>3000</Timeout>
                    <Enables>
                            <Providers>rtmp,webrtc,srt</Providers>
                            <Publishers>webrtc,hls,dash,lldash</Publishers>
                    </Enables>
            </AdmissionWebhooks>
            -->

            <!--
            <Origins>

                    <Origin>
                            <Location>/app/stream</Location>
                            <Pass>
                                    <Scheme>ovt</Scheme>
                                    <Urls><Url>origin.com:9000/app/stream_720p</Url></Urls>
                            </Pass>
                    </Origin>
                    <Origin>
                            <Location>/app/</Location>
                            <Pass>
                                    <Scheme>ovt</Scheme>
                                    <Urls><Url>origin.com:9000/app/</Url></Urls>
                            </Pass>
                    </Origin>
                    <Origin>
                            <Location>/edge/</Location>
                            <Pass>
                                    <Scheme>ovt</Scheme>
                                    <Urls><Url>origin.com:9000/app/</Url></Urls>
                            </Pass>
                    </Origin>
            </Origins>
            -->
            <!-- Settings for applications -->
            <Applications>
                <Application>
                    <Name>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>false</Bypass>
                                    <Codec>aac</Codec>
                                    <Bitrate>128000</Bitrate>
                                    <Samplerate>48000</Samplerate>
                                    <Channel>2</Channel>
                                </Audio>
                                <Video>
                                    <Bypass>true</Bypass>
                                    <Codec>vp8</Codec>
                                    <Width>1280</Width>
                                    <Height>720</Height>
                                    <Bitrate>2000000</Bitrate>
                                    <Framerate>30.0</Framerate>
                                </Video>
                                <Audio>
                                    <Codec>opus</Codec>
                                    <Bitrate>128000</Bitrate>
                                    <Samplerate>48000</Samplerate>
                                    <Channel>2</Channel>
                                </Audio>
                                <!--                            
                                <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>
                            </StreamMap>
                        </MPEGTS>
                        <RTSPPull />
                        <WebRTC>
                            <Timeout>30000</Timeout>
                        </WebRTC>
                    </Providers>
                    <Publishers>
                        <SessionLoadBalancingThreadCount>8</SessionLoadBalancingThreadCount>
                        <OVT />
                        <WebRTC>
                            <Timeout>30000</Timeout>
                            <Rtx>true</Rtx>
                            <Ulpfec>true</Ulpfec>
                        </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>
                        <RTMPPush></RTMPPush>
                    </Publishers>
                </Application>
            </Applications>
        </VirtualHost>
    </VirtualHosts>
    <Managers>
        <Host>
            <Names>
                <Name>*</Name>
            </Names>
            <!--
                    If you want to set up TLS, set it up by referring to the following:
            <TLS>
                    <CertPath>airensoft_com.crt</CertPath>
                    <KeyPath>airensoft_com.key</KeyPath>
                    <ChainCertPath>airensoft_com_chain.crt</ChainCertPath>
            </TLS>
            -->
        </Host>
        <API>
            <AccessToken>{AccessToken}</AccessToken>
        </API>
    </Managers>
</Server>

Is the server's performance or network performance fast enough?

Yes, 500 mbps server

DanielnetoDotCom commented 3 years ago

Another information, WebRTC from the PC the audio is awesome, but WebRTC from mobile the audio is unlistenable, sounds like a robot

I am not sure if there is something I can do about it

getroot commented 3 years ago

This may be due to the network speed of your mobile.

Here is a demo service that allows you to test webrtc broadcast and playback at the same time. This is an aws instance installed in Seoul region. This works great for iPhone, Android and PC. Test it here and let us know the results.

https://space.ovenplayer.com/

DanielnetoDotCom commented 3 years ago

Thanks for your response @getroot

WebRTC ingests and WebRTC playing works fine.

the problem is when I use WebRTC ingest and consume the video using HLS or pullRTMP, the audio is not good when I use the mobile

do you have an HLS ling from your page so I can test it?

DanielnetoDotCom commented 3 years ago

https://t.ypt.me/live/0/JesusIsTheLord/1

https://webrtc.ca1.ypt.me:8444/app/t.ypt.me_60f8d78637179/playlist.m3u8

getroot commented 3 years ago

getroot@airensoft.com

getroot commented 3 years ago

I'll test the WebRTC input/HLS output with the same settings as yours.

DanielnetoDotCom commented 3 years ago

I am preparing a server that you can use just in case

DanielnetoDotCom commented 3 years ago

I just sent you a email with credentials that you can use to test fell free to install /uninstall anything you want

DanielnetoDotCom commented 3 years ago

Unbelievable, I just set up a new server for you and everything is working as expected. the old server is even a better server than this one (more CPU and more bandwidth and SSD drives), But the new server has only OME installed, maybe has something to do with the other apps I do not know what to say. I will make more tests, and thanks for your support.

getroot commented 3 years ago

If so, it is possible that the aac codec is installed incorrectly. Anyway, congratulations. I wish your project success!

If you send us your use case after the project is complete (or when you're not busy), and you allow us to write an article on it on our blog, that's a big contribution to us.

DanielnetoDotCom commented 3 years ago

Hi,

Good morning and thanks for your support

I am using docker, how can I make sure the aac codec is installed correctly? should I check this on the host server?

regarding the use case, it will be a pleasure. For your information, I am adapting your server to use on this project: https://github.com/WWBN/AVideo

it is 90% complete I will use your server to feed our live stream service. I have thousands of websites that will run your server.

regarding the adaptation, I will make some questions (I can open one issue for each if you prefer)

I am currently using a restream tool I develop, I had some problems with the pushRTMP and you said it was on beta. but this was on the old server, I am not sure if it will happen on the new server, but the restream tool seems to be more stable but I guess it will increase the latency. so the pushRTMP still an option for me I just need a way to check if the pushRTMP is active or not, the API do not provide that information. if I list the push it will show active but it is not. maybe if I can detect a problem on the pushRTMP I can fall back on the restream feature.

Currently, I do not need all the Providers and Publishers, I guess if I disable them on the Server.xml it will save some resources, so my idea is ...

Providers

for provider, I will only need/enable WebRTC I will also need to use only the TLS port (3334), if I use only the TLS do I need the regular port open (3333)? or can I disable that too?

Publishers

for a publisher, I need something that I can read from an external FFMPEG, so I guess I can use HLS or DASH or LLDASH. From those what is the fastest/best?

I am not sure if FFmpeg will be able to read the WebRTC socket, then restream it, do you have any idea if it is possible?

Tests

I have a good environment for testing, and it will be a pleasure to give you access to it if you want.; the environment has the AVideo installation + Nginx RTMP servers + OME

again congratulations, your project is awesome!

getroot commented 3 years ago

I am using docker, how can I make sure the aac codec is installed correctly? should I check this on the host server?

I'm not sure about this either. At least I've never experienced this. OME is using FDKAAC_VERSION=0.1.5.

I had some problems with the pushRTMP

If there is a problem with rtmp push on a new server, please create a new issue.

I will also need to use only the TLS port (3334), if I use only the TLS do I need the regular port open (3333)? or can I disable that too?

You can close the regular port 3333.

From those what is the fastest/best?

HLS is the most reliable. FFMPEG cannot read WebRTC in OME.

I have a good environment for testing, and it will be a pleasure to give you access to it if you want.; the environment has the AVideo installation + Nginx RTMP servers + OME

Thank you for providing a test environment. I'll ask you later when I need it.

getroot commented 3 years ago

This issue has been closed since it has been inactive for quite some time. If you want to continue discussing this issue, please feel free to reopen it.