Silverlight streaming video - silverlight

I'm creating a web platform destined to the customers of a certain company. The company requires that the platform allows the streaming of videos.
It's important to note that the company will be the one to add the videos to the platform, dinamically, from a software built by me for that purpose, and each video will be referenced on a sql server table.
I've never done streaming before so I'm asking 2 things:
The first is about some guidance in silverlight streaming(tutorials, articles, examples, etc)
The other is my main concern. I have a few video samples from the company, and all of them are over 200 MBytes and can go up to 2GB, so I know I have to re-encode them to become smaller. But, how do I do this... I mean, do I have to re-enconde them, manually, one at a time, or is there a way to do it automatically as a new video is added?
I have Expression Studio Encoder 4 pro, but never really used it, and as far as I can tell, I have to manually add each video to do the enconding. Again... is there a way to do this dinamically??
Thanks

Not all video formats and encodings are supported by Silverlight. See this page for a list of supported formats. You will probably need to recompress your videos not only to reduce their size but also to normalize the format.
The recompression could be done in a windows service running in the background, the more appropriated libraries to be used will probably depend on the target format you will use. For wmv files I would recommend using Windows Media Format SDK,the (currently deprecated) Windows Media Encoder SDK or its succesor Expression Studio Encoder SDK. For using H264 as target I would recommend using ffmepg.
You should decide on a delivery protocol depending on the number of users you can forsee for your website. HTTP might not be the best choice, since there are other protocols like RTTP, usually more suitable for video streaming.

Related

Silverlight vs ActiveX for lightweight app with system access

Just an R&D question. We need to develop an application that can be run in a browser that has the capability of performing some system checks to gather support information to be emailed to us. These checks will include basic system information, but also will need to scan the filesystem and pull out version information about various DLLS, executables, and .NET assemblies that might be installed. The idea being that we can direct a client to a page and have the application gather the relevant information needed for support, and potentially even populate some database fields. We need it to have as small a footprint as possible.
I've worked with ActiveX before, and know it is capable of these things, but particularly on modern systems security is a nightmare to get around, with a lot of people blocking ActiveX altogether. Is Silverlight easier to deliver to clients? Does it have a lighter footprint? Is it even capable of doing these things?
Silveright has access to isolated storage, but I don't think it can do what you are looking for (I may be wrong). As for footprint, if I remember correctly, the runtime is reasonably small, and the .xap packages are limited to 4Mb.
Silverlight out-of-browser has access to the file system. http://msdn.microsoft.com/en-us/library/dd550721(v=vs.95).aspx#special_features_for_outofbrowser_applications
If you intend to run your app in the browser, you will still have to configure the trust as if it where oob. http://msdn.microsoft.com/en-us/library/gg192793(v=vs.95).aspx
However, iTunes has a neat way of doing something somewhat related. It has a custom protocol (itms://) that allows the browser to invoke a client side program (iTunes). Then you can embed html in a webpage that passes parameters as command line arguments to that app. The website also knows if the iTunes is installed by a cookie. We this in mind, you might be able to encourage your users to install some small app that setups the custom protocol on install. You could pass command-line parameters to it from the web, and the app will push information from the client back to the server.
To create a real-time experience, you could use sockets + more javascript to update the page with the info you just got off the machine.
HTH,
Silverlight runs in a pretty restricted silo and can't do a lot of low level things - such as checking the file system. So I would say it does not fit your use case, unfortunately.

Video capture and recording from a web page

I am trying to build a web application that can capture audio and video from a web cam and upload it to our server. The solution should work with both Windows and Mac. Supporting mobile devices would be a plus, but is not required. My boss would prefer if the platform/framework was from Microsoft.
My initial impulse was to start looking into SilverLight... Interestingly, there were plenty of demos showing how to capture video and display it to the user, followed by many comments suggesting that for the application to be useful we need some way to save/upload the video, followed by the original poster saying that of COURSE it's possible and easy and that he is working on an updated demo that does just that, followed by silence. As far as I can tell SilverLight will not record video.
I already have a component that can record video in a winforms application using DirectShow, but the goal is to build something that is cross-platform so that our program will work for Mac users as well as Windows users. A desktop application is not out of the question, but we would much prefer to stick to a web page.
I am aware that Flash can record video from within a browser, but the higher ups would prefer to avoid flash. Is there any other way to record video captured from a user's webcam from within a web browser?
To build a cross-platform solution you shall consider either one of :
VLCj
Xuggler
JMF
I have been working lately with VLCj.
I am aware that Flash can record video from within a browser, but the higher ups would prefer to avoid flash. Is there any other way to record video captured from a user's webcam from within a web browser?
Unfortunately on the desktop there is no other production ready way to record video in a web page except a Flash client linked to a media server like Red5 or Wowza. The Flash client captures and encodes the video and audio and the media server stores the encoded data in .flv or .f4v/.mp4 files.
On mobile you could use HTML Media Capture which, for recording video, is widely supported on all mobile browsers. The downside is that you'd end up with .mov files from iOS and .mp4 and .3gp files from Android devices. The .mov and .3gp files need to be transcoded before they can be used on other platforms.
Quick commercial solutions that implement the above include HDFVR (downloadable) and Pipe (cloud video recording).

What are my options for streaming for silverlight?

I would like to implement limited scope streaming (LAN, multicast, even broadcast) where the client is implemented in silverlight. More importantly, I would like to stream from a desktop OS, not a server OS. As a result, I can't use the MS media server, which I believe requires WS2003 or WS2008.
Ideally the solution would have some sort of API so I can plug in or provide a custom frame source.
If I need to encode my own video, how can I encode using H.264 or another Silverlight supported codec?
if I need to implement my own server, where can I find information about how a client starts to receive a stream?
thank you! I know, it's a lot of questions, but it basically boils down to "how do I stream from a non-server OS?"
My Friend Vikram wrote a blog post about Overview of Live Smooth Streaming,Live Encoding and Streaming with Expression Encoder 2 – Part 8. Check it out and see if it helps. I dont think he used a server for the article.

Local data sources for GIS Map plugin?

I am developing an ASP.NET intranet application that needs to have an interactive map interface.
There are some pretty neat Silverlight mapping plugins that I think could work well, specifically:
ArcGIS Silverlight API: http://resources.esri.com/arcgisserver/apis/silverlight/
DeepEarth mapping framework: http://www.codeplex.com/deepearth
There are no doubt many more plugins out there that will allow easy interaction between ASP.NET and the mapping interface (please suggest some if I've missed the major players).
My major concern however is using these tools with local data sources. What is the best option here? All I need is some basic satellite imagery of moderate resolution and some overlays of cities and country borders. Can I download a dataset of these images? I dont really care if they are up to date or not, so long as the photos were taken in the last 20 years.
I want to be able to use local data sources because external internet connections could be very slow due to the nature of the organisation's work, Intranet communication will always be much faster.
To summarise:
1.) where can I find a dataset of moderate quality global satellite imagery?
2.) Which web based mapping plugin will allow me to plug into such a data source?
If I can get something like the DeepEarth demo (http://www.codeplex.com/deepearth) but grabbing the data from internal company servers I would be very happy.
You can check out the free geodata listing at:
- http://www.freegis.org/database/?cat=1
Or have a look at:
http://downloads.cloudmade.com/
where cloudmade provides downloadable openstreetmap data converted to shape files.

JPEG 200 (aka J2K) handling in Silverlight app - any suggestions?

I need to handle JPEG 2000 (aka J2K) images in my silverlight app. Files stored either in the DB or file system on the server. Any suggestions how to handle them on the client? The only working converter I came across was written in Java. There are some ports to J#, but most likely they are not going to work on the client. The requirement is that the conversion should happen on the client to conserve the bandwidth and speed up the streaming of huge images.
It's not supported by Silverlight and .Net Image Tools don't support it too at the moment. So you have to write your own, port the (Java) version or ask the ImageTools developers if they can help you.

Resources