AirenSoft/OvenMediaEngine

Stream using WebRTC or WHIP involved in persistent live channel crashes OME

Manfred opened this issue · 1 comments

Describe the bug

When using a persistent live channel in OME the server will crash when you start streaming through WebRTC or WHIP.

To Reproduce

Setup the Server.xml as explained in this comment, meaning: with scheduled channels enabled. The example in the attached Server.xml uses slightly different ports and media directory, but the concept is exactly the same.

Then use something like this as the scheduled channel:

<?xml version="1.0"?>
<Schedule>
        <Stream>
                <Name>stream</Name>
                <BypassTranscoder>false</BypassTranscoder>
                <VideoTrack>true</VideoTrack>
                <AudioTrack>true</AudioTrack>
        </Stream>

        <FallbackProgram>
                <Item url="file://wait.mp4" start="0" duration="-1" />
        </FallbackProgram>

        <Program name="live" scheduled="2000-01-01T00:00:00.000+09" repeat="true">
                <Item url="stream://default/app/live" start="0" duration="-1" />
        </Program>
</Schedule>

It doesn't matter if you create the schedule channel first or after starting the live stream, but let's assume you have started the server.

Next connect to http:/127.0.0.1:3333/app/live?direction=whip with OBS, or start a WebRTC stream using the demo.

This will crash the server with signal 11 as shown in attached logs.

[2024-10-17 09:21:07.092] I [Scheduled:66] Provider | stream.cpp:567  | #default#app/stream(100) has been updated stream
[2024-10-17 09:21:07.092] I [Scheduled:66] Provider | stream.cpp:568  | 
[Stream Info]
id(100), msid(17), output(stream), SourceType(Scheduled), RepresentationType(Source), Created Time (Thu Oct 17 09:18:35 2024) UUID(b1bc92fc-755c-4795-a531-09c97dddaf3c/default/#default#app/stream/i)

	Video Track #0: Public Name(Video_0) Variant Name(Video) Bitrate(1.49Mb) Codec(1,H264,default:0) BSF(H264_RTP_RFC_6184) Resolution(1280x720) Framerate(30.82) KeyInterval(234/frame) SkipFrames(-1) BFrames(0) timebase(1/90000)
	Audio Track #1: Public Name(Audio_1) Variant Name(Audio) Bitrate(1.20Kb) Codec(8,OPUS,default) BSF(OPUS_RTP_RFC_7587) Samplerate(48.0K) Format(fltp, 32) Channel(stereo, 2) timebase(1/48000)
	Data  Track #2: Public Name() Variant Name(Data) Codec(0,Unknown,none) BSF(ID3v2) timebase(1/1000)
[2024-10-17 09:21:07.109] C [Scheduled:66] OvenMediaEngine | signals.cpp:148  | OME v0.17.1 ((From archive)) received signal 11 (SIGSEGV), interrupt.

In my experiments I tried a VPS, and both ovenmediaengine:dev and ovenmediaengine:latest running in a container on macOS.

Expected behavior

I expect the live stream to switch its video to the connected steam after wait.mp4 finishes playing.

Logs

See attachments.

Server (please complete the following information):

  • Debian GNU/Linux 12 (bookworm) / Docker on macOS 15.0.1
  • OvenMediaEngine Version: all recent versions 0.17.1 and dev

Player (please complete the following information):

  • Doesn't require a player to be connected

Files

ovenmediaengine.log
Server.xml.txt
stream.sch.txt
ome.sh.txt