AirenSoft / OvenMediaEngine

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

Safari playback issues #732

Closed bchah closed 2 years ago

bchah commented 2 years ago

Describe the bug Trying the latest master commits after 0.13.2 I noticed an interesting problem with Safari browser. Only one Safari browser can play back a stream from OME. Once a single Safari browser is playing back a stream, no other Safari browsers are able to view it. This sounds crazy, I know!

To Reproduce Steps to reproduce the behavior: Play back a stream from a Safari browser, then open another Safari browser and try playing the same stream (it does not even have to be on the same network). The stream will appear to be loading but playback does not occur. On the server it does not seem to count the new playback session as a viewer (i.e. the API shows the same viewer count as more Safari browsers connect).

Trying this with Chrome, I can open and playback as much as I want. I love Chrome.

Logs log.txt

Server (please complete the following information): Ubuntu 18.04 running master

Player (please complete the following information):

Additional context

getroot commented 2 years ago

oh good find thanks If there are no problems with the previous release version, this is probably a problem with the HTTP module I am developing. Is there any problem with the old version (0.13.2 release)? (I don't have SAFARI right now, so please check it out.)

bchah commented 2 years ago

Thank you @getroot, 0.13.2 does not have this issue. Let me know if there is anything I can do to help with Safari testing 😎

getroot commented 2 years ago

@bchah Thank you! I will check this

naanlizard commented 2 years ago

I also have safari if you need another mac/ios user :)

getroot commented 2 years ago

I tried to reproduce this issue today.

The problem did not reproduce on MacOS Catalina / Safari 14.1.1 (15611). (WebRTC playback)

Could you please check if it can be reproduced with the latest master? If it is reproduced, please provide a little more detailed information. (Mac version, Safari Version, ...)

bchah commented 2 years ago

Hi @getroot I want to do this test but I am unable to build from the latest master:

[439/443| 99%] [static] libfile_provider.a: C++ projects/providers/file/file_stream.cpp => intermediates/RELEASE/objs/providers/file/file_stream.o

projects/providers/file/file_stream.cpp: In member function 'virtual pvd::PullStream::ProcessMediaResult pvd::FileStream::ProcessMediaPacket()':

projects/providers/file/file_stream.cpp:337:45: sorry, unimplemented: non-trivial designated initializers not supported
   AVPacket packet = {.data = NULL, .size = 0};
                                             ^
compilation terminated due to -Wfatal-errors.

core/build_objects.mk:18: recipe for target 'intermediates/RELEASE/objs/providers/file/file_stream.o' failed
make: *** [intermediates/RELEASE/objs/providers/file/file_stream.o] Error 1

Is this my fault? 😅

Keukhan commented 2 years ago

@bchah This code may not compile depending on the GCC version. I modified the initialization code and applied it to master, so test it. Thanks.

bchah commented 2 years ago

@Keukhan thank you, the application now does compile from the latest master, but it crashes after initialization of the API server:

[2022-05-13 14:01:36.435] I [OvenMediaEngine:1101] Config | config_manager.cpp:205  | Trying to set logfile in directory... (/log/engine)
[2022-05-13 14:01:36.435] I [OvenMediaEngine:1101] Config | config_manager.cpp:227  | Trying to load configurations... (/opt/ovenmediaengine/bin/conf/Server.xml)
[2022-05-13 14:01:36.447] I [OvenMediaEngine:1101] OvenMediaEngine | banner.cpp:25   | OvenMediaEngine v0.13.2 (v0.13.2-99-gc455a0bc) is started on [omeserver.live] (Linux x86_64 - 5.4.0-107-generic, #121-Ubuntu SMP Thu Mar 24 16:04:27 UTC 2022)
[2022-05-13 14:01:36.447] I [OvenMediaEngine:1101] OvenMediaEngine | banner.cpp:27   | With modules:
[2022-05-13 14:01:36.447] I [OvenMediaEngine:1101] OvenMediaEngine | banner.cpp:28   |   FFmpeg 4.4.1
[2022-05-13 14:01:36.447] I [OvenMediaEngine:1101] OvenMediaEngine | banner.cpp:29   |     Configuration: --prefix=/opt/ovenmediaengine --extra-cflags='-I/opt/ovenmediaengine/include ' --extra-ldflags='-L/opt/ovenmediaengine/lib -Wl,-rpath,/opt/ovenmediaengine/lib' --extra-libs=-ldl --enable-shared --disable-static --disable-debug --disable-doc --disable-programs --disable-avdevice --disable-dct --disable-dwt --disable-lsp --disable-lzo --disable-rdft --disable-faan --disable-pixelutils --enable-zlib --enable-libopus --enable-libvpx --enable-libfdk_aac --enable-libopenh264 --enable-openssl --disable-nvdec --disable-nvdec --disable-vaapi --disable-vdpau --disable-cuda-llvm --disable-cuvid --disable-ffnvcodec --disable-everything --disable-fast-unaligned --enable-encoder='libvpx_vp8,libopus,libfdk_aac,libopenh264,mjpeg,png' --enable-decoder='aac,aac_latm,aac_fixed,h264,hevc,opus,vp8' --enable-parser='aac,aac_latm,aac_fixed,h264,hevc,opus,vp8' --enable-network --enable-protocol=tcp --enable-protocol=udp --enable-protocol='rtp,file,rtmp,tls,rtmps' --enable-demuxer='rtsp,flv,live_flv' --enable-muxer='mp4,webm,mpegts,flv,mpjpeg' --enable-filter='asetnsamples,aresample,aformat,channelmap,channelsplit,scale,transpose,fps,settb,asettb,format'
[2022-05-13 14:01:36.447] I [OvenMediaEngine:1101] OvenMediaEngine | banner.cpp:30   |     libavformat: 58.76.100
[2022-05-13 14:01:36.447] I [OvenMediaEngine:1101] OvenMediaEngine | banner.cpp:31   |     libavcodec: 58.134.100
[2022-05-13 14:01:36.447] I [OvenMediaEngine:1101] OvenMediaEngine | banner.cpp:32   |     libavutil: 56.70.100
[2022-05-13 14:01:36.447] I [OvenMediaEngine:1101] OvenMediaEngine | banner.cpp:33   |     libavfilter: 7.110.100
[2022-05-13 14:01:36.447] I [OvenMediaEngine:1101] OvenMediaEngine | banner.cpp:34   |     libswresample: 3.9.100
[2022-05-13 14:01:36.447] I [OvenMediaEngine:1101] OvenMediaEngine | banner.cpp:35   |     libswscale: 5.9.100
[2022-05-13 14:01:36.447] I [OvenMediaEngine:1101] OvenMediaEngine | banner.cpp:36   |   SRT: 1.4.4
[2022-05-13 14:01:36.447] I [OvenMediaEngine:1101] OvenMediaEngine | banner.cpp:37   |   SRTP: libsrtp2 2.4.2
[2022-05-13 14:01:36.447] I [OvenMediaEngine:1101] OvenMediaEngine | banner.cpp:38   |   OpenSSL: OpenSSL 3.0.2 15 Mar 2022
[2022-05-13 14:01:36.447] I [OvenMediaEngine:1101] OvenMediaEngine | banner.cpp:39   |     Configuration: compiler: gcc -fPIC -pthread -m64 -Wa,--noexecstack -Wall -O3 -DOPENSSL_USE_NODELETE -DL_ENDIAN -DOPENSSL_PIC -DOPENSSL_BUILDING_OPENSSL -DNDEBUG
[2022-05-13 14:01:36.447] I [OvenMediaEngine:1101] OvenMediaEngine | banner.cpp:40   |   JsonCpp: 1.9.3
[2022-05-13 14:01:36.447] I [OvenMediaEngine:1101] OvenMediaEngine | banner.cpp:41   |   jemalloc: 5.2.1-0-gea6b3e973b477b8061e0076bb257dbd7f3faa756
[2022-05-13 14:01:36.447] C [OvenMediaEngine:1101] OvenMediaEngine | main.cpp:297  | Current kernel version: 5.4.0-107-generic
[2022-05-13 14:01:36.447] C [OvenMediaEngine:1101] OvenMediaEngine | main.cpp:298  | Linux kernel version 5.3 through 5.6 have a critical bug. Please consider using a different version. (https://bugzilla.kernel.org/show_bug.cgi?id=205933)
[2022-05-13 14:01:36.447] I [OvenMediaEngine:1101] OvenMediaEngine | main.cpp:72   | Server ID : 0248d726-d6c0-451d-91ff-ca6239383457
[2022-05-13 14:01:36.455] I [OvenMediaEngine:1101] OvenMediaEngine | main.cpp:111  | Trying to create MediaRouter...
[2022-05-13 14:01:36.455] I [OvenMediaEngine:1101] MediaRouter | mediarouter.cpp:40   | Mediarouter has been started.
[2022-05-13 14:01:36.455] I [OvenMediaEngine:1101] OvenMediaEngine | main.cpp:114  | Trying to create WebRTC Publisher...
[2022-05-13 14:01:36.456] I [OvenMediaEngine:1101] Signalling.P2P | rtc_p2p_manager.cpp:27   | P2P is disabled in the configuration
[2022-05-13 14:01:36.457] I [OvenMediaEngine:1101] ICE | ice_port.cpp:86   | ICE port is bound to 0.0.0.0:10010/UDP (0x55cb003759a0)
[2022-05-13 14:01:36.457] I [OvenMediaEngine:1101] ICE | ice_port.cpp:128  | ICE port is bound to *:3333/TCP (0x55cb00370070)
[2022-05-13 14:01:36.457] I [OvenMediaEngine:1101] ICE | ice_port_manager.cpp:94   | RelayServer is created successfully: host:3333?transport=tcp
[2022-05-13 14:01:36.457] I [OvenMediaEngine:1101] WebRTC Publisher | webrtc_publisher.cpp:161  | WebRTC Publisher is listening on *:3333...
[2022-05-13 14:01:36.457] I [OvenMediaEngine:1101] Publisher | publisher.cpp:18   | WebRTC Publisher has been started.
[2022-05-13 14:01:36.458] I [OvenMediaEngine:1101] OvenMediaEngine | main.cpp:115  | Trying to create LLHLS Publisher...
[2022-05-13 14:01:36.458] W [OvenMediaEngine:1101] LLHLS Publisher | llhls_publisher.cpp:45   | LLHls Module is disabled
[2022-05-13 14:01:36.458] I [OvenMediaEngine:1101] OvenMediaEngine | main.cpp:116  | Trying to create HLS Publisher...
[2022-05-13 14:01:36.459] I [OvenMediaEngine:1101] Publisher | publisher.cpp:18   | HLS Publisher has been started.
[2022-05-13 14:01:36.459] I [OvenMediaEngine:1101] OvenMediaEngine | main.cpp:117  | Trying to create MPEG-DASH Publisher...
[2022-05-13 14:01:36.460] W [OvenMediaEngine:1101] DASH | dash_publisher.cpp:36   | DASH Publisher is disabled by configuration
[2022-05-13 14:01:36.460] I [OvenMediaEngine:1101] OvenMediaEngine | main.cpp:118  | Trying to create Low-Latency MPEG-DASH Publisher...
[2022-05-13 14:01:36.460] W [OvenMediaEngine:1101] LLDASH | cmaf_publisher.cpp:39   | LLDASH Publisher is disabled by configuration
[2022-05-13 14:01:36.460] I [OvenMediaEngine:1101] OvenMediaEngine | main.cpp:119  | Trying to create OVT Publisher...
[2022-05-13 14:01:36.460] W [OvenMediaEngine:1101] OVT | ovt_publisher.cpp:38   | OVTPublisher is disabled by configuration
[2022-05-13 14:01:36.460] I [OvenMediaEngine:1101] OvenMediaEngine | main.cpp:120  | Trying to create File Publisher...
[2022-05-13 14:01:36.460] I [OvenMediaEngine:1101] Publisher | publisher.cpp:18   | FilePublisher has been started.
[2022-05-13 14:01:36.461] I [OvenMediaEngine:1101] OvenMediaEngine | main.cpp:121  | Trying to create MpegtsPush Publisher...
[2022-05-13 14:01:36.461] I [OvenMediaEngine:1101] Publisher | publisher.cpp:18   | MPEGTSPushPublisher has been started.
[2022-05-13 14:01:36.461] I [OvenMediaEngine:1101] OvenMediaEngine | main.cpp:122  | Trying to create RtmpPush Publisher...
[2022-05-13 14:01:36.461] I [OvenMediaEngine:1101] Publisher | publisher.cpp:18   | RTMPPushPublisher has been started.
[2022-05-13 14:01:36.461] I [OvenMediaEngine:1101] OvenMediaEngine | main.cpp:123  | Trying to create Thumbnail Publisher...
[2022-05-13 14:01:36.462] I [OvenMediaEngine:1101] Thumbnail | thumbnail_publisher.cpp:105  | Thumbnail publisher is listening on *
[2022-05-13 14:01:36.462] I [OvenMediaEngine:1101] Publisher | publisher.cpp:18   | ThumbnailPublisher has been started.
[2022-05-13 14:01:36.462] I [OvenMediaEngine:1101] OvenMediaEngine | main.cpp:126  | Trying to create Transcoder...
[2022-05-13 14:01:36.462] I [OvenMediaEngine:1101] OvenMediaEngine | main.cpp:129  | Trying to create WebRTC Provider...
[2022-05-13 14:01:36.466] W [OvenMediaEngine:1101] WebRTC Provider | webrtc_provider.cpp:50   | WebRTCProvider is disabled by configuration
[2022-05-13 14:01:36.466] I [OvenMediaEngine:1101] OvenMediaEngine | main.cpp:130  | Trying to create MPEG-TS Provider...
[2022-05-13 14:01:36.466] W [OvenMediaEngine:1101] MpegtsProvider | mpegts_provider.cpp:97   | MPEGTSProvider is disabled by configuration
[2022-05-13 14:01:36.466] I [OvenMediaEngine:1101] OvenMediaEngine | main.cpp:131  | Trying to create SRT Provider...
[2022-05-13 14:01:36.475] I [OvenMediaEngine:1101] SrtProvider | srt_provider.cpp:66   | SrtProvider is listening on *:9999/SRT
[2022-05-13 14:01:36.475] I [OvenMediaEngine:1101] Provider | provider.cpp:37   | SrtProvider has been started.
[2022-05-13 14:01:36.476] I [OvenMediaEngine:1101] OvenMediaEngine | main.cpp:132  | Trying to create RTMP Provider...
[2022-05-13 14:01:36.477] I [OvenMediaEngine:1101] RTMPProvider | rtmp_provider.cpp:101  | RTMPProvider is listening on *:1935/TCP
[2022-05-13 14:01:36.477] I [OvenMediaEngine:1101] Provider | provider.cpp:37   | RTMPProvider has been started.
[2022-05-13 14:01:36.478] I [OvenMediaEngine:1101] OvenMediaEngine | main.cpp:133  | Trying to create OVT Provider...
[2022-05-13 14:01:36.478] I [OvenMediaEngine:1101] Provider | provider.cpp:37   | OVTProvider has been started.
[2022-05-13 14:01:36.479] I [OvenMediaEngine:1101] OvenMediaEngine | main.cpp:134  | Trying to create RTSPC Provider...
[2022-05-13 14:01:36.479] I [OvenMediaEngine:1101] Provider | provider.cpp:37   | RTSPCProvider has been started.
[2022-05-13 14:01:36.480] I [OvenMediaEngine:1101] OvenMediaEngine | main.cpp:135  | Trying to create File Provider...
[2022-05-13 14:01:36.480] I [OvenMediaEngine:1101] Provider | provider.cpp:37   | FileProvider has been started.
[2022-05-13 14:01:36.480] I [OvenMediaEngine:1101] OvenMediaEngine | main.cpp:142  | All modules are initialized successfully
[2022-05-13 14:01:36.483] I [OvenMediaEngine:1101] Orchestrator | orchestrator_internal.cpp:701  | Trying to create an application: [#default#live]
[2022-05-13 14:01:36.484] I [OvenMediaEngine:1101] MediaRouter | mediarouter_application.cpp:44   | Created Mediarouter application. application id(0), app(#default#live), worker(1)
[2022-05-13 14:01:36.484] I [OvenMediaEngine:1101] MediaRouter | mediarouter_application.cpp:99   | Started Mediarouter application. application id(0), app(#default#live)
[2022-05-13 14:01:36.484] I [OvenMediaEngine:1101] MediaRouter | mediarouter.cpp:83   | Created Mediarouter. app(#default#live)
[2022-05-13 14:01:36.487] I [OvenMediaEngine:1101] Publisher | application.cpp:29   | WebRTC ApplicationWorker has been created
[2022-05-13 14:01:36.487] I [OvenMediaEngine:1101] Publisher | application.cpp:29   | WebRTC ApplicationWorker has been created
[2022-05-13 14:01:36.487] I [OvenMediaEngine:1101] Publisher | application.cpp:161  | WebRTC Publisher Application has created [#default#live] application
[2022-05-13 14:01:36.487] I [OvenMediaEngine:1101] Publisher | application.cpp:29   | HLS ApplicationWorker has been created
[2022-05-13 14:01:36.487] I [OvenMediaEngine:1101] Publisher | application.cpp:29   | HLS ApplicationWorker has been created
[2022-05-13 14:01:36.487] I [OvenMediaEngine:1101] Publisher | application.cpp:161  | HLS Publisher Application has created [#default#live] application
[2022-05-13 14:01:36.488] I [OvenMediaEngine:1101] Publisher | application.cpp:29   | File ApplicationWorker has been created
[2022-05-13 14:01:36.488] I [OvenMediaEngine:1101] Publisher | application.cpp:29   | File ApplicationWorker has been created
[2022-05-13 14:01:36.488] I [OvenMediaEngine:1101] Publisher | application.cpp:161  | FilePublisher Application has created [#default#live] application
[2022-05-13 14:01:36.488] W [OvenMediaEngine:1101] Publisher | publisher.cpp:70   | MPEGTSPush publisher is disabled in #default#live application, so it was not created
[2022-05-13 14:01:36.488] I [OvenMediaEngine:1101] Publisher | application.cpp:29   | RTMPPush ApplicationWorker has been created
[2022-05-13 14:01:36.490] I [OvenMediaEngine:1101] Publisher | application.cpp:29   | RTMPPush ApplicationWorker has been created
[2022-05-13 14:01:36.490] I [OvenMediaEngine:1101] Publisher | application.cpp:161  | RTMPPushPublisher Application has created [#default#live] application
[2022-05-13 14:01:36.491] I [OvenMediaEngine:1101] Publisher | application.cpp:29   | Thumbnail ApplicationWorker has been created
[2022-05-13 14:01:36.491] I [OvenMediaEngine:1101] Publisher | application.cpp:29   | Thumbnail ApplicationWorker has been created
[2022-05-13 14:01:36.491] I [OvenMediaEngine:1101] Publisher | application.cpp:161  | ThumbnailPublisher Application has created [#default#live] application
[2022-05-13 14:01:36.491] I [OvenMediaEngine:1101] Transcoder | transcoder_application.cpp:31   | Created transcoder application. app(#default#live)
[2022-05-13 14:01:36.491] I [OvenMediaEngine:1101] Transcoder | transcoder.cpp:86   | Transcoder has created [config][#default#live] application
[2022-05-13 14:01:36.491] I [OvenMediaEngine:1101] Provider | application.cpp:46   | SrtProvider has created [#default#live] application
[2022-05-13 14:01:36.491] I [OvenMediaEngine:1101] Provider | application.cpp:46   | RTMPProvider has created [#default#live] application
[2022-05-13 14:01:36.491] W [OvenMediaEngine:1101] Provider | provider.cpp:94   | OVT provider is disabled in #default#live application, so it was not created
[2022-05-13 14:01:36.491] W [OvenMediaEngine:1101] Provider | provider.cpp:94   | RTSP Pull provider is disabled in #default#live application, so it was not created
[2022-05-13 14:01:36.492] I [OvenMediaEngine:1101] APIServer | api_server.cpp:113  | API Server is listening on *:8081/TCP...
[2022-05-13 14:01:39.361] C [SPAPISvr-T8081:1132] OvenMediaEngine | signals.cpp:114  | OME received signal 6 (SIGABRT), interrupt.
[2022-05-13 14:01:39.361] E [SPAPISvr-T8081:1132] OvenMediaEngine | signals.cpp:152  | Could not open dump file to write
getroot commented 2 years ago

Maybe the crash is the problem I just fixed. Again, please!

bchah commented 2 years ago

Fixed in https://github.com/AirenSoft/OvenMediaEngine/commit/c743b6a6ce8026a28019b8d1e7068f5af193b137 - thank you @getroot !!