NullPointerException when playing MPEG-DASH stream coming from WebRTC

When we try to transcode a stream coming from WebRTC in order to publish it using mpegdashstreamingpacketizer or cmafstreamingpacketizer eventually (the time is completely random) we start seeing the following exception:

HTTPStreamerMPEGDashLiveIndex.indexFile[live/_definst_/streamName_720p] : java.lang.NullPointerException
at com.wowza.wms.httpstreamer.mpegdashstreaming.livestreampacketizer.MPEGDashWriterHandler.indexStream(MPEGDashWriterHandler.java:2274)
at com.wowza.wms.httpstreamer.mpegdashstreaming.livestreampacketizer.LiveStreamPacketizerMPEGDash.indexStream(LiveStreamPacketizerMPEGDash.java:377)
at com.wowza.wms.httpstreamer.cmafstreaming.livestreampacketizer.LiveStreamPacketizerCmaf.indexStream(LiveStreamPacketizerCmaf.java:374)
at com.wowza.wms.httpstreamer.mpegdashstreaming.file.HTTPStreamerMPEGDashLiveIndexItem.indexStream(HTTPStreamerMPEGDashLiveIndexItem.java:354)
at com.wowza.wms.httpstreamer.mpegdashstreaming.file.HTTPStreamerMPEGDashLiveIndex.indexFile(HTTPStreamerMPEGDashLiveIndex.java:423)
at com.wowza.wms.httpstreamer.mpegdashstreaming.httpstreamer.HTTPStreamerSessionMPEGDash.createIndexLive(HTTPStreamerSessionMPEGDash.java:85)
at com.wowza.wms.httpstreamer.mpegdashstreaming.httpstreamer.HTTPStreamerSessionMPEGDash.getIndexLive(HTTPStreamerSessionMPEGDash.java:122)
at com.wowza.wms.httpstreamer.mpegdashstreaming.httpstreamer.HTTPStreamerAdapterMPEGDashStreamer.onManifest(HTTPStreamerAdapterMPEGDashStreamer.java:1481)
at com.wowza.wms.httpstreamer.mpegdashstreaming.httpstreamer.HTTPStreamerAdapterMPEGDashStreamer.serviceMsg(HTTPStreamerAdapterMPEGDashStreamer.java:240)
at com.wowza.wms.httpstreamer.mpegdashstreaming.httpstreamer.HTTPStreamerAdapterMPEGDashStreamer.service(HTTPStreamerAdapterMPEGDashStreamer.java:202)
at com.wowza.wms.server.ServerHandler.a(ServerHandler.java:703)
at com.wowza.wms.server.ServerHandler.a(ServerHandler.java:423)
at com.wowza.wms.server.ServerHandler.messageReceived(ServerHandler.java:552)
at com.wowza.wms.server.ServerHandlerThreaded.messageReceived(ServerHandlerThreaded.java:79)

As a result the stream can not be played anymore in MPEG-DASH player. Neither restart of the app nor the server restart solves the problem. The problem just appears and disappears randomly and only when we publish using WebRTC. With a RTMP stream coming from OBS everything works fine.

Our configuration:
WebRTC stream (H.264/Opus) is being transcoded into H.264/AAC (Key Frame Interval: we tried “Same as source”, 15 and 30 frames).

  • WebRTC client based on your example: https://github.com/WowzaMediaSystems/webrtc-examples
  • Wowza Streaming Engine ver. 4.8.8.1
  • CMAF Streaming Packetizer Settings:
    • cmafSegmentDurationTarget = 1000
    • cmafMaxSegmentCount = 50
    • cmafPlaylistSegmentCount = 12
    • cmafRepeaterSegmentCount = 12

Thank you for all the information you provided. What version of Java are you using and do you have Engine properly pointed to that version?

This was a bug that we had addressed back in 4.8.5 so I see you’re on 4.8.8.1 which is interesting.

If you are using Java 9 through 12 and that’s properly configured in Engine as shown here, please send us a support ticket so we can further investigate this for you. The engineers would like to see it and test it. Thanks…

https://www.wowza.com/support/open-ticket

1 Like