Roku Developer Program

Developers and content creators—a complete solution for growing an audience directly.
cancel
Showing results for 
Search instead for 
Did you mean: 
rbenditt
Level 7

Getting Data from ID3 Tags

I'm having some trouble getting ID3 tags out of a stream.  In my particular case, I'm using the ID3 tags as a beacon for ad events, so I'm putting ad information in the tags.
 When I look at my stream in a web player that has an onMetadata event, I get metadata that looks like this:

metadata: {frames: [{key: "TXXX", info: "adID", data: "http://localhost/ads/testVAST.xml"}], TXXX: "http://localhost/ads/testVAST.xml"}


This pretty much gives the information that I am looking for.

In my Roku app, I have this code to get the ID3 tag:

msg = wait(0, video.GetMessagePort())
if type(msg) = "roVideoScreenEvent"
if msg.isTimedMetaData() then
// ID3 Tag Received
theMetadata = msg.GetInfo()
print theMetadata
end if
end if


When the same ID3 tag shown above comes through on the Roku app, this is what I get when I print theMetadata:

<Component: roAssociativeArray> =
{
    TXXX: dID
}


The data is quite a bit sparser, plus that "dID" bit sort of looks like a malformed version of the "adID" string.  What I really want is to be able to retrieve the ad url.

How can I get the other data like my web player is seeing?

Thanks,

Ron
0 Kudos
3 Replies
rbenditt
Level 7

Re: Getting Data from ID3 Tags

I still haven't gotten anywhere on this.  My conclusion, for the moment, is that there are several versions of ID3 tags, all with different formats, and that Roku does not support the data structure that I am sending to it.  If anyone has any other thoughts on this, I would be very interested in hearing them.

Thanks,

Ron
0 Kudos
Roku Employee
Roku Employee

Re: Getting Data from ID3 Tags

"rbenditt" wrote:
I still haven't gotten anywhere on this.  My conclusion, for the moment, is that there are several versions of ID3 tags, all with different formats, and that Roku does not support the data structure that I am sending to it.  If anyone has any other thoughts on this, I would be very interested in hearing them.

Thanks,

Ron


If you can provide an example stream, and/or information about how the stream was authored, I can file a ticket for it to be investigated.
0 Kudos
rbenditt
Level 7

Re: Getting Data from ID3 Tags

I can provide some additional information.  I'm implementing a method that Wowza and JWPlayer have been jointly teaching on their webinars.  The idea is that after installing a Java plugin into Wowza, you can send http post messages to Wowza whenever you want an ad to be inserted.  Wowza then receives this post message and injects an ID3 tag into the stream to act as an ad-break marker.  As a partner, JWPlayer has been working with Wowza to implement a web-based player solution where their player detects the ID3 tag and sends a mid-roll ad.

I've pretty much accomplished this using Roku as the player instead of JWPlayer.  The only thing is that the ID3 tag gets a bit messed up as mentioned previously.  The original implementation sends an ad url way back in the original http post that makes its way into the final ID3 tag in the stream.  In my case, I finally decided that I really don't want to transmit an ad URL after all, but it would be nice to at least communicate the ad length to be played.  In any event, it looks difficult to retrieve data that is passed in the ID3 tag in this manner from within Roku.

Here's a link to a video tutorial of how this is set up in Wowza:
https://www.wowza.com/forums/content.ph ... ing-Engine

Here's a link to the code, including the Java plugin that takes the http post and injects an ID3 tag into the stream:
https://github.com/WowzaMediaSystems/ws ... -insertion

At this point I can inject ID3 tags, they can be detected by my Brightscript code in Roku, and I can use that to trigger a mid-roll ad.  Pretty sweet!   The only piece that is missing is that I can't seem to get data to pass through that I can use to determine how long the ad should be.  It would be super awesome to be able to schedule ads of differing lengths.  To accomplish this, all that would be needed is a way to read that data coming from the ID3 tag.

I do have a stream running currently that has these ID3 tags in it, but it is not released to the public yet.  I could supply a link to it off-forum if it helps.

Thanks,

Ron
0 Kudos