Forum Discussion

saulpower's avatar
saulpower
Visitor
11 years ago

Roku Poster Url Not Loading

So I've appropriately set a valid url (in the sense that I can open the image in a browser) for both the SDPosterUrl and HDPosterUrl in the content metadata. The Roku fails to load this image into any screen I try (roGridScreen, roPosterScreen, etc). All I get is "Image not available" text or a TV placeholder image on newer Rokus. The strange thing is I can take the same image file that the url is pointing to and include it in the channel package and it will load up fine. Is there some header or other bit that the Roku is expecting when requesting the image from the provided url? The test url I'm using right now is https://dl.dropboxusercontent.com/u/13209686/chromecast/headphones.png, and as you can see is being served by dropbox.
  • "saulpower" wrote:
    So I've appropriately set a valid url (in the sense that I can open the image in a browser) for both the SDPosterUrl and HDPosterUrl in the content metadata. The Roku fails to load this image into any screen I try (roGridScreen, roPosterScreen, etc). All I get is "Image not available" text or a TV placeholder image on newer Rokus. The strange thing is I can take the same image file that the url is pointing to and include it in the channel package and it will load up fine. Is there some header or other bit that the Roku is expecting when requesting the image from the provided url? The test url I'm using right now is https://dl.dropboxusercontent.com/u/13209686/chromecast/headphones.png, and as you can see is being served by dropbox.

    If you're using an "https" url then you need to call SetCertificatesFile on the screen object, e.g:

    screen.SetCertificatesFile ("common:/certs/ca-bundle.crt")
  • The image link works fine in an roPosterScreen on my Rokus (it shows a picture of some headphones). I've tried it on an old Roku HD running the 3.1 firmware, and on a Roku 2XS with the 6.2 firmware. It may help to use roSystemLog to check for http errors:

    Sub Main ()
    port = CreateObject ("roMessagePort")
    sl = CreateObject ("roSystemLog")
    sl.SetMessagePort (port)
    sl.EnableType ("http.error")
    sl.EnableType ("http.connect")
    ui = CreateObject ("roPosterScreen")
    ui.SetMessagePort (port)
    ui.SetCertificatesFile ("common:/certs/ca-bundle.crt")
    ui.SetContentList ([{
    SDPosterUrl: "https://dl.dropboxusercontent.com/u/13209686/chromecast/headphones.png",
    HDPosterUrl: "https://dl.dropboxusercontent.com/u/13209686/chromecast/headphones.png",
    }])
    ui.Show ()
    While True
    msg = Wait (0, port)
    If Type (msg) = "roSystemLogEvent"
    info = msg.GetInfo ()
    If info.LogType = "http.error" Or info.LogType = "http.connect"
    Print "roSystemLogEvent. Url: "; info.Url
    Print "roSystemLogEvent. OrigUrl: "; info.OrigUrl
    Print "roSystemLogEvent. Method: "; info.Method
    Print "roSystemLogEvent. Status: "; info.Status
    Print "roSystemLogEvent. TargetIp: "; info.TargetIp
    Print "roSystemLogEvent. HttpCode: "; info.HttpCode
    Print
    EndIf
    EndIf
    End While
    End Sub
  • Note that there is a long standing bug on the roGridScreen where it doesn't support HTTPs posters, even if you set the certificates file. That may be the issue you're running into, in which case, you could download them to tmp:/ first.
  • I decided to implement the suggested workaround of downloading the images and saving them to tmp:/.