Archive for January, 2009
Changing the default image of the audio player of the Popcorn Hour A-110 / NMT
I recently replaced my broke Philips Streamium SL300 with a brand new Popcorn Hour A-110 networked media tank. I’m really happy with the fact that it plays anything I throw at it. The internet based features (think Flickr, Youtube, Last.fm etc) are cool as well. On think that is seriously lacking is features for audio playback and searching. The default software is a really basic file system browser with, which can read playlist files.
I started working on an application to create a more useful browser based on ID3 tags. Still in the early stages though.
One thing I quickly ran into was the fact that the default player doesn’t allow you the set the image (you can set a background image, but you loose the overlay features if you do). The default image (if no image specified in the ID3 tag) looks like this:

Which is not really what I’d like to see when playing music.
It took me a while to figure out how to do it though, and it is not for the fainthearted:
- install telnet deamon
- telnet to popcorn hour
- cd to /bin/
- replace logo2.jpg or logo2hd.jpg (depending on you screen) with your image
- of coarse you can do this from a php or cgi script as well…
- have fun
mx:VideoDisplay and rtmpe streaming
I've spend some time trying to figure out how the get the Flex VideoDisplay object to play RTMPE streams. It turns out it's just not possible using the default component.
The underlying NCManager class has the following hardcoded list of supported protocols, which doesn't include RTMPE:
-
private static var RTMP_CONN:Array = [
-
{ protocol: "rtmp:/", port: "1935" },
-
{ protocol: "rtmp:/", port:"443" },
-
{ protocol: "rtmpt:/", port:"80" },
-
{ protocol: "rtmps:/", port:"443" }
-
];
The connectRTMP function just iterates over it without any support to force a specific connection protocol:
-
private function connectRTMP():Boolean
-
{
-
// setup timeout
-
connectionTimer.reset();
-
connectionTimer.start();
-
-
tryNC = [];
-
-
tryNCTimer = new Timer(DEFAULT_NC_TIMEOUT);
-
tryNCTimer.addEventListener(TimerEvent.TIMER, nextConnect);
-
-
for (var i:uint = 0; i <RTMP_CONN.length; i++)
-
{
-
tryNC[i] = new NetConnection();
-
tryNC[i].objectEncoding = ObjectEncoding.AMF0;
-
tryNC[i].client = new NCManagerConnectClient(tryNC[i], this, i);
-
tryNC[i].addEventListener(NetStatusEvent.NET_STATUS, connectOnStatus);
-
}
-
-
nextConnect(null);
-
return false;
-
}
I've filed this as a bug in the adobe issuetracker.
No comments