I’m using a roVideoScreen to display live video stream as follows
video = CreateObject("roVideoScreen")
video.setMessagePort(msgPort)
video.SetContent(videoclip)
video.show()
where dump of videoclip looks like
streamformat: hls
streamurls: (list of 1)...
List(0)= http://SVR/PATH/index.m3u8?param1=xxx¶m2=yyy
streamqualities: (list of 1)...
List(0)= SD
live: true
streambitrates: (list of 1)...
List(0)= 0
playstart: -1
Where param1 is fixed but param2 is a ticket I obtain and has a limited life, so after few minutes the stream understandably dies. I modified the code to obtain new ticket prior to the expiration time and tried to just update with
videoclip=updateWithNewTicket()
video.SetContent(videoclip)
video.show()
and while the documentation states[/url:2c33qzvq]
You can call roVideoScreen.SetContent() while playing video
it doesn’t seem to work:
-
I don’t get an error on the new SetContent (I presume calling video.show() again is not needed - its just the paranoia)
-
Tracking the HTTP requests in Wireshark (running tcpdump on my router, redirecting captured traffic to my desktop) I can see that the
**.m3u8**requests are coming in with the new ticket but the**.ts**requests still have the original ticket - explaining the eventual failure.
Wondering if anyone has seen this, if there is a cleaner way to do this
I now see that there is more than one way to pass URLs into SetContent and that my method (StreamUrls) may be less than optimal for adaptive streams content metadata documentation[/url:2c33qzvq]. I’ll experiment with the “Stream” param instead of the “StreamUrls” but would appreciate any input/experience as that might take some serious refactoring
Thanks!
