IIS 7 and Above
'trun'.DataOffset has incorrect value for LIVE Smooth Streams
Last post Jan 13, 2017 08:54 AM by audriusi
Dec 27, 2016 03:46 PM|audriusi|LINK
We're using and encoder to create and publish live Smooth Streams. Encoder is pushing to a live Smooth Streaming publishing point on IIS.
We use Google's ExoPlayer for playback and recently we encountered an issue where we can't play the live Smooth Stream anymore. After a more thorough investigation we found that ExoPlayer fails to play the stream due to invalid 'trun'.DataOffset value (https://github.com/google/ExoPlayer/issues/2101)
. The (moof.Offset + trun.DataOffset) value points to first byte of 'tfrf' box when it should point to first 'mdat' box. It seems that the DataOffset value was not updated after 'tfrf' box was inserted. The trun.DataOffset value is off by 61 bytes which
is the exact size of 'tfrf' box.
My question is - which part of the application chain ads 'tfrf' boxes and who is responsible to update 'trun'.DataOffset (Encoder, IIS, IIS Media Services) ?
VOD streams from the same encoder play fine, but they do not have 'tfxd' and 'tfrf' boxes.
[UPDATE] I've been in contact with our encoder vendor and they confirm that 'tfrf' boxes are not added by encoder. So it could be that IIS or IIS Media Services are not updating 'trun'.DataOffset properly after adding 'tfrf' box. Is there any configuration
setting that could impact this ? (the publishing point configuration is pretty straightforward as far as I see). We're running Windows 2008R2, IIS 7.5 and IIS Media Services 4.1
Dec 28, 2016 03:26 AM|Yuk Ding|LINK
To further help you about this issue, I am trying to invoke someone experienced to help look into this thread, this may take some time and as soon as we get any result, we will post back.
Jan 03, 2017 09:44 AM|Adamus_7|LINK
I'm not quite understand of your problem.
Do you want to modify a specific value in HTTP header?
Jan 13, 2017 08:44 AM|audriusi|LINK
Hi Yuk Ding,
Thank you. Let me know when you have more info.
Jan 13, 2017 08:54 AM|audriusi|LINK
I'm not modifying anything myself. I have a standard encoder pushing LIVE stream to a standard publishing point provided by IIS and MediaServices. The problem is that a resulting LIVE Smooth Stream has invalid value in 'trun.DataOffset'. Hence my question
is which part of the whole chain (Encoder, IIS, MediaServices) is responsible for updating 'trun.DataOffset' to a proper value. The value is off by 61 bytes which is the exact size of a 'tfrf' box. And I don't know who is adding 'tfrf' boxes to the stream.