Forum Discussion

coltonoscopy's avatar
12 years ago

No Caption Tracks Available 5.3

Hey all!

Recently, we've noticed that our Roku channel's caption tracks are no longer showing up when we hit the * menu. At first, I read the following and thought that it was because we were using SRTs, which sounded like they had been superseded past 3.1:

http://sdkdocs.roku.com/plugins/viewsou ... Id=3114451

Therefore, we converted one of our SRTs to TTML and updated the feed to test, but the caption track for that video isn't being detected either. I also made sure to set Closed Captions to "On" instead of "Off" or "Instant Replay". Here is a sample of what our XML looks like:


<item sdImg="http://cdn.cs50.net/2013/fall/shorts/hash_tables/hash_tables.png" hdImg="http://cdn.cs50.net/2013/fall/shorts/hash_tables/hash_tables.png">
<title>Hash Tables</title>
<contentId>http://cdn.cs50.net/2013/fall/shorts/hash_tables/hash_tables-720p.mp4</contentId>
<subtitleUrl>http://cdn.cs50.net/2013/fall/shorts/hash_tables/lang/en/hash_tables.ttml</subtitleUrl>
<contentType>Talk</contentType>
<contentQuality>HD</contentQuality>
<media>
<streamFormat>mp4</streamFormat>
<streamQuality>HD</streamQuality>
<streamUrl>http://cdn.cs50.net/2013/fall/shorts/hash_tables/hash_tables-720p.mp4</streamUrl>
</media>
<media>
<streamFormat>mp4</streamFormat>
<streamQuality>SD</streamQuality>
<streamUrl>http://cdn.cs50.net/2013/fall/shorts/hash_tables/hash_tables-360p.mp4</streamUrl>
</media>
<synopsis></synopsis>
<runtime>461</runtime>
</item>


We're confused as to where we should venture next, as subtitles have worked in the past! We appreciate your help very much.

Colton

5 Replies

  • On firmware newer than 3.1 are you setting videoScreen.ShowSubtitle(true)?

    Details on how our captions *should* be working on 5.3 and higher firmware are here:
    http://sdkdocs.roku.com/display/sdkdoc/ ... on+Support

    There were definitely some caption related bugs in 5.3, hopefully they will all be resolved in the final release of 5.4.

    Also, for roVideoPlayer, we have a new roCaptionRenderer component:
    http://sdkdocs.roku.com/display/sdkdoc/ ... onRenderer

    Also, not for 3.1, so make sure you check firmware version before calling any of these methods.

    - Joel
  • Hey RokuJoel,

    Thanks for the reply! I tried setting video.ShowSubtitle(true), but that didn't work; however, I noticed your last point about the roCaptionRenderer(). Does this mean that I will be unable to render subtitles without including that component in the source code? i.e., Here's what my videoScreen code currently looks like:


    Function showVideoScreen(episode As Object)

    if type(episode) <> "roAssociativeArray" then
    print "invalid data passed to showVideoScreen"
    return -1
    endif

    port = CreateObject("roMessagePort")
    screen = CreateObject("roVideoScreen")
    screen.SetMessagePort(port)

    screen.SetPositionNotificationPeriod(30)
    screen.SetContent(episode)
    screen.ShowSubtitle(true)
    screen.Show()

    'Uncomment his line to dump the contents of the episode to be played
    'PrintAA(episode)

    while true
    msg = wait(0, port)

    if type(msg) = "roVideoScreenEvent" then
    print "showHomeScreen | msg = "; msg.getMessage() " | index = "; msg.GetIndex()
    if msg.isfullresult()
    print "Video Completed Playback Normally"
    RegDelete(episode.ContentId)
    print "deleted bookmark for playback position"
    else if msg.isScreenClosed()
    print "Screen closed"
    exit while
    elseif msg.isRequestFailed()
    print "Video request failure: "; msg.GetIndex(); " " msg.GetData()
    elseif msg.isStatusMessage()
    print "Video status: "; msg.GetIndex(); " " msg.GetData()
    elseif msg.isButtonPressed()
    print "Button pressed: "; msg.GetIndex(); " " msg.GetData()
    elseif msg.isPlaybackPosition() then
    nowpos = msg.GetIndex()
    RegWrite(episode.ContentId, nowpos.toStr())
    else
    print "Unexpected event type: "; msg.GetType()
    end if
    else
    print "Unexpected message class: "; type(msg)
    end if
    end while

    End Function
  • roCaptionRenderer is for use with roScreen and roVideoPlayer, for roVideoScreen, you shouldn't need to use that. I believe what you are seeing is a bug in 5.3, as I said should be resolved soon when 5.4 is released. There is a patch we can distribute to your users in the mean time if they are complaining, you need to email us a list of users serial numbers (from Settings, About) and we can allocate the patch to those devices.

    - Joel
  • Hey Joel,

    Okay, I see... thank you very much for your information! I will wait until Version 5.4 comes out and test to see if things are working properly by then.

    Best,
    Colton
  • "RokuJoel" wrote:
    roCaptionRenderer is for use with roScreen and roVideoPlayer, for roVideoScreen


    i cant get my events to show up with image canvas could you help?

    	
    port = CreateObject("roMessagePort")
    canvas = CreateObject("roImageCanvas")

    canvas.SetMessagePort(port)
    canvas.SetLayer(0, { color: "#00000000", CompositionMode: "Source" })
    canvas.SetRequireAllImagesToDraw(true)
    canvas.SetLayer(1, canvasItems)
    canvas.SetLayer(2, canvasItems2)

    captions = m.player.GetCaptionRenderer()
    captions.SetScreen(canvas)
    captions.SetMode(1)
    captions.SetMessagePort(port)
    captions.ShowSubtitle(true)



    nothing shows up on if type(msg) = "roCaptionRendererEvent"

    only videoplayer events and imagecanvas events, any ideas?