how to implement video webcast on the website? - c#

we have a video file which we have to "webcast" on the website (ASP.NET MVC 4 C#) to about 1000 users. I have absolutely no idea how to do this. I'm looking for answers to the following questions:
How webcasts are implemented in general? what are keywords I should be googling for?
How to synchronize video streams sent to different users?
How much computing power do I need for 1000 users? Need a rough answer of course. One server, or tens of servers.
any links, blog articles etc would be appreciated.
Thank you.

In general webcasts are implemented where there is a client software that sends tcp packets of stream data to server and server represents those packets as moving pictures.
In theory they already should be synchronized since you don't send the full video, you only send the current packets that are then buffered and represented as moving pictures. There will always be inconstancy in milliseconds because you cannot control every users ping to server.
It all depends on quality of your video as well as your webserver. No one will give you straight answer, you should always profile your applications on your own and see what bests fits your needs.
Since you are using C# MVC it is coupled with IIS, and IIS has something they call IIS Media Services that does exactly what you need. Definitely check it out.
Also you should check out c# live streadming in google, I found very interesting approach right here.

Well, as a streaming media person, here are my suggestions.
You could do a "live" webcast or an on-demand webcast depending on your choice. Live means, if you have a video file, you could broadcast it to multiple users at once and all will see it as if watching in a TV. They cannot pause your video. Normally, only live events are being broadcasted like this, unless you have a specific reason to broadcast an existing video file as a "fake" live broadcast.
You could use Windows Media Server (Add the media role in Windows Server 2003/2008/2012). Configuring and starting a windows media server needs intermediate level of familiarity with the streaming process, server, firewalls, exceptions. You have a lot of configurations which you can manage in this way, and generally suggested if you are very serious about your streaming. RTSP saves a lot of bandwidth for you too.
You could use Flash Media Server/Wowza media Server, Real Streaming Server also inplace of Windows media server.
For limited number of users, you can download the free Windows media Encoder, and select your file to be streamed, and click to stream easily. This is the easiest.
You could use managed streaming services from few thirdparties, like Livestream, Brightcove etc to stream video files.. Once you signup with them, the will give you an FTP/web space to upload your files, and they provide a link to the file (streaming media link). This link, you could embed in any popular player (like JWPlayer or any of that kind), and embed your player in your webpage for your users to start seeing the media. This is the most easy way to set it up. Maybe you can even get a 15 day trial services from brightcove or Mogolous.
Hope this answers your question.

Related

How should I store images for my website/app?

My team and I (all students, this is a college project) are creating a software, that's basically 2 frontends (a website and an app) connected to a backend through an API. We have the entity user in this software, and one of its properties its image since we expect to have a lot of users, We don't think storing the images directly on the database it's the best thing.
So in this kind of cases what should we do ? What's the best practice ? (all the components are going to be deployed so local storing it's not really an option).
(We had in mind to get some 3rd party service where we could upload the images and just store the link in the DB, but is this possible? is this fine?).
You can consider using cloud storage like
Amazon S3 (https://aws.amazon.com/s3/)
Google Cloud Bucket (https://cloud.google.com/storage/docs/creating-buckets)
Microsoft Azure Storage (https://learn.microsoft.com/en-us/azure/storage/common/storage-introduction)
They have some free of charge for experiments/learnings but you also need to be aware of charge fees after some certain usages limits. They're using cloud computing, so you don't need to worry about the performance.
Another choice that you can build your own image server and serve images directly to your website. The benefits could be
Having the same connection directly to your website via domains (faster than cloud sometimes)
You can flexibly control your image sizes/types according to your image requests. For example, you can convert your images to WebP or compress them to fit users' local devices
Of course, with this way, you need to have knowledge about building an image server.
there are many different cloud storage services that you can use to host images for your project. most popular of them is imgbb & imgur . I've been using them for a long time and they work great. Both have api's which are very simple to implement. If its your first time using them, you might want to watch a tutorial on youtube . Hopefully this helped you.

Developing a C# reporting tool - should I use Google Analytics?

I need to develop or obtain a reporting tool that will allow us to obtain information to answer the following questions:
Frequency of use (Must)
Usage of application on a person level (Must)
Successful pages/slides (frequency of use) (Must)
Who updated the application software (Must)
Who updated the application content (Must)
Popular in which regions (Must)
Number of people who download the app vs number of people who own a device Must)
Time spent using the app (Should)
Exit pages (Should)
Number of users of share function (Should)
Number of users of search function (Should)
Time taken to update the app (software) (Should)
Time taken to update the app (content) (Should)
Use of media types (video) (Should)
Use of media types (downloads) (Should)
Average number of pages/slides visited (Could)
Number of users of feedback button (Could)
Environment app is being used (customer, office, MyCompanysOffice) (Could)
The application is a simple installer that communicates with a REST service to download and install HTML and media content, which the user browses LOCALLY. The app provides a kind of on-demand service for downloading and viewing content.
Media formats include mp4, docx, pdf, ppt which are viewed by launching media player, adobe etc.
The use of Google Analytics has been put forward as reporting tool, but I'm not sure if this would be appropriate for the following reasons:
1. GA is a tool for monitoring website traffic rather than user activity
2. GA is not really intended for tracking local pages ie ones using the file:// protocol (although I think it may be possible with one or two hacks)
My specific questions are - would Google Analytics be appropriate for generating reports of the information I described?
Would it be better/simpler to obtain this information through the logging (eg via log4net) and generate a report from that?
Is there another, better tool I could be using to generate these reports?
I can recommend Application Insights for application telemetry (performance, user activity etc). It very flexible and configurable and i think you can make it fit your needed measurements.
You can read more about Microsofts Application Insights service here: https://azure.microsoft.com/en-us/services/application-insights/

Unity WriteAllBytes Web Player alternative

I have an app that uses a sync function where all the content is saved locally from a server (CMS).
On the server I have text, images and videos. The script is downloading all that info and then is saving the text in text files and images and videos as bytes. In the editor and on android is working well and my question is how I can use an alternative to File.writeAllBytes for the web player. I searched a lot for solutions but I didn't find any. How I can access the file system on local storage from the web player or how can I use the cache system for this?
How I can access the file system on local storage from the web player
For security reasons, games run via the Unity Web Player are not given direct access to the file system. Unity's built-in PlayerPrefs system does allow you to store some data locally, but it only supports a few primitive types, and the Web Player limits the data to 1 MB.
It doesn't sound like you're using AssetBundles, but in case you are, the WWW class has a function LoadFromCacheOrDownload that can do some local caching. I'm not aware of any specific reason to limit that function to AssetBundles, but I would speculate that it was originally meant to push devs into buying the Pro license.
You can call JavaScript on the page that's hosting the game, with Application.ExternalCall and Application.ExternalEval, and the page itself can also send messages to the game by interacting with the web player object. I'm not a particularly savvy JS developer, but that may open up some other workarounds.
These limitations may impact your design options.

SilverLight: How to record a video from a web camera

I have searched how to use SILVERLIGHT to record video for days but got no luck.
Most articles related to SL only talk about how to record audio or snap a picture rather than recording a video file and save it somewhere.
And I found there is no resources about it on Internet(I am surprised!!!)!
So could you provide me an example code with proper explanation?
I am waiting for it.
PS: I do not want to use Flesh as none iPhone nor iPAD supports it.
Thanks
Fortunately, Mike Taulty's source code can easily be updated to work with Silverlight 5. You can download the fixed source code and try it out (Disclaimer: all code courtesy to Mike Taulty, I merely fixed SL5 compatability and ran a cleanup). Use your favorite diff tool to see the changes I made.
I have tested it, and it generates video files that can be viewed in VLC media player (after selecting build index to fix the corrupted index). As the file format is not 100% correct, the files can not be opened in Windows Media Player etc... but I'm sure that can be fixed.
You should, however, be aware of the fact that Silverlight is not supported on iPhone, iPad, Android, and Windows Phone (Windows Phone apps are made on a special version of Silverlight, but can not run Silverlight applications in the browser).
Unfortunately, after undergoing hundreds of hours researching on the possible solution, I finally found the answer in a book called: Pro Silverlight 4 in C# (Matthew MacDonale, APress).
According what is said on the page 436, although you can do it with Silverlight 4 (you have to write your own file header helper, store the row data as byte arrays and later on you have to convert them into a raw video data and what is worse is the audio and video are separated.), it is just not practical and worthy to do it. Because it requires reams of complex, handwritten code to convert it, and the conversion process is computationally expensive, which makes it extremely difficult to do in real time.
So I guess this would be the conclusion of my question. Now what seems still make sense for me is to find out why Microsoft doesn't support it and what is the new technology which is going to be used/ has been used to replace the SL.
Is it HTML5? But as far as I know, there is only a video tag in HTML which can only be used as a video player, but no tag to support to get the access of a web camera and save the captured video+audio at the same time as one file onto somewhere which could be a local hard drive or a network storage.
I hope all dear you could come up with some thoughtful advice.
I am going to leave this question un-answered for a few days to see whether there could be someone who can come up with some fantastic solution.
Thanks again.

How to get files to WP7?

Let's say I'm writing a eBook reader for Windows Phone 7. Now the first thing that the user will need to do is add some books to his device, and since I don't offer a online book store or similar service, the only option is file transfer from his PC to the phone. Is he able to do this, how? Then how do I access this file. Can this file be placed in Isolated Storage of my app? I was searching around and didn't find any solution, in fact I believe that similar scenario is currently impossible but I just wanted to hear your toughs on the problem and probably some workaround ideas.
I haven't seen any way to add files from the desktop the phone is connected to. However, you can build your own software for the desktop that uses a WCF service and allows connections from the phone. The phone can download files from the desktop WCF service. See a similar concept here, you can implement the concept discussed in the post the other way round.
HTH, indyfromoz
Would you not be able to download the ebooks using some kind of webservice/http?
(Obviously you'll need a website, somewhere for this)

Categories