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