Share this
Rolling out Roku: How?
by Thijs Lowette on January 26, 2021
"Rolling out Roku: How?" is the second part of a 3-part series. You can read "Rolling out Roku: Why?" here, and "Rolling out Roku with THEOplayer?" here.
You decided that you want to put your OTT app in the Roku Channel Store after reading our previous article, but you're not yet sure how to achieve this. This article walks you through three options to launch your Roku channel:
- Direct Publisher: easiest, but least flexible
- Custom App: most complex, but most flexible
- Partners: between easy and flexible
Direct Publisher
The easiest way to distribute a Roku channel is by using the Direct Publisher framework. You just need an existing video library, and you don't need to do any software development. Unfortunately, it's also the most restrictive approach. Use the quiz below to determine whether your app fits within the constraints of Direct Publisher (or check the boring tables on the Roku website).
Do your viewers need to log-in to access your app, or do you offer a subscription-based service (SVOD, e.g. Netflix) or transaction-based service (TVOD/pay-per-view)?
1/5
😔 Sorry bud... Looks like you'll have to build a custom app. You can only use advertising to earn money through Direct Publisher.
Did you survive the test? (Great! 🙌) Here are the next steps to launch your channel through Direct Publisher:
Prepare Feed
Roku requires you to submit "a feed" through the Direct Publisher wizard. A feed is a list of items, and each item describes your video (e.g. title, thumbnail) and provides a URL of your (HLS/DASH/MP4) video. A feed adheres to a formatting style, and Roku accepts two styles:
- JSON (AKA "Direct Publisher Feed"). It's relatively intuitive (if you're familiar with JSON) and it's Roku's in-house specification.
- MRSS. MRSS is an established media syndicating approach, and is also supported by Roku.
Roku really encourages you to use their JSON over the generic MRSS. Only consider MRSS if you have short-form video content, no ads and are using a service which provides MRSS feeds out-of-the-box.
{
"providerName": "Roku Developers",
"language": "en-US",
"lastUpdated": "2020-03-15T02:01:00+02:00",
"shortFormVideos": ...,
"movies": [{
"id": "rsg_unit1_intro",
"title": "Introduction to the course",
"content": {
"dateAdded": "2020-07-22T02:32:24Z",
"videos": [{
"videoType": "MP4",
"url": "https://image.roku.com/ZHZscHItMTc2/rsg-unit1-intro-v3.mp4",
"quality": "HD"
}],
"duration": 178,
"language": "en-us"
},
"thumbnail": "https://image.roku.com/ZHZscHItMTc2/video1-intro-course-v2.png",
"shortDescription": "Watch the introduction to the \"SceneGraph: Build a Channel\" development course. This video outlines the course syllabus.",
"releaseDate": "2020-07-21",
"longDescription": "Watch the introduction to the \"SceneGraph: Build a Channel\" development course. This video outlines the course syllabus.",
"tags": [
"rsg_row"
],
"genres": [
"educational"
]
}],
"series": ...,
"playlists": [{
"name": "rsg_category_row",
"itemIds": ["rsg_unit1_intro", "rsg-unit2-developerSetup", "video3-scenegraph-overview", "rsg - unit4 - contentFeed", "video5-grid-screen-1", "video5-grid-screen-2", "video6-video-player", "video7-debugger", "video8-detailsScreen-part1", "video8-detailsScreen-part2", "video9-episodesScreen-part1", "video9-episodesScreen-part2", "video10-videoAds-part1", "video10-videoAds-part2", "video11-subscriptions-part1", "video11-subscriptions-part2", "video12-deep-linking-part1", "video12-deep-linking-part1", "video12-deep-linking-part2", "video12-deep-linking-part3", "video12-deep-linking-part4", "video12-deep-linking-part5", "video13-certification-testing-part1", "video13-certification-testing-part2"]
}],
"categories": [{
"name": "Roku SceneGraph Developers",
"playlistName": "rsg_category_row",
"order": "manual"
}]
}
Example of a modified JSON sample.
Read more on Roku's article on "Creating the content feed". You can also team up feed providers if this step is a bit too intimidating.
Create Account
You need to setup a Roku customer account and enrol in the Roku Developer program, as explained in Roku's Getting Started guide. This is free, but you need to provide some billing information if you're monetising your app.
Roku on "Direct Publisher".
Submit Channel
Through your account dashboard, you can publish a channel. You'll have to supply some branding assets, a link to your feed, and some other minor things. That's basically it.
Custom App
You'll build a custom Roku application if your requirements are a bit more complex. More complex means: you failed the above test, or you read Roku's "Benefit Comparison" and decided that custom development is the way to go.
We won't go too in-depth on custom app development, but we'll elaborate on three cornerstones:
BrightScript and SceneGraph
BrightScript and SceneGraph are the two development frameworks in Roku. You probably won't ever use these two technologies outside of the Roku ecosystem.
- BrightScript is a scripting language which you'll use to program the behavior. It kinda resembles Python and was invented by Roku's CEO.
- SceneGraph is the UI framework and leverages XML.
Let's try an analogy. BrightScript is the Java of Android app development, or the Swift of iOS development. SceneGraph is the XML Layout of Android app development, or the Storyboard of iOS development.
Getting Started
Let's not reinvent the wheel, and instead refer to Roku's official developer portal.
- I'm a big fan of watching videos to get bootstrapped into a new technology. Roku provides a great "Getting Started" series to explain the basics, as well as tutorial on building your first channel through SceneGraph. I'd recommend starting here to ease into things.
- There's also cold documentation. Read up on preparing your Roku developer setup and deploying your first "Hello World!" app.
Resources
Honestly, there's so much information on https://developer.roku.com/en-ot/overview, but here's an extract.
- Specifications: supported streaming & DRM protocols, feed formatting, hardware specs, ...
- Developer tools: stream tester, layout editor, etc.
- Github: samples and much more.
- Release notes.
Partners
It's possible that Roku is of strategic importance to you, but that you're lacking time, resources or know-how. Embarking in a partnership with industry partners can be a great way to speed-up your time-to-market, or to overcome a (technical) resource hurdle. Additionally, working with partners mitigates risk since they bring expertise and liability to the table.
A partnership often goes in conjunction with the choice between the previously mentioned Direct Publisher or custom channel.
Let's discuss three types of partnerships:
End-to-End
If you opt for end-to-end, your partner will take care of your Roku app (and most likely also your hosting, your feeds, your CDN, your iOS app, etc.). Often, you can provide input on the styling of your Roku channel, or configure it through a dashboard. Examples of such end-to-end providers are 24i, Vimeo and dcafe.
Using an end-to-end service may be the smart thing to do if you would like to outsource the bulk of the complexity, and have limited resources.
App Developer
There are third-party Roku developers out there for you to contract. These development companies or freelancers can build your custom Roku app, or can help you get your Direct Publisher app up and running. An app developer is typically an extension of your team, but they offer know-how on the Roku ecosystem.
SDK
It might make sense to use a commercial (or open-source) Roku SDK offered by industry partners. A Roku SDK is a software library which you implement in your custom Roku project. The SDK exposes APIs which facilitate the implementation of your use-cases.
When should you consider using an SDK? It depends, but the main motivators are time, money and complexity.
- Encapsulating a feature set to an SDK can reduce the complexity and risk of your app.
- An SDK may come with useful pre-integrations or samples. For example, you may have a stream with server-side ad-insertion, and it would be great if your Roku SDK automatically shows them in the timeline, or offers an API to access them.
- Perhaps you want to simplify your app ecosystem by using SDKs from one player vendor, since their APIs and supported features are quite similar.
There are different kind of SDKs:
- Analytics SDKs, such as Conviva, Mux and Youbora.
- SSAI SDKs, such as Verizon Media and YoSpace.
- Video player SDKs, such as the THEOplayer Roku SDK.
Using an SDK doesn't mean you magically have an app in the Roku Channel Store. You still need to implement it into your custom app, and publish this app through your Roku dashboard.
Average hourly salary of freelance Roku developers on Roku versus Roku engineers versus your time. The author cannot be held liable for the accuracy.
TL;DR
Build a custom Roku channel if you A) need a custom UI, B) are using DRM or C) need account authorisation. (There's plenty of information on https://developer.roku.com.) If you don't need any of those three, consider a no-code Direct Publisher channel. Team up with a partner to speed up your time-to-market or to reduce risk & complexity.
The next article in the series, "Rolling out Roku: THEOplayer?", will explain what we at THEOplayer are doing with Roku. We'll also build an SDK on the THEOplayer Developer Portal and deploy our first custom app! Subscribe to our newsletter if you want to be the first to know when this article is online.
Want to talk more about Roku, or our platform support? Contact our THEO experts.
Share this
- THEOplayer (45)
- online streaming (40)
- live streaming (35)
- low latency (32)
- video streaming (32)
- HESP (24)
- HLS (21)
- new features (21)
- THEO Technologies (20)
- SDK (19)
- THEOlive (17)
- best video player (17)
- html5 player (16)
- LL-HLS (15)
- cross-platform (15)
- online video (15)
- SmartTV (12)
- delivering content (12)
- MPEG-DASH (11)
- Tizen (11)
- latency (11)
- partnership (11)
- Samsung (10)
- awards (10)
- content monetisation (10)
- innovation (10)
- Big Screen (9)
- CDN (9)
- High Efficiency Streaming Protocol (9)
- fast zapping (9)
- video codec (9)
- SSAI (8)
- Ultra Low Latency (8)
- WebOS (8)
- advertising (8)
- viewers expercience (8)
- "content delivery" (7)
- Adobe flash (7)
- LG (7)
- Online Advertising (7)
- Streaming Media Readers' Choice Awards (7)
- html5 (7)
- low bandwidth (7)
- Apple (6)
- CMAF (6)
- Efficiency (6)
- Events (6)
- drm (6)
- interactive video (6)
- sports streaming (6)
- video content (6)
- viewer experience (6)
- ABR (5)
- Bandwidth Usage (5)
- Deloitte (5)
- HTTP (5)
- ad revenue (5)
- adaptive bitrate (5)
- nomination (5)
- reduce buffering (5)
- release (5)
- roku (5)
- sports betting (5)
- video monetization (5)
- AV1 (4)
- DVR (4)
- Encoding (4)
- THEO Technologies Partner Success Team (4)
- Update (4)
- case study (4)
- client-side ad insertion (4)
- content encryption (4)
- content protection (4)
- fast 50 (4)
- google (4)
- monetization (4)
- nab show (4)
- streaming media west (4)
- support matrix (4)
- AES-128 (3)
- Chrome (3)
- Cost Efficient (3)
- H.265 (3)
- HESP Alliance (3)
- HEVC (3)
- IBC (3)
- IBC trade show (3)
- THEOplayer Partner Success Team (3)
- VMAP (3)
- VOD (3)
- Year Award (3)
- content integration (3)
- customer case (3)
- customise feature (3)
- dynamic ad insertion (3)
- scalable (3)
- server-side ad insertion (3)
- video (3)
- video trends (3)
- webRTC (3)
- "network api" (2)
- Amino Technologies (2)
- Android TV (2)
- CSI Awards (2)
- Encryption (2)
- FireTV (2)
- H.264 (2)
- LHLS (2)
- LL-DASH (2)
- MPEG (2)
- Microsoft Silverlight (2)
- NAB (2)
- OMID (2)
- Press Release (2)
- React Native SDK (2)
- Start-Up Times (2)
- UI (2)
- VAST (2)
- VP9 (2)
- VPAID (2)
- VPAID2.0 (2)
- ad block detection (2)
- ad blocking (2)
- adobe (2)
- ads in HTML5 (2)
- analytics (2)
- android (2)
- captions (2)
- chromecast (2)
- chromecast support (2)
- clipping (2)
- closed captions (2)
- deloitte rising star (2)
- fast500 (2)
- frame accurate clipping (2)
- frame accurate seeking (2)
- metadata (2)
- multiple audio (2)
- playback speed (2)
- plugin-free (2)
- pricing (2)
- seamless transition (2)
- server-side ad replacement (2)
- subtitles (2)
- video publishers (2)
- viewer engagement (2)
- wowza (2)
- "smooth playback" (1)
- 360 Video (1)
- AOM (1)
- API (1)
- BVE (1)
- Best of Show (1)
- CEA-608 (1)
- CEA-708 (1)
- CORS (1)
- DIY (1)
- Edge (1)
- FCC (1)
- HLS stream (1)
- Hudl (1)
- LCEVC (1)
- Microsoft Azure Media Services (1)
- Monoscopic (1)
- NAB Show 2016 (1)
- NPM (1)
- NetOn.Live (1)
- OTT (1)
- Periscope (1)
- React Native (1)
- Real-time (1)
- SGAI (1)
- SIMID (1)
- Scale Up of the Year award (1)
- Seeking (1)
- Stereoscopic (1)
- Swisscom (1)
- TVB Europe (1)
- Tech Startup Day (1)
- Telenet (1)
- Uncategorized (1)
- University of Manitoba (1)
- User Interface (1)
- VR (1)
- VR180 (1)
- Vivaldi support (1)
- Vualto (1)
- adblock detection (1)
- apple tv (1)
- audio (1)
- autoplay (1)
- cloud (1)
- company news (1)
- facebook html5 (1)
- faster ABR (1)
- fmp4 (1)
- hiring (1)
- iGameMedia (1)
- iOS (1)
- iOS SDK (1)
- iPadOS (1)
- id3 (1)
- language localisation (1)
- micro moments (1)
- mobile ad (1)
- nagasoft (1)
- new web browser (1)
- offline playback (1)
- preloading (1)
- program-date-time (1)
- server-guided ad insertion (1)
- stream problems (1)
- streaming media east (1)
- support organization (1)
- thumbnails (1)
- use case (1)
- video clipping (1)
- video recording (1)
- video trends in 2016 (1)
- visibility (1)
- vulnerabilities (1)
- zero-day exploit (1)
- August 2024 (1)
- July 2024 (1)
- January 2024 (1)
- December 2023 (2)
- September 2023 (1)
- July 2023 (2)
- June 2023 (1)
- April 2023 (4)
- March 2023 (2)
- December 2022 (1)
- September 2022 (4)
- July 2022 (2)
- June 2022 (3)
- April 2022 (3)
- March 2022 (1)
- February 2022 (1)
- January 2022 (1)
- November 2021 (1)
- October 2021 (3)
- September 2021 (3)
- August 2021 (1)
- July 2021 (1)
- June 2021 (1)
- May 2021 (8)
- April 2021 (4)
- March 2021 (6)
- February 2021 (10)
- January 2021 (4)
- December 2020 (1)
- November 2020 (1)
- October 2020 (1)
- September 2020 (3)
- August 2020 (1)
- July 2020 (3)
- June 2020 (3)
- May 2020 (1)
- April 2020 (3)
- March 2020 (4)
- February 2020 (1)
- January 2020 (3)
- December 2019 (4)
- November 2019 (4)
- October 2019 (1)
- September 2019 (4)
- August 2019 (2)
- June 2019 (1)
- December 2018 (1)
- November 2018 (3)
- October 2018 (1)
- August 2018 (4)
- July 2018 (2)
- June 2018 (2)
- April 2018 (1)
- March 2018 (3)
- February 2018 (2)
- January 2018 (2)
- December 2017 (1)
- November 2017 (1)
- October 2017 (1)
- September 2017 (2)
- August 2017 (3)
- May 2017 (3)
- April 2017 (1)
- March 2017 (1)
- February 2017 (1)
- December 2016 (1)
- November 2016 (3)
- October 2016 (2)
- September 2016 (4)
- August 2016 (3)
- July 2016 (1)
- May 2016 (2)
- April 2016 (4)
- March 2016 (2)
- February 2016 (4)
- January 2016 (2)
- December 2015 (1)
- November 2015 (2)
- October 2015 (5)
- August 2015 (3)
- July 2015 (1)
- May 2015 (1)
- March 2015 (2)
- January 2015 (2)
- September 2014 (1)
- August 2014 (1)