Jerky WebRTC playback

Hi

I’m using Wowza Stream Engine running on AWS to provide WebRTC streams from a SRT source. We are getting Jerky playback with the WebRTC playback on certain devices. If I look at it as MPEG DASH the live source plays fine, so i’m confident the source is ok, but when viewed as WebRTC its occasionally good and smooth, but more often than not Jerky.
Looking at the WebRTC internals (within Chrome) we do show a fair bit of packet loss, and the NACK count is quite high.

Does anyone have any ideas how to help smooth out the WebRTC video? It is in use for a Live TV production monitoring application, so Jerky video isn’t ideal, but low latency is required.

Incoming Streams are H264, around 2Mbs, 1280x720, 25fps, and other than changing the audio to OPUS, I’m doing no other transcoding on the Wowza server.

Many thanks

Mike

Welcome to the community @MICHAEL_BEAUMONT! :slightly_smiling_face:

Are you using the latest version of Engine which is 4.8.5? I ask because we had made some major improvements to WebRTC in that release. As far as certain devices being choppy, I can share this advice:

Some additional reminders for your own WebRTC application:

  • Do note that currently in Wowza Streaming Engine you will need to enable UDP to make WebRTC work in Firefox. WebRTC over TCP on Firefox is not supported at this time.
  • For H264, you’ll need to transcode the audio stream in Wowza Streaming Engine from the AAC audio codec to the Opus audio codec for WebRTC output. See more here.
  • For WebRTC playback with H264, you’ll need to use Opus as the audio codec. If you want to record that WebRTC stream, the Opus has to be transcoded to AAC for playback. The mp3 container cannot support the Opus codec, only AAC.
  • The StreamProperties > sortBufferSize controls the WebRTC buffer within Wowza.
  • Use UDP transport with Nack enabled because this will compensate for packet loss by requesting missed packets from the publisher.

If you’d like us run some test on your configuration, please send us a support ticket so we can determine the exact cause of the issue.

Be sure to do some experimentation with the buffer size, bitrates and make sure you have UDP as the top priority ice candidate in Streaming Engine manager.

Make sure UDP is enabled as Wowza recommends and you can have TCP also, but be sure UDP is first so all browsers will try that firstTo adjust their preferred order use the Priority up and down arrows.

…also make sure on the encoding side you are using the baseline setting.

Many thanks, i’ve had a bit of a play with some of those settings, and nothing seems to make much difference.

Do you have an example of how to set the

  • Use UDP transport with Nack enabled because this will compensate for packet loss by requesting missed packets from the publisher.

After a bit of reading around, i’ve added the following to the Application.xml / RTP / Properties

			<Property>
				<Name>useNack</Name>
				<Value>true</Value>
				<Type>Boolean</Type>
			</Property>
			<Property>
				<Name>jitterBufferDelay</Name>
				<Value>500</Value>
				<Type>integer</Type>
			</Property>

But not 100% sure if that’s what you were referring to.

I’ll create a support case

Thanks

Mike