AirenSoft/OvenMediaEngine

WebRTC player not working with the new Docker image 0.16.7

Allenille opened this issue · 1 comments

Describe the bug
I was evaluating the OvenMediaEngine solution to replace our Antmedia server and I was using the 0.16.6 Docker image for my tests and development. This morning when I deployed my local stack with the new OME 0.16.7 it appears that the WebRTC player was not able to work anymore.
I did not change the Server.xml but only changed the version of the Docker image and when I switch back to the previous version 0.16.6 everything is working fine.

I also tried to test the server through OvenRtcTester and it did not work either.

To Reproduce
Steps to reproduce the behavior:

  1. Set Server.xml as follows:
<?xml version="1.0" encoding="UTF-8"?>

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

    <!-- Settings for the ports to bind -->
    <Bind>
        <Providers>
            <RTMP>
                <Port>1935</Port>
                <WorkerCount>1</WorkerCount>
            </RTMP>
        </Providers>

        <Publishers>
            <WebRTC>
                <Signalling>
                    <Port>3333</Port>
                    <TLSPort>3334</TLSPort>
                    <WorkerCount>1</WorkerCount>
                </Signalling>
                <IceCandidates>
                    <IceCandidate>*:10000-10004/udp</IceCandidate>
                    <!-- 
                        If you want to stream WebRTC over TCP, specify IP:Port for TURN server.
                        This uses the TURN protocol, which delivers the stream from the built-in TURN server to the player's TURN client over TCP. 
                        For detailed information, refer https://airensoft.gitbook.io/ovenmediaengine/streaming/webrtc-publishing#webrtc-over-tcp
                    -->
                    <TcpRelay>*:3478</TcpRelay>
                    <!-- TcpForce is an option to force the use of TCP rather than UDP in WebRTC streaming. (You can omit ?transport=tcp accordingly.) If <TcpRelay> is not set, playback may fail. -->
                    <TcpForce>true</TcpForce>
                    <TcpRelayWorkerCount>1</TcpRelayWorkerCount>
                </IceCandidates>
            </WebRTC>
        </Publishers>
    </Bind>
    <VirtualHosts>
        <VirtualHost>
            <Name>origin</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>origin</Distribution>

            <!-- Settings for multi ip/domain and TLS -->
            <Host>
                <Names>
                    <Name>*</Name>
                </Names>
            </Host>
            <!-- 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>
                            </Encodes>
                        </OutputProfile>
                    </OutputProfiles>
                    <Providers>
                        <RTMP />
                    </Providers>
                    <Publishers>
                        <AppWorkerCount>1</AppWorkerCount>
                        <StreamWorkerCount>8</StreamWorkerCount>
                        <WebRTC>
                            <Timeout>30000</Timeout>
                            <Rtx>false</Rtx>
                            <Ulpfec>false</Ulpfec>
                            <JitterBuffer>false</JitterBuffer>
                        </WebRTC>
                    </Publishers>
                </Application>
            </Applications>
        </VirtualHost>
    </VirtualHosts>
</Server>

Here is my docker compose file:

version: '3.6'

services:
  origin:
    build:
      context: .
    image: airensoft/ovenmediaengine:0.16.7
    ports:
    - "1935:1935/tcp" # RTMP Provider
    - "3333:3333/tcp" # WebRTC Signaling / LLHLS
    - "3478:3478/tcp" # WebRTC TURN
    - "10000-10004:10000-10004/udp" # WebRTC Candidate
    networks:
      - omenet
    restart: always
    # Uncomment the following line to use your own configuration file (./origin_conf/Server.xml)
    volumes:
    - ./origin_conf:/opt/ovenmediaengine/bin/origin_conf
    command: /opt/ovenmediaengine/bin/OvenMediaEngine -c origin_conf
  
  ovenplayer:
    image: airensoft/ovenplayerdemo:latest
    networks:
      - omenet
    ports:
      - 8090:80
networks: 
  omenet:
    driver: bridge
  1. Then I use OBS with rtmp ; rtmp://localhost:1935/app with the stream key=stream
  2. Then I launch the player with ws://localhost:3333/app/stream

Logs
_single-server-origin-1_logs (1).txt

I also tried the new Docker image on a cloud VM and it did not work either :(

Thanks to you, I realized that my test code was included in the release of 0.16.7. I fixed it urgently and released 0.16.8. Our build system will upload the new docker shortly. Thanks.