Wowza DVR & Playlist Request (UTC Time)

Hi,

I’m trying to make DVR work on HD Box. I’ve already make it work by press previous/forward button on the remote, using Wowza DVR link.

The next thing is: I want to provide seeking by TV program (ie, user click on the day schedule of a TV channel and choose the program to seek).

I’ve known that Wowza provide the playlist request API, following this topic:

https://www.wowza.com/docs/how-to-use-wowza-ndvr-playlist-request-api

There are 2 parameters that need to play: wowzadvrplayliststart & wowzadvrplaylistduration. Is there any way to make it work without the wowzadvrplaylistduration, because it will limit the play time, whereas user can play to live if they want.

And how about using UTC time? example: when user select a program:

1/ The box check current UTC time, and calculate the seek time (in second) and send seek time to Wowza.

2/ The box send UTC time to Wowza, and Wowza play the stream at that time.

I’m not a java developer. Hopefully there’s an easier way (than coding server side) to make it possible?

Thank you so much for your help.

Lee

Hi,

You can change the name of those parameters. They don’t have to be named wowzadvrplayliststart & wowzadvrplaylistduration, but you do need them both.

It is possible to send the UTC time to Wowza as a value for the parameters passed to the server, but this would require you to develop a custom Wowza module. You have some code examples in this article: https://www.wowza.com/docs/how-to-use-wowza-ndvr-playlist-request-api

At the end of this article you can find this code example: “Creating a UTC time based playlist request”

Zoran

you could playback from a specific position, and letting customer go to the live (assuming live is active) … but there are some tricks to do that, and you may get into performance issues

By experience, I’d suggest you let customers play the show they want, and if they want to go live, they do it through a player button or action

That’s the way I’ve done it and worked better for me

hi lee …

This is how Wowza nDVR works … if the live stream is active, and you don’t set up a end duration for the content you are extracting from the nDVR, it will go to the live point, not the cuepoint you are telling. This is not Wowza’s fault, it’s a player thing. Players, when they detect there’s a live stream (meaning there’s no end point for the video) act as a live stream, meaning they play the live, and keep asking for update of the manifest to keep playing live. Players only start at cuepoint when it’s a VOD manifest (start and end of content).

If you want the behavior of a user being able to start playing at the beginning of the show even when the stream is live, you’ll have to write your own player controller.

It’s not Strobe … it will happen with all players that support nDVR when the stream is live

Well … you’ll have to learn HDS …

What you are getting here is the url for the playlist. Manifest is just a list of playlist in case you have multiple bitrates.

So, in your case, it’s telling you that “DVR_b125000_w307107880_qdXRjdGltZT0yMDEzLTA5LTIzLTEwJTNBMjMlM0EwMCZEVlI=.abst” is the playlist. That playlist will have the list of fragments to playback

no, unfortunately, players are not my thing. By the way, I’ve never saw anybody doing what you are trying to do. it’ll be like breaking the concept of live streaming

Buffer control will be an interesting thing to do on the player as well when doing this

I guess we could argue long about usability or not of this feature. It depends on use case, and, for mines, I find it very useful

Thank you Zoran & tavius for the help,

@Zoran: I knew it, so that means there’re no way (without tricks) for customer play the show they want and watch to live?

@tavius: They can go live fine with an action or button, but how about this behaviour: they want to move back to watch the show they want, and they still watch, then if time exceeded wowzadvrplaylistduration variable, the player will stop. Is there anyway to set wowzadvrplaylistduration to 0 or something that does not limit the play length? Could you plase share me some tricks to do that?

@Zoran: I can build the UTC time example module and put it into my server, but I don’t know how it work, I mean how to set input parameter?

This:

// . . . This could come from URL param or some other manner

String startStr= “2012-02-14-11:30:00”;

Hi,

I’ve buit the example UTC Time code and it work: http://118.69.166.134/dvr/vtv1_2500.stream/manifest.f4m?DVR&utctime=2013-09-20-12:30:00

However, when i play the link above, the time is cut exactly but it play at live, not the cut point (12:30)

I think the problem is the player (using Strobeplayer) go into live, not the seek time, that require user seek manual to the beginning

Hi Tavius,

Thank you for your information. So that mean the UTC Time task is done, the remaining task is to develop the player control function. My task is just input the UTC Time and get the return the playlist to the Box’s Player, RAD center will do the rest.

One more thing I’d like to know is the return value (the return playlist) of Wowza, what does it contain?

This is what I see when open the link above on the browser:

<manifest xmlns="http://ns.adobe.com/f4m/2.0">
<id>htv7_2500.stream.0</id>
<width>320</width>
<height>240</height>
<mimeType>video/mp4</mimeType>
<streamType>dvr</streamType>
<deliveryType>streaming</deliveryType>
<dvrInfo windowDuration="21600"></dvrInfo>
<media width="320" height="240" url="DVR_b125000_w307107880_qdXRjdGltZT0yMDEzLTA5LTIzLTEwJTNBMjMlM0EwMCZEVlI=.abst/">
<metadata>
AgAKb25NZXRhRGF0YQMADWF1ZGlvY2hhbm5lbHMAQAAAAAAAAAAAD2F1ZGlvc2FtcGxlcmF0ZQBA53AAAAAAAAAMYXVkaW9jb2RlY2lkAgAEbXA0YQAMdmlkZW9jb2RlY2lkAgAEYXZjMQAJdHJhY2tpbmZvCgAAAAIDAAl0aW1lc2NhbGUAAAAAAAAAAAAACGxhbmd1YWdlAgADZW5nABFzYW1wbGVkZXNjcmlwdGlvbgoAAAABAwAKc2FtcGxldHlwZQIAAAAACQAEdHlwZQIABWF1ZGlvAAZjb25maWcCAAQxMTkwAAtkZXNjcmlwdGlvbgIAV3tBQUNGcmFtZTogY29kZWM6QUFDLCBjaGFubmVsczoyLCBmcmVxdWVuY3k6NDgwMDAsIHNhbXBsZXNQZXJGcmFtZToxMDI0LCBvYmplY3RUeXBlOkxDfQAACQMACXRpbWVzY2FsZQAAAAAAAAAAAAAIbGFuZ3VhZ2UCAANlbmcAEXNhbXBsZWRlc2NyaXB0aW9uCgAAAAEDAApzYW1wbGV0eXBlAgAAAAAJAAR0eXBlAgAFdmlkZW8AAAkADnJ0cHNlc3Npb25pbmZvAwAOY29ubmVjdGlvbmRhdGECABFJTiBJUDQgMjI1LjEuMi44MAAEbmFtZQIAEFdvd3phTWVkaWFTZXJ2ZXIABm9yaWdpbgIAJi0gODc1MjY3ODM5IDg3NTI2NzgzOSBJTiBJUDQgMTI3LjAuMC4xAAZ0aW1pbmcCAAMwIDAAD3Byb3RvY29sdmVyc2lvbgIAATAACmF0dHJpYnV0ZXMDAAVyYW5nZQIACG5wdD1ub3ctAAAJAAAJAAAJ
</metadata>
</media>
<bootstrapInfo profile="named" url="playlist_b125000_w307107880.abst?utctime=2013-09-23-10%3A23%3A00&DVR"/>
</manifest>

Thank you again for helping me alot, tavius

Btw, do you have any experience in modifying the osmf/strobe player source code in order to support DVR-UTC-Time link start at cue point instead of live point?

I think there always have a way to do that for the dvr utc time, I mean, start at custom point (not live point), and make the player determine live stream link and dvr link. Because if not, the utc time playlist request is useless. And by searching, I really surprised that no one done this task before.