Visit the FlashNewz Directory

Software
Download, Desktop...

Communities
Communicate, Help...

Forums
search, learn...

Animation
Animate, Frames...

Resources
books, help...

Tools
add ons, extra's...

Tutorials
books, help...

News
Technology, Business...

Submit your site for FREE

Stream from Virtual Directories with FLVPlayback Component


Stefan Richter By: Stefan Richter

Here comes a little gotcha that could potentially have you pulling your hair out for a fair few hours, and some more once you realise how simple the ‘fix’ is.
If you are streaming files from FMS (be it version 2 or 3) then you may have made use of its Virtual Directory feature. This allows you to use a key (basically a named mapping) to point FMS at different storage locations for video files.

For example you could configure a key name of ‘myvideos’ and map this to a location of C:\myfiles\videostorage. The tag in vhost.xml would look like this:

</VirtualDirectory>
<Streams>myvideos;C:\myfiles\videostorage</Streams>
</VirtualDirectory>


Then every time a stream is requested via NetStream.play the server will look for the myvideos key in the stream path and if found locate the appropriate video file inside /videostorage (or if required in a subfolder).

The following code would play the file nicevid.flv located at C:\myfiles\videostorage\client1\nicevid.flv

ns.play(“myvideos/client1/nicevid.flv”);

So far so good.

So how would you use this approach with the FLVPlayback component? You may assume that you simply enter somthing such as the following as the video source property:
rtmp://myserver.com/myapp/videostorage/client1/nicevid.flv

For a non-mapped location this would probably work. The FLVPlayback component does not normally require you to pass an application instance name so you would not pass one here either (myapp in this case is the application name).

It turns out though that if you use mapping you need to explicitly pass an application instance name, otherwise the FLVPlayback component will utilize videostorage as the instance and lose the mapping. Therefore the correct rtmp string in this case would be
rtmp://myserver.com/myapp/myinstance/videostorage/client1/nicevid.flv

Note that you can substitute myinstance for any name you see fit, it doesn’t matter what you pass as long as you pass *something* here. So let’s look at the elements of this rtmp string quickly:

rtmp://myserver.com - the server address
myapp - the application name
myinstance - the application instance name
videostorage - the named mapping which directs stream requests to the virtual directory we configured
client1 - a subfolder which holds videos
nicevid.flv - the actual video we want to play

Hopefully this helps somebody sometime.

About The Author

Stefan is a certified Flash Developer who has been involved with Flash Media Server since its very early days. From his home office in the UK he has handled a variety of projects, specializing in Flash Video and Rich Internet Applications for clients that include CNET, USA Network and Unilever. Stefan is the author of a series of Adobe Developer Center articles, has spoken at several industry events and contributes a regular column on Flash Video to Streaming Media Magazine. His site www.flashcomguru.com is one of the largest online resources on Flash Video.

Leave a Reply