Images distributed with your application in its package
Images posted in the Roku Channel Store when uploading the package
Category and item images referenced by the xml files and stored on your web server
Here is the somewhat ambiguous description from the Artwork guide included in the SDK
Channel artwork for the Roku Channel Store: HD version: 290px (W) x 218px (H) SD version: 214px (W) x 144px (H)
Channel artwork for the Roku home screen: Focus HD: 336px (W) x 210px (H) Focus SD: 248px (W) x 140px (H) Sides HD: 108px (W) x 69px (H) Sides SD: 80px (W) x 46px (H)
Images with the Package (Home Screen)
So, starting with the images that are included in your application, by default the videoplayer contains 8 images:
Size (WxH)
Filename
366×210
MainMenu_Icon_CenterFocus_HD.png
248×140
MainMenu_Icon_CenterFocus_SD.png
108×69
MainMenu_Icon_Side_HD.png
80×46
MainMenu_Icon_Side_SD.png
1281×165
Overhang_Background_HD.png
720×110
Overhang_Background_SD.png
280×70
Overhang_Logo_HD.png (transparent background)
160×40
Overhang_Logo_SD.png (transparent background)
Four of these files (all the Main Menu files) are referenced in the file called “manifest” which is at the root of our zip file (and consequently the package).
title=TED Talks subtitle=Video player example using category based XML feeds mm_icon_focus_hd=pkg:/images/MainMenu_Icon_CenterFocus_HD.png mm_icon_side_hd=pkg:/images/MainMenu_Icon_Side_HD.png mm_icon_focus_sd=pkg:/images/MainMenu_Icon_CenterFocus_SD.png mm_icon_side_sd=pkg:/images/MainMenu_Icon_Side_SD.png
The images are stored in the images directory in our zip file. So, simply change the names in the manifest files to point to your replacement images which you store in your images directory. While your editing the manifest, you should change the title (of the application), subtitle, and version info if you like.
The other 4 images are for creating a “Theme” for your application. The settings for the theme, along with the reference to these images are from your application directory “source”, in a file named appMain.brs
As long as you keep the pointers consistent with your files in the images directory, and the file sizes the same, you should be good to go.
Creating some new Home Screen Images
Again, here is public domain to the rescue (Wikimedia Commons) where I am going to use a free logo image, and modify it. Click on the file to link to the page where I downloaded it.
I modified the file in GIMP so that it now looks like this:
And, now I have my images. I created a set of them so that they are all the same size as the default “TED” images in the image dir of videoplayer from the SDK, but renamed them so I can keep track of what they do.
In the example from the SDK, the files 366×210 MainMenu_Icon_CenterFocus_HD.png 248×140 MainMenu_Icon_CenterFocus_SD.png 108×69 MainMenu_Icon_Side_HD.png 80×46 MainMenu_Icon_Side_SD.png
are all the same, with the difference being the size.
Modify the manifest file:
title=My Channel subtitle=My simple test channel to get us rolling mm_icon_focus_hd=pkg:/images/mmicf_HD.png mm_icon_side_hd=pkg:/images/mmis_HD.png mm_icon_focus_sd=pkg:/images/mmicf_SD.png mm_icon_side_sd=pkg:/images/mmis_SD.png major_version=1 minor_version=0 build_version=00001
Now following the procedure on the last blog entry, rebuild your package (rezip the files, install to the local Roku box, check the debugger if ok then create package and deliver to Roku).
If its now working, the debugger (via putty) should show this:
And you should see new icons in your TV !
Images for Roku Channel Store
These are the images you associate with your Channel when you upload your channel application (the package) to Roku for distribution. During that process, you can select HD and SD images to associate with your Channel. These images can be different than what is supplied with your application.
The Roku Channel store only seems to like jpeg images for some reason. While the artwork guide claims:
To maintain high quality display of your logo through possible format conversion processes, we recommend you submit your image as either an 8bit 256-color PNG or 24bit PNG. However, if channel file size becomes an issue for your package, JPEG is also an acceptable compression type.
When I tried to submit png images I got told they were the wrong format…
Here we want to follow the size guidelines
Channel artwork for the Roku Channel Store: HD version: 290px (W) x 218px (H) SD version: 214px (W) x 144px (H)
Select these from you local computer when creating your channel at Roku.com, via Manage My Channels.
Category and Item Images
These are images stored on your web server, and referenced by your categories and categoryLeaf items. These show up on the TV after you have launched your Channel. These seemed to give me the most trouble for some reason. I suspect because these images are cached on the Roku box and you need to power down the Roku when you make changes to the xml and images for the new images to be displayed.
Ok, first are the Category images, referenced in the categories.xml file like this:
Above you will notice that the category points to 2 different images sd_img and hd_img. The next thing you will notice if your paying attention is that in this example (provided by Roku) the sd_img and hd_img are the same file…
Here is the test png file
Here are this images properties:
Notice that the image size is 304×237 ? That doesn’t match any of the file sizes in the Artwork guide.
Next is the categoryLeaf images which are in the feed xml file for that leaf, lets continue our example, and look at the xml file themind.xml
Here we notice right away (especially after the last note) that these files are ALSO the same.
Here are the images properties (that we care about)
So, this file not only is a different size, but one is jpeg vs png. So, the size doesn’t seem to matter much, just keep the file sizes down so they load quickly, otherwise it will be dog slow scrolling. For example, just to test, I used this image (from the National Park Service – public domain):
Which is 1400×1108, not really an image size you want for scrolling speedily, but it posted just fine on my channel.
I recently got a Roku box, and while there is an impressive list of available channels, I wanted to create my own. I searched around for a way to do this on the net, but there really is very little in the way of a good how-to for windows. I found THIS link but its obvious the developer is using a *nix variant to develop on, and consequently doesn’t post Windows specific directions.
I am doing all this on Win7 running in a Virtual Machine (VMware Player).
Step 1: Become a “developer” and install the Roku Software Development Kit (SDK).
Sign up/in to Roku with the account you created when you got your box and sign up for a developer account.
Once you have agreed to the legal stuff, you will have a link to the “Developer Site”
Click on the “Download SDK” link, download to your computer, create some directory to store the files (its not an installer), then extract the compressed archive to that directory.
You should now have something like this:
Create another directory for your “play” area where you will mess around with copies of these files instead of editing the SDK files.
Step 2: Turn on development mode on your Roku box, and verify its running
From the developer guide pdf file in your SDK, here is how you turn on development mode on your Roku box:
Before you are able to load a development application to your box, you must enable development mode on your Roku Streaming Player. When you enter the special remote control sequence:
Your TV will clearly identify you have enabled development when you get it right. I had to try a couple of times, with very few pauses in between the remote control key sequences.
While at the Roku box, jot down the (hopefully static) IP address of your Roku box. You get this via Roku Player Settings –> Player Info.
Go back to your computer and pull up a web browser. Plug in the IP of the Roku box [http://XXX.XXX.XXX.XXX/], and you should see something like this:
Step 3: Creating the developer RSA keys
Your going to need a terminal emulator. My favorite is Putty. Use it or your favorite. Get Putty free HERE.
Once you have putty running, create a connection to your Roku box:
Use the IP you validated from your web browser, but use a port of 8085 instead of 8080.
Open a connection, and it will look sort of like this:
At the > prompt, type:
genkey
You may get no response the first time (like I did) try hitting return a couple of times, then try typing genkey again, once it succeeds, it will start putting ….. ++++ type output on the screen. If it doesn’t work after hitting enter a couple of times, disconnect, and reconnect – you may have to give it a couple of min if your rushing through this.
Once its done its work, it will present you with a Password and DevID like:
Download some content. To help you out, and for my example, I am going to use some public domain media. Your going to need some images, and some video. Here are the supported formats according to the Developer Guide:
Supported Video Formats:
Supported Image Formats:
Lets use a mp4 file from the NOAA:
In a web browser navigate to [ https://marinelife.noaa.gov/media_lib/preview.aspx?ID=7276&p=img ], click on the download link. Once it finished downloading, you may need to add an extension (mine didn’t have one). If you need to do this, give it a file extension of .mp4
Now, we need a static image. You can snip / cut / copy the image from above, or you can get a different image. I am going to get another image which is from NOAA, also public domain. I am getting mine from HERE [ https://marinelife.noaa.gov/media_lib/preview.aspx?ID=6483&p=img ]. Again, select the download link.
Now, for our use, we need to create 2 images from this downloaded image. One is SD, the other is the HD. Your going to need to re-scale the images (change their size). You can do this however you want. I prefer free tools, and I will show you 2 ways. The first is using the GNU Image Manipulation Program (GIMP). GIMP is a very comprehensive image manipulation program. To use it to rescale your image, open the image in GIMP. Then go to IMAGE –> Scale Image. This will give you a pop-up box where you can select the correct size. To NOT maintain the aspect ratio, you need to click on the chain link to unlink the width and height. This will allow you to set the correct size (which may distort your image). The HD format image should be 290 pixels wide by 218 pixels high. The SD format image should be 214 pixels wide by 144 pixels high.
Save the image as a jpeg (export when required, accept defaults), make sure to name then so you can tell if they are HD or SD images. My test image is by default called Attitude.jpg, so I am going to name them hd_Attitude-290×218.jpg and sd_Attitude-214×144.jpg respectively.
An alternate method, if you just want resize images for this purpose, or don’t want to install a large (but very useful) program like GIMP is to use another piece of freeware called PhotoResize. This is VERY useful when your doing a LOT of resize operations, and you simply want to resize a whole bunch of pictures to one size (like making a bunch of thumbnails). This doesn’t require any installation, and by simply renaming the file, you control the options for resizing. For this purposes, you will need to have two files, one called “PhotoResize290x218.exe” and another “PhotoResize214x144.exe”. After creating the two files, drag or original file and drop it onto the appropriate PhotoResize binary. It will create a new file in the same directory as the original that has been resized. Rename this to an appropriate name (if your unhappy with the new names).
By default, GIMP and PhotoResize will not create files with the same file size as the compression used for the jpeg images is different in the two programs. The default PhotoResize files will be smaller. Keep in mind that small images load faster in your Roku, but I am sure you want nice quality as well, so play around with the options.
Currently I have the following files downloaded (ignore the categories.xml):
Step 4: Look at the SDK examples
Ok, now go to the directory where you downloaded your SDK. In that directory, there is an subdirectory called “Examples”. In that directory are two subdirectories “Source” and “Zips”. In the “zip” subdir, find and copy the directory “videoplayer”. Then extract this into your testing directory [7zip is a very good open source compression and extraction utility]. If we take a quick look at the contents of the subdirectories of “videoplayer” we see that there are the following contents:
If you read the readme, you will notice that some of the directories in the “Source” directory contain files that are not destined to be delivered with our “channel”, but simply server as examples of what the streaming server would be delivering to the Roku box. We need to use them, but they should not be a part of the file that gets delivered for use by the Roku. The easy way to see this is to compare the contents of the source dir with the contents of the same directory which has already been nicely zipped by Roku for us. The same directories are there, but the contents differ. For example on my box C:\ROKU-DEV\SDK\examples\source\videoplayer\xml contains files, but C:\ROKU-DEV\SDK\examples\zips\videoplayer.zip\xml does NOT.
So, what we need to know here, is that we are going to need to use some of the files in the C:\ROKU-DEV\SDK\examples\source\videoplayer, but only a subset of them are going to end up as part of our package which will be our “channel”.
Step 5: Put Your Files on the Internet Somewhere…
Your going to need to have these files available from the internet if your going to publish your channel, even if its private. So this is the point where you need to plop them out there. I will explore later the possibility of only using local files (remind me if I forget).
I have my files at my hosting provider, so I will use that as my example. I use ftp to deliver the files, and again, open source comes to the rescue with Filezilla a free and open source FTP client. Test by opening a browser and make sure you can navigate to your files directly.
Here are my test files (available via the web directly):
We also need to create a directory to store our xml files, so in the same directory where the above files are stored, lets create a directory called xml.
Step 6: Edit the videoplayer category feeds file
Now we are going to edit the xml files which the Roku box needs to know about to find our files. The file is located (if you have been following my directory creating scheme) at C:\ROKU-DEV\Testing\videoplayer\source\categoryFeed.brs
This file is a simple text file, written in the BrightScript language. We don’t really need to worry too much about that at this point, just need to know how to edit. It seems this file is formatted in a Unix format, so your going to need an editor that doesn’t make it look nasty like Notepad.exe does:
We need to copy these files to another location so we don’t mess up the default one delivered in the SDK (if you do, simply re-download the SDK and overwrite your extracted copy).
Lets copy them to C:\ROKU-DEV\Testing:
Now, open categories.xml in a text editor. Did I mention how nice Notepad++ is?
The first thing you need to take a look at is the relationship between the two files we just copied. You can see that there can be multiple categories, and each category can have multiple category leaves. The category has a title, description and two pictures. The categoryLeaf has a title, description and a feed. The feed is an xml file. Both of these are going to live on our webserver on the internet.
We are going to edit the highlighted areas. First, we are going to simply delete the additional categories to keep our example simple. Our file should now look like this:
Now, lets change where the items are pointing to, so we can use our web files. If you want to make any name changes, this is the time to do it (for the files, and in the files). You should now have a categories.xml file that looks like this:
Next we need to edit the file C:\ROKU-DEV\Testing\themind.xml which we copied a while ago from the source subdirectory of the SDK. This points to the actual media to stream. The example has a number of items that belong to this categoryLeaf:
We are going to delete all of these except for one item, and we are going to edit the resultlength and endindex to be 2 instead of 4. We are also going to point the item to our mp4 file sitting at the hosting provider.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <feed> <!– resultLength indicates the total number of results for this feed –> <resultLength>2</resultLength> <!– endIndix indicates the number of results for this *paged* section of the feed –> <endIndex>2</endIndex> <item sdImg="" hdImg=""> <title>Harbor Seal</title> <contentId>10001</contentId> <contentType>Talk</contentType> <contentQuality>SD</contentQuality> <streamFormat>mp4</streamFormat> <media> <streamQuality>SD</streamQuality> <streamBitrate>1500</streamBitrate> <streamUrl>http://www.herofish.com/OTHER_PAGES/Testing/HarborSeal.mp4</streamUrl> </media> <synopsis>Lets have some fun streaming video to our Roku player from our own channel</synopsis> <genres>Clip</genres> <runtime>1260</runtime> </item> </feed>
Step 8: Install the development application on OUR Roku Box
Now we need to locally install this app on our Roku box.
Navigate to the test files we copied from the zip file in the SDK (where you edited the file “categoryFeed.brs”
In my environment its : C:\ROKU-DEV\Testing\videoplayer
Select all the files here with a compression utility (7zip works great), and add them to an archive named by the directory they are in, this should result (in my case) in a file named videoplayer.zip
Open our development application Roku webpage again, browse to the zip file you just created, then click on Install:
If its successful, it should look like this:
Click on the link “Packager”, populate a name for this application and a version seperated by a slash, then plug in your password you got from the genkey command way way back in the beginning. Finally, click on the package button.
If successful, it will look like this:
Click on the package link so you can download the package to your computer, and lets save it in the Testing dir for now. It will be names in the long random string just like the link shows it, but the a file extension of .pkg
Step 9: Upload our test Channel to Roku
Next, log into Roku.com and click on “My Account” then, click on the link “Developer Site”. Then click on the link “Manage My Channels”
Since we are testing, lets create a private channel. Click on the box “Add Private Channel”
‘
On the first page, we are just going to accept all the defaults, and click “continue”
Fill in the information, and select “Create”:
You can add screenshots if you like, otherwise, click “Go Back”
Then, browse to the package file we downloaded from our local Roku box, and click “Save”. You should see the next screenshot
Once you see the “Publish” button enabled go ahead and click on it
Now you have a new channel!!!
Step 10: You thought you were done?
Now we need to verify our channel actually delivers something…
Click on our new channel link at the Roku website:
And we get offered to add this new channel to OUR Roku Channel listing
Click on Yes Add channel, and Roku should confirm the new channel was added:
Open up Putty and make a connection to our Roku box again:
Now go to your TV and add the new channel
While your monitoring the terminal session with the Roku player, (the debugger) when you try to access your channel from your TV, you should see the following:
Which indicates that our xml file was successfully read. On your TV you should see a new channel!
NEXT – Fix the TED icons etc so we have our own Channel icons, and try some streaming content from other sites servers…
Let us all observe a moment of silence for all those liberties who have bravely died while trying to provide for Citizens of the United States of America.
This serves as a time where we can reflect on the hideous behemoth our Federal Government has become at the expense of individual liberty and freedom. It simply takes a quick look at the preamble to the Bill of Rights, and the list of those rights to comprehend what has been lost in the name of safety.
December 15, 1791
Preamble
Congress OF THE United States begun and held at the City of New York, on Wednesday the Fourth of March, one thousand seven hundred and eighty nine.
THE Conventions of a number of the States having at the time of their adopting the Constitution, expressed a desire, in order to prevent misconstruction or abuse of its powers, that further declaratory and restrictive clauses should be added: And as extending the ground of public confidence in the Government, will best insure the beneficent ends of its institution
RESOLVED by the Senate and House of Representatives of the United States of America, in Congress assembled, two thirds of both Houses concurring, that the following Articles be proposed to the Legislatures of the several States, as Amendments to the Constitution of the United States, all or any of which Articles, when ratified by three fourths of the said Legislatures, to be valid to all intents and purposes, as part of the said Constitution; viz.:
ARTICLES in addition to, and Amendment of the Constitution of the United States of America, proposed by Congress, and ratified by the Legislatures of the several States, pursuant to the fifth Article of the original Constitution.
We can clearly see that the Bill of Rights was added to the Constitution to “prevent … abuse of its (constitution by the Federal Government) powers”. And while that was the aim, Congress, the Supreme Court and the Federal Government in general has diverged significantly from the initial desire of this country to limit Federal Power and leave those powers vested in the States and Citizens.
Ok, so I wanted to see how long my iPhone 4S would operate with minimal usage, for backcountry use with my offline Topographic Mapping application. I made the following setting changes:
Turned off Wi-Fi, Cellular Data (3G etc) and Bluetooth
Decreased screen brightness to about 30%
Turned off Push email
Set email/Calendar lookups to manual
Set auto-lock to 1 min
Turned off EQ in music
Set sounds to minimal (phone ring and texting only)
Disabled vibrate
These tips are from the Free app “Battery Boost” in the app store, which really only give you these tips to help minimize usage of the battery thereby extending the battery life.
So, after running my iPhone like this for a day (20.5 hours) I have 87% battery life left. My usage included texting, phone conversations and occasional Wi-Fi usage (turn on Wi-Fi, do something turn Wi-Fi back off). Extrapolating from this run time, I get 6.57 days or 157.69 hours of runtime with this configuration. This is with location services (GPS) actively running.
If you want a iPhone with a decent battery life, it seems like the 4S does a fairly decent job!
FALMOUTH, Maine – 2012 Republican Presidential candidate Ron Paul will receive two consequential endorsements related to the Maine caucus at two separate events. The 12-term Congressman from Texas will receive this support at one event in Freeport, and the other in Alfred. This media advisory serves as a reminder of the events themselves and the first and [ […]
Latest Paul backers from crucial Silver State voting bloc hail from Clark and Washoe counties HENDERSON, Nevada – The Ron Paul 2012 Presidential campaign announced today additions to its active “Hispanics for Ron Paul” nationwide coalition. The following additions to the coalition hail from Clark and Washoe counties, both Nevada. They have pledged to spread […]
Dr. Paul: “I have been a strong supporter of a National Right to Work Act, and I have made passing such legislation a centerpiece of my presidential campaign.” LAKE JACKSON, Texas – 2012 Republican Presidential candidate Ron Paul authored a congratulatory letter to Mark Mix of the National Right to Work Committee, applauding the organization’s success in hel […]