Influxis Flash Media Interactive Server 3.5 Hosting Specialists


Archive for the ‘Research & Development’ Category

Influxis + AIR for Android = Awesome!

Wednesday, July 21st, 2010

Today Mashable posted an article on how AIR for Android can help Android compete with Apple’s Facetime Mobile Video Chat system which you can find here:

http://mashable.com/2010/07/20/android-video-calling/

Of course we need to wait for Android devices that not only have forward cameras (EVO) but also access to FroYo (Android OS 2.2).  But once that happens you can port your own Video Chat code you’ve been using for years with FMS to AIR for Android within 5 minutes!

First, open your Video Chat App and change the Publish Settings to AIR Android.  Then add this to your VideoChatApp-app.xml:
<android>
<manifestAdditions>
<manifest>
<data><![CDATA[
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
]]></data>
</manifest>
</manifestAdditions>
</android>

And that’s it!  You’ve got your Flash based version of Facetime, but it’s a little bit better, because ours goes to the Web as well.  Pretty awesome right?  I’ll be updating tomorrow with code for RTMP based Mobile Video Chat and RTMFP based Mobile Video Chat, Multicasting, Audio Chat (Skype), and Text Chat.

Stay tuned!

Smashstream and the future of Flash Media Streaming.

Monday, June 28th, 2010

SmashStream!

For a while now, I’ve been talking about the awesome new Real Time Media Flow Protocol (RTMFP), and how it’s a major evolution for the Flash Player.  Unfortunately, Peer to Peer server systems are not the easiest things to be blown away by.  Who really knows how amazing a Distributed Hash Table is?  Or that NetGroups are essentially using a Ring Topology?   Answer: less than 100 people.

(more…)

Influxis OSMFPlayer v1.0 is the Official New “Influxis Video Player”

Monday, June 21st, 2010
OSMFPlayer

Click the picture for a demo of the Influxis OSMF player.

The Influxis OSMF Video Player is an all new media player built using the Adobe Open Source Media Framework. The player is light, fast and feature-packed. It supports:

  1. Video on demand
  2. Live broadcast playback
  3. Live DVR broadcast playback using the Adobe DVRCast API
  4. Dynamic Stream Switching (DDS)
  5. YouTube content playback
  6. Adobe Zeri server playback (HTTP Streaming)

Furthermore, it has a wide set of API’s that will allow our customers to customize the player in a variety of different ways.

This new Influxis OSMF Video Player is useful for those wanting a modern and extremely light-weight player to use on their websites, blogs, etc.

It is available to all Influxis customers from the Influxis Wizard where it comes with a video player builder allowing for easy customization of logo placement, custom video command bar, video player sizing and more.

For Influxis customers:
The player is available now through the Influxis Wizard> Influxis Player Builder.

For non-Influxis customers:
A free version of this player can be downloaded from here. By downloading the free version you agree to the terms of use.

Note: The free version of this player is not available for reselling purposes. An open source version of this player will be released soon, so stay posted.

Synx Platform: Video Playback

Friday, February 26th, 2010

Here at Influxis, we support all the interactive features that Flash Media Interactive Server provides, but the most common use for FMS is still video streaming. Knowing this, we made streaming even easier with Synx.

Just like before, we use the Synx class to get everything set up and ready to use. For playback, we initialize the Synx class with the URI where our videos are located on FMS. After the platform is initialized, we create an instance of the StreamingConnection class and listen for StreamingEvent.READY.

1
2
3
4
5
6
7
8
9
10
11
12
import com.synxplatform.core.Synx;
import com.synxplatform.fms.streaming.StreamingConnection;
import com.synxplatform.fms.streaming.events.StreamingEvent;
 
private var stream:StreamingConnection;
 
private function init():void
{
    Synx.init("rtmp://youraccount.rtmphost.com/videos/");
    stream = new StreamingConnection();
    stream.addEventListener(StreamingEvent.READY, setup, false, 0, true);
}

The setup method is pretty simple, too. We create a Video object, attach the stream object’s NetStream to it, then add it as a child to the application. After that, we use the StreamingConnection’s PlaybackController object, stream.playback, to call the addToPlaylist() method for each video we’d like to play, in order. If we want our entire playlist to loop playback, we set the PlaybackController’s loopPlayback property to true. Finally, to start playback, we call stream.playback.play().

13
14
15
16
17
18
19
20
21
22
23
private function setup(event:StreamingEvent):void
{
    var playback:Video = new Video();
    playback.attachNetStream(stream.ns);
    this.addChild(playback);
    stream.control.addToPlaylist("video1");
    stream.control.addToPlaylist("video2");
    stream.control.addToPlaylist("video3");
    stream.control.loopPlayback = true;
    stream.control.play();
}

That’s all it takes to build a simple video playback application with the Synx Platform. Next, we’ll discuss building a full video player with Synx, and recording video and audio to FMS from the user’s Camera and Microphone objects.

Synx Platform Preview

Friday, February 19th, 2010

It’s almost here.

I know I’ve been kind of quiet since my position with Influxis was announced last year, and with good reason. I’ve been working in my laboratory (read: basement office) on some really cool stuff for anybody who develops for, or would like to develop for, Flash Media Server. One of the things I first noticed about being an FMS developer was the repetitive nature of a ton of the things we do when building applications. Creating a NetConnection, creating a NetStream, handling SharedObjects, listening for NetStatus messages… and it seemed to me that there had to be a better way. The rest of the team agreed, and I started working on an AS3 micro-architecture for FMS applications, the Synx Platform. It’s built to make a ton of things simple, and like I said above, it’s almost ready to be given to all of you. (more…)

Project Variant and a question to the community.

Wednesday, September 23rd, 2009

Last week I posted on twitter a link to this vid:

VariantWhat the hell was that?  The most boring music video ever with the music too loud and a bunch of black at the end (sorry, I made that after a long night of coding at the wee hours of 5AM)?

Yeah, pretty much.

Yes, that was Actionscript 3 driving that hardware accelerated 3d engine.  Yes, that was a modified version of the AVM2 or Tamarin VM.  Yes, that was 200 Frames Per Second, with a pretty decent amount of polys.  Now for what it wasn’t:  that was not the flash player rendering that.  The awesome Irrlicht 3d engine was doing all of the heavy lifting on that.

Basically, Tamarin set up the Irrlicht 3d engine to run, which was a successful proof of concept that yes, AS3 could be the scripting language for a 3d engine which could rival Unity 3d.  Awesome!  It also allowed for you to use the Flash Projector to output an executable of your AS3 driven version of Irrlicht, and thus mimics the Adobe Integrated Runtime (a.k.a. AIR) model.  That’s doubly awesome!  Right?

So?  Um, what’s the problem Brosef Stallin?

Have you happened to use Tamarin lately?  If you haven’t. . . let me help you get started:

First link is a pdf explaining what the AVM2 does.

Then build it (note: this is the easiest part).

Then add your own Native Classes to it. Welcome to Manifest/Make file hell.

Or, just use the awesome project Red Tamarin to get yourself up and running.  You should look at Zwetan’s blog as well for some tasty morsels of knowledge (a seriously smart dude).

Other sources of interest on this subject include: RedRocketServer, Campell Anderson’s Blog, and the Mod-Actionscript Project.

So, if you didn’t notice the pattern here, let me spell it out for you.

1.  The AVM2 is in C++, and there is very very very little documentation on it.  The Red Tamarin project does the best job at this point of getting you in to the AVMPLUS and Shell libraries (check the avmcore.cpp and avmcore.h to find some morsels of goodness, and then the src/shell/avmshell.h).

2.  While it was cool that Adobe released the AVM2 to the public, they didn’t release the rest of the Flash Player to you.  It’s like trying to learn how an automobile engine works with just the transmission (I don’t know I’m not a car guy).  You don’t have any access to the display/GUI at all.  It’s almost a dead end.

3.  The only way to compile your .AS code with the avmplus.exe is via the command line open source Flex Compiler.  Which is very scary to a lot of people.  Yeah, I could write a python script or something for you, but it will still not be pretty.  And it would be too much work for all but the most Obsessive Hackers out there.

4.  Did I mention we had to modify the AVM2 for all of this?  So that means this will not work in the Holy Grail. . . the Flash Player.  Although, I could use the QT Framework and bust out a cross platform browser plug in that would run Irrlicht in the browser via your AS3 script.  But that’s a plug in that people have to download!  Gasp!  And then the whole reason for using flash kinda goes out the window right?  We give up the godlike(all together now) Flash Penetration Rate for a 3d engine that can output more then 20,000 polygons without having to jump through hoops of fire.

Now, I’m going to go interactive on you!  Get ready yo. . . a question!

What do you guys think?  Would you like Variant to be built out?  Would you use it if I spent my precious (imagine my adorable family crying right now) time on this?  Could we get someone from Adobe to weigh in on this?  I know that I could build this out for the new version of AIR that is going to be released with a Native Code API.  Do you guys even freakin’ care about high resolution/high framerate 3d in flash?  Would you like a new IDE like Unity 3d but with the option to treat every 3d object like a MovieClip?

Please, feedback is welcome.  Oh, and do you want the .exe example that is shown in the video to play with?

Good night and good luck.

P.S.

If you were interested in the AVM2 and would like to follow Red Tamarin please follow @zwetan

And if you are interested in Red Rocket Server, please follow @campbell

They deserve twitter love, they are awesome.

TVStation2 v0.5.2 Released! Updates and Fixes

Monday, September 21st, 2009

The next update to TVStation is finally here. This version fixes several bugs while introducing some new functionality.

Here is a break down of what version 0.5.2 includes:

FIXES

Viewer:

TVStation Viewer

TVStation Viewer

Display: The display would break when collapsing the bottom panel if player, schedule, and media information were all showing simultaneously.

Start Up: Black background would stick or experience very clunky start on the viewer.

Volume Scrubber: If you roll out of volume button slowly it does not make scrubber disappear.

Mute: Setting mute when an item was playing was overwritten when the next item played.

Source Files: Fixed the error messages of missing classes when working with the viewer source files.

Video Clearing: Fixed an issue where stream videos were not clearing out and kept playing even though another video was selected.

Admin:

TVStation Admin

TVStation Admin

Speex Codec: Fixed the speex codec bug.

Live ‘Casters List: When broadcasting live and creating a channel or switching channels, the live casters list would break.

Resizing Playlist: When making the admin interface very small the playlist was not accessible in the media interface.

Block Scheduling: Schedule would break when scheduling daily blocks

Both Admin and Viewer:

Chat History: Chat history was buggy and it would not scroll to the bottom when it started.

Embed Tags: Issues using embed tags have been resolved.

Launch Viewer Button: Using the “Launch Viewer” button on the admin was not working.

Loading Local Assets: When loading local assets it would break the app on the admin and  viewer.

Help Files: Help files on admin would not load at all.

Chat Gap: Fixed the big gap at the bottom in the chat history when it gets too long.

Nothing Playing Image: ‘Nothing playing’ image was not loading when nothing was playing.

Chat URLs: URLs in chat were not working properly.

UPDATES

Viewer:

Performance: Performance has been improved on the viewer.

Advertising: The banner functionality was moved into the player instead of it being at top of video and you can now set a URL to make the banner clickable.

Admin:

TVStation Admin Chat

TVStation Admin Chat

Re-label: Start broadcast button was relabeled to Start TVstation (too confusing when in live tab admin).

Start Broadcast: When an admin presses the start broadcast button in the Live tab, if there are no active broadcasters the stream will automatically go live.

New Field: The source path field has been added in the media edit field in the media list.

Save Icon: A clock icon has been added to notify admin users when settings are saving.

Optional Channel Login: When creating a new channel the login for that channel is now optional. If you wish not to have a login active for that channel simply clear out the email and password fields. However please note that a login is still required for the default channel0 channel.

Log Out: A logout button was added to the admin.

Both Admin and Viewer:

Word Filter: The word filter functionality was extended. For example if a word is set such as banana the system would catch it if a user was trying to input b.a.n.a.n.a  or ba    na   na.

Emoticons: Added Smileys to chat.

New Chat Menu: Chat now has a new menu system to load or clear chat contents.

User Profiles: Expanded the user list features to include new profile mini system which can be changed when double clicking your name on the list.

Time Stamps: Chat now has user icon and time stamps.

Changing Labels: You can now change the labels without having to recompile via a provided XML file for both the admin and viewer.

API Compatibility: You can now set up API to connect to TVStation without having to authenticate via a new method in the main.asc file.

Search: A new search bar has been added to lists in the viewer and the main media list on the admin. Search videos by title or written content.

If you are on any of the old versions of TVStation2 beta then this update is strongly recommended.  It is available for download now through the Influxis Wizard.

Influxis Wizard: TVStation Download

Influxis Wizard: TVStation Download

Demo the TVStation Viewer here.

Demo the TV Station Admin here.

As always, your feedback is very important to us so if you have any questions, comments, or feature requests, please feel free to contact Influxis support at support@influxis.com.

Massiva3d Tutorial Version 1 (the basics)

Monday, May 11th, 2009

Massiva3d is written to take a lot of the headaches out of creating your own 3d MMO system.  Unfortunately, 3d is difficult, especially in Flash.  So, if you are just learning Away3d or Papervision this might be an intermediate to advanced level tutorial.  This is also written specifically for the Developers that are going to build their own world.  I will be writing more tutorials in the future on how the 3d assets should be made/implemented, but for now, I’m just trying to lay out enough to get you started.

What you will need

  1. An Influxis hosting account (any size will do).
  2. You will need Flash CS4 to open the FLAs.  The reason for that is Massiva3d uses the Flash10 branch of Away3d.
  3. If you have 3d Studio Max you will need this: http://drawlogic.com/2007/07/30/as3-geom-class-exporter-for-3ds-max-for-pv3d-sandy-and-away3d/
  4. If you don’t have 3d Studio Max you will need this:  http://www.blender.org/ (or a script for your favorite 3d  that will export your model to .AS3)
  5. Once you have Blender installed, you’ll need this:  http://www.rozengain.com/blog/2008/01/02/export-your-blender-objects-straight-to-away3d-papervision3d-and-sandy/ This will allow you to export your model directly to AS3 code that you will import into either your AvatarAssets or CityAssets.fla.  I suggest using this way as opposed to importing a DAE/Collada file due to how much XML is needed to be parsed in Collada files.  They are bloated and slow.

(I’m currently creating an Air App that will allow you to convert your .OBJs/3dsMax/DAE to AS3, so soon you will not need Blender specifically).

The Asset Workflow

There are 4 swfs (AvatarAssets.swf, CityAssets.swf, ExternalAssets.swf, Massiva3d.swf) and 2 XML files (Massiva.xml, Settings.xml) that makeup Massiva3d.  Here is a brief explanation of each file:

  • AvatarAssets – This is the file that you will output with your Animated Avatars and your Avatar Skins/Materials.  The Avatar Assets were seperated from the city assets for loading purposes.  This will also include the 2d version of all of your Avatars.
  • CityAssets – This is the file that you will output with your City/Environment 3d Assets/Materials in.  Your CityAssets will be loaded in the background while the user is selecting/personalizing their Avatar (thus making a shorter load process for your App).
  • ExternalAssets – This is the file that includes all of the art assets for the app.  I have included everything you need in the FLA, so just restyle the assets to your liking and output the SWF.  All of your changes will be seen instantly.
  • Massiva3d.swf – This is the engine (you may want to wrap this in a preloader depending on how many Avatar/City assets you will be loading).
  • Settings.xml – this is the file that includes your RTMP path.
  • Massiva.xml – this is the file that points to all of your AvatarAssets/CityAssets.  The City Assets will be able to be positioned via this file as well.

AvatarAssets.swf/FLA

Please open the AvatarAssets.fla in Flash CS4, and go to the library.  There you will see all how I setup all of the Skins/Materials for the 3d avatars and all of the 2d assets for each different avatar (all of the .PNG files are for the Billboarded version of the avatar).

If you open Massiva.xml and scroll down to the area that has these lines:

<male avatar = “src.ExternalAni” 2d = “Man2d”/>
<male avatar = “src.ExternalAni2″ 2d = “Man3d”/>
<male avatar = “src.ExternalAni3″ 2d = “Man4d”/>
<male avatar = “src.ExternalAni4″ 2d = “Man1d”/>

<female avatar = “src.ExternalAni5″ 2d = “Woman1″/>
<female avatar = “src.ExternalAni6″ 2d = “Woman2″/>
<female avatar = “src.ExternalAni7″ 2d = “Woman3″/>
<female avatar = “src.ExternalAni8″ 2d = “Woman4″/>

Notice that the 2d = “Woman1″ is pointing to the Linkage that I setup for the Woman1.png in the AvatarAssets.fla.  That is how you set up the Billboarded version of your avatar.

Now please open the AvatarAssets.as file found in the src folder, and you will notice a bunch of imports and some public vars.  What I am doing with this, is allowing the files to be pointed to and instantiated by the Massiva3d.swf via the XML (<female avatar = “src.ExternalAni8″).

Now the hard part.  If you haven’t created an animated 3d asset with Away3d there is a good tutorial on how to do that here: http://away3d.com/tutorials/tutorial-how-to-use-the-animator-class.  I’ve also included my own Avatar files that you may use in your own App.  If you do decide to create your own Animated Avatars I have created the ExternalAni.as files as a template for you to use.  I have setup the Avatar files to assign their own Material inside the ExternalAni.as Files.

For the moment the Animator that you create has to be named ani, and only 2 AnimationSequences are seen by Massiva3d.  Idle and Walk (Idle will be played when your avatar is not moving, and walk of course will be played as your Avatar is walking).

Massiva3d creates 2 avatars for you once your assets are loaded.  It instanciates your 3d Animated Avatar, and it creates a Sprite2d out of the .PNG file that you include in your AvatarAssets library.  Why it does this is it loads the 2 versions into a Level of detail object.  Why I’ve set that up is, if the avatar is far away from the user the Level Of Detail Object will switch out the 3d Avatar to the Sprite2d (which frees up all of those used Tris, and doesn’t bog down the client’s system).

This also leads to one of Massiva’s most powerful features: Proximity based billboarding.  What this does, is if the Frames Per Second of the client drops too low Massiva will start to switch out the Avatars from 3d to 2d based on Proximity to the User’s Avatar.  This system will basically keep swapping out the 3d avatars to 2d Avatars until the system is at a level that is can handle it.  I set this up due to the natural tendancy for users to cluster close together.  This would kill the flash player usually, think of 15 Avatars at 300-500 triangles a piece all clustering together.  Depending on the system, flash is able to deal with 1500-2000 tris in such an environment (I say that due to the camera movement, and the lack of static assets).

*Note:  when creating 3d Avatars for Massiva3d (or Flash 3d in general) you really REALLY need to take into account how many Polys/Tris you are alloted for each Avatar.  I suggest less then 500 tris per avatar (yep, that’s 250 Polygons), you might be able to get away with more, but it’s going to be a CPU hog.*

CityAssets.swf/FLA

This is pretty much setup the same way as the AvatarAssets.fla was setup.  I just want to go over a little of the XML in Massiva.xml and how it correlates to CityAssets.

<world ground = “CG”/>
<world ground = “CG”/>
<world ground = “CG”/>
<world ground = “CG”/>
<world ground = “CG”/>
<world ground = “CG”/>
<world ground = “CG”/>
<world ground = “CG”/>
<world ground = “CG”/>

The world is made up 9 planes.  And each of these planes are assigned their material in order via the materials stored with linkages in the CityAssets.swf library.

<city building = “src.CityBlock1″ x = “-30000″ y = “0″ z = “30000″ scale = “1200″ material = “City1″ 2d=”no”/>
<city building = “src.LowPolyMountain” x = “-60000″ y = “0″ z = “60000″ scale = “5000″ material = “LPM” 2d=”no”/>

These lines should be pretty self-explanitory.  I will explain the 2d property next.

<city building = “” x = “1000″ y = “350″ z = “5000″ scale = “2″ material = “Tr” 2d=”yes”/>

This is a cool feature that is in Massiva3d.  If you keep the building property blank, and you set 2d to “yes” this will create a Sprite2d asset for you.  That line is creating a tree.  Sprite 2ds are great for anything that you don’t want to waste Polys on.  Background assets like, Trees, Flowers, Mountains, Clouds, would all look great using this technique.

Another cool feature of Massiva3d is that any of the 3d City Assets will have a rudimentary Collision Detection in place.  Unfortunately the 2d assets have no collision detection at the moment.  I will be implementing Jiblib’s collision dectection shortly.

External Assets

This FLA includes all of the artwork that implements the User Interface.  Since this is a beta release there is very little built in to move around the assets at the moment.  I will be rolling out advanced controls over the placement shortly.

That concludes the overview for Massiva3d.  If you have any questions or any requests please feel free to e-mail:

massiva3d (at) influxis (d0t) com


The Stratus Sessions vol. 1

Thursday, December 18th, 2008

Seantron

Adobe Labs has just released the beta of Stratus which is the highly anticipated launch of the RTMFP protocol. RTMFP (Real Time Media Flow Protocol) is a Peer 2 Peer technology built on top of UDP (User Datagram Protocol or as I like to call it Unreliable Data Protocol, joking! Well. . . maybe not). This is a big step forward for FMS (since Stratus has to use FMS to connect the peers), for Multiplayer Gaming, and VoIP applications.

I’ve been researching Stratus for the last few days now, and I wanted to share my findings. Hopefully this will help get some of you adventurous types up and running. You can get your Developer Key from here.

This level of difficulty is around Intermediate to Advanced, I’m going to do my best to make it as plain as possible, so good luck. I am going to just go through the steps of setting it up, and explain as I go.

Click here to start presentation.

Click here for code.

FMS, Flash Lite 3, Nokia, and the Security Sandbox of fun

Tuesday, October 21st, 2008

Seantronic R&D, yo!

I know a lot of you have wanted to play with Flash Lite 3 and experience the joys of seeing your work on a mobile device, but who has the time?  Well, apparently, I do.

It’s theorectically easy to get FMS and Flash Lite 3 up and running.  Why I say theorectically is because I’ve already had issues with getting my Nokia N95 up and streaming.  I’ve also heard that it is a problem localized to Nokia phones.  Here’s the issue:  you would think to move over your application into your Phone Memory(C:)/Data/Other folder, and just fire it up from your Gallery section.  Wrong (cue silly trombone music) thanks for playing.  If you were like me, you would’ve been staring at the loading screen for what seemed to be hours thinking to yourself, “I know I’m in Albuquerque, but this connection is ridiculous!”

Well, it’s beyond ridiculous, the connection doesn’t exist.  In order to allow flash player to connect to the Mobile interweb on a Nokia you have to press Up, Up, Down, Down, Left, Right, Left, Right, B, A, Select, Start (if you got that joke, congratulations, you are old like me).  Here’s the actual secret mojo that you have to perform:  create a new folder labeled Trusted in your C:/Data/Other and place your .swf in there.  Then (if you’ve done everything correctly), you should be asked which connection the device should use to access the internet.  And voila!  You are almost done.

This code that I am including is only the client side.  What you’ll need to do is also do some server side magic (bandwidth profiling manually due to the native bandwidth check not working with Flash Lite 3), and developing video for the right bitrates.

If anyone is interested in the clientside stuff, leave some comments, and I’ll post that at a later date.

Download tutorial FLV