I'm building a video streaming web site. I should receive video streams from several clients and I should broadcast that streams to subscribed(to a particular video) clients. Never did streaming before. I have no idea what protocol to use, what kind of software is required on server side and so on.
any suggestions would be appreciated.
This doesn't cover your requirements for receiving streams from clients, you'd have to do some further research on that.
However for the broadcasting from you to your subscribers, especially seeing as your using Silverlight, you definitly want to have a look at IIS Smooth Streaming to provide the streaming. It is a free addon to the IIS webserver and provides a stream to the subscriber based on what they can consume (based on bandwidth and computer capabilities).
When it comes to the player for the subscriber to view the stream, you might want to check out the Microsoft Media Platform (formerly known as the Silverlight Media Framework). Which is a prebuilt but fully customizable Silverlight player, which works well with Smooth Streaming.
Related
mux.com (and also agora.io and so on) is a great service, but very expensive since it's a server solution. I can't use that.
Discord is a great client solution, that just uses gateways as a pass-through to hide IP addresses and so on. They described their entire architecture here: https://discord.com/blog/how-discord-handles-two-and-half-million-concurrent-voice-users-using-webrtc Discord ain't the only one with this approach, Instagram has AFAIK the same approach too, since it's cheap and does what it does
I want to use for my social media app (like instagram) this solution too, but without these many custom built things to increase performance. I am a one-man team and I can't handle that complexity; still i don't want to use mux because it's way too expensive for me
I am okay with the stock/standard performance. Does anyone know or can point me to a tutorial, where to start building such webRTC elixier gateway solution for m:m audio/video live streams calls?
maybe there already is code published that I can just copy paste
thanks a lot!!
edit
ive got an answer on their official forum https://elixirforum.com/t/how-to-build-webrtc-m-m-audio-video-live-streams-calls-like-discord-does-client-to-client-via-gateway-for-ip-protection/44956
Discord backend use SFU to forward streams for peers in a videoroom, the description from the discord post:
Discord Voice server contains two components: a signaling component and a media relay component called the selective forwarding unit or SFU. The signaling component fully controls the SFU and is responsible for generating stream identifiers and encryption keys, forwarding speaking indication, etc.
Note that the projects in answer are written in Elixir(based on Erlang) programming language, which is not very common used in neither live streaming nor WebRTC. For example, FFmpeg, x264, libopus, WebRTC, SRS, all these audio/video components are written in C++, you'd better think about it.
For a video chat product like discord:
The client app, no doubt, could be built on WebRTC, both H5 and mobile.
For SFU server, recommend C++ server, for example, SRS or mediasoup. Because the whole audio/video economy is C++ based, there're lots of stuff to handle for SFU.
About the signaling server, also called videoroom, could be written by nodejs or Go, because it depends on your business, so highly recommend your best skilled language, there're lots of work to do in this server.
And not all peers in a video room need to publish video stream, instead they only play or consume streams, so it's actually low latency live streaming. For more information about live streaming and video chat, please read this post.
I am looking to implement DRM on my learning management system React app to block unauthorized content downloads. Using VPS as web hosting as well as content hosting. The VPS is running on Ubuntu 20.04.
I am guessing you are talking about video content.
Assuming this is the case you need to either use a video hosting service which has a DRM service included, such as Vimeo, Brightcove etc, or else host and stream the video yourself, perhaps using a streaming solution - see below, and add the DRM when you stream.
For the latter you will need a service from one or all of the main DRM providers deepening on what platforms you want to cover (very high level - Widevine for Google browsers and devices, FairPlay for Apple and PlayReady for Microsoft but some exceptions and caveats) or else with a multiDRM provider who will interface with the DRM provider for you.
If you just want a simple and cheaper protection you may find a combination of authentication, secure URLs and very basic Clear Key encryption may be enough for you, but again the complexity to stream efficiently can be large so it may be worth looking at existing streaming server solutions like Wowza, AWS Media Services, Azure Media Services etc.
It seems as though IIS Smooth Streaming and Apple HTTP Live Streaming both use similar (if not identical) underlying mechanics. In particular they both rely on segmented H.264 / MP4 files.
Is it possible to output the video segments in such a way that the same video data can be utilized by both Mobile Safari clients and Silverlight clients? If the playlist format is the only difference then this would seem easy to deal with...
Edit: or more generally -- is there a common way to segment such that this kind of adaptive HTTP streaming is possible from the same static source files to both iOS and Silverlight players (and/or even Flash too)?
It's built in to IIS Media Services 4.0. There is an article with the details here.
I'm curious to get some feedback and ideas on how one could go about building a realtime data streaming application. We can keep the source data generic for this exercise ... throughput info, stock trade pricing, etc. Just something that is constantly changing, and the information is stored in a database.
I am interested in building a silverlight application that the user can pull up and see real-time (or at least, seemingly realtime if polling is the only option) information in a chart or grid as it changes.
As you may imagine, the technology menu for this project is silverlight, asp.net, wcf, and sql server.
What is the right pattern (duplex wcf, polling) for this kind of application?
One example (and please remember, don't limit yourselves to thinking about the financial markets domain) is this "Strategydesk" product from TD ameritrade. You can see how it is constantly updating in real time:
http://www.tdameritrade.com/demo/strategydesk/1497_ameritrade_strategydesk.html
Silverlight has TwoWay DataBinding available to refresh UI seamlessly using ObservableCollections.
On the backend i'll prefer legacy methods "polling" using WCF. Duplex WCP isn;t the right option i think because only one machine can be requester either client or server.
Watch this screen cast:
http://blog.lab49.com/archives/2650
Jason Dolinger has presented a sample SL app for real time Stock updates.. its just a proof of concept.. hope it will help you.
Regards.
You might want to look into using sockets in Silverlight. That will probably be the fastest/most responsive way to send/receive real-time data.
I am looking for an open source media streaming server.
It should have an API. I want to be able to stream videos to a mobile phones. Could you tell me the relative advantages and disadvantages of the software. Currently I am experimenting with red5
Using Darwin Streaming Server and VLC you should be able to get a quite powerful streaming solution. Probably not the easiest solution to setup but you should be able to achieve almost everything you need.
Regards,
If you can limit your clients to using ASX, I know that Microsoft has a Media streaming server, I have no idea how reliable it is. I know it exists.