I'd like to either 1) Stream my camera+mic or 2) Stream my desktop+mic (or OBS) to many people (1 to many) watching from a web browser. Since I'd like to communicate with people in real time low latency is highly preferred (1 second or less would be great).
What's the standard way of doing this today? I have no idea what twitch uses but from playing with rtmp (using the nginx rtmp module) there seems to be a 4+second delay (or maybe I configured it poorly) and doesn't seem to have native browser support. People watching will use their desktop computers but some may be watching from their phones.
Am I to use webrtc somehow (does it support 1 to many? what software do I use)? Or HLS (which seems to want recordings, what config do I want for a live video)? What are my options?
This is an extremely difficult question. If you only need a hand full of viewers (around 10 or less), WebRTC the way to go. If there is a lot of viewers, and you can spend a lot of money, WebRTC is still a good choice, but the bandwidth cost can add up. If you don’t have a lot of money, but need a lot of viewers, you need cheeper bandwidth, this means using an HTTP CDN, and HLS or DASH which adds latency, but is cheeper to operate. If you have 100+ million dollars, you can build your own WebRTC cdn and have the best of both.
So to answer your question, there is no standard way. It depends on your circumstance, use cases and budget.
Related
I am sure that this question has already been answered, but unfortunately I do not know the keywords. Therefore my search remained unsuccessful until now.
Scenario: I want to transmit a lifestream via Mobile Internet using RaspberryPi, and depending on the bandwidth, downscale the streams and upscale them again when available.
My two questions for the network specialists among you:
i know i can actively check the bandwidth, but how would you do this without interfering with the existing processes transmitting? Should I commit a bandwidth to the processes and then slowly determine the remaining bandwidth using a test tool? Or are there already practical solutions?
Can I determine in the mobile Internet, or in the network interface, when a bottelneck is reached?
Passive methods would be my preference. where I wouldn't have to load the bandwidth. e.g. I could know how much bandwidth the stream uses, and how much arrives. But how do I make sure there is enough capacity before I go up with the bitrate?
Thanks for your wisdom ;)
I want to know the real difference between Agora and Webrtc? What did I know Agora provides you SDK for different platforms for video, audio calls, and chats and it charges you accordingly, it provides 10,000 minutes free monthly and charges you if you exceed, Webrtc is a Web Real-Time communication that provides you different API to implememt in your app or web to have video, audio or chats in free & unlimited? Am I Right? If yes then why people would use agora and pay money when they have free WebRTC with unlimited audio videos calls and chats for a long time? pls guide your help will be appreciated
I do not know much about WebRTC pls help me out thanks in advance
This is similar to saying that you can use HTML5 to build websites but still people pay AWS to host machines, databases, storage, application logic, etc.
WebRTC is a web technology that is part of HTML5 and is implemented by all modern browser. To make it work, you will need to create websites, install servers, pay for media traffic, optimize your code - you can do it on your own (and pay the cloud hosting vendors for their service) or you can use a third party that offers that as a managed service for you - like Agora and others that do it, where you end up paying to them for their efforts.
To decide which approach is for you, I can suggest two things:
Build a simple demo app with WebRTC. One where you understand what the code does. If you are happy with it and truly understand what goes on - make the decision if you want to continue in that route or use a 3rd party
Just go use Agora or other 3rd parties and pay them. WebRTC isn't rocket science but it isn't simple either
Agora and similar APIs provide a layer on top of WebRTC. They aim to make it easier for developers to leverage WebRTC capabilities without having to build everything themselves from scratch.
Devs who are fine getting into the nitty gritty of WebRTC can indeed do everything themselves, like you say. I recommend trying it! But often, a team or single dev might just want a straightforward way to integrate video/audio into their product without necessarily knowing what an SFU is, how a TURN server works, how to ensure certain data privacy standards, etc. So these kinds of APIs help make WebRTC easier to leverage by doing most of the heavy lifting and letting people focus on all the other important parts of their app. Pricing-wise, there are a few different very good API options that might be more or less affordable depending on the use case.
I'm currently working on an api for an app that I'm developing, which I don't want to tell too much about. I'm a solo dev with no patents so it's probably a good idea to keep it anonymous. It uses socket.io together with node.js to interact with clients and the other way around, which I might be swapping out sometime later for elixir and it's sockets, but that isn't relevant for now. Now I'm trying to look into cloud hosting, but I'm having a rough time finding a good service to use.
These are my requirements:
24/7 uptime
Low memory and performance necessary (at least to start with). About 1+ gig with 2+ cores will most likely suffice (need 2 threads or more for node to handle async programming well)
Preferably free for like maybe even a year, or just really cheap, but that might be munch to ask
Must somehow be able to run some sort of database. Haven't really settled on this yet, but I want to implement a custom currency at some point, and probably have the ability to add some cooldowns. So it can be fairly simple and small. If anybody has any tips on what database I should use, that would also be very welcome. I was thinking of Cassandra because of the blazing fast performance and expandability. But I also wanna look into remote databases, especially if I'm gonna go international with the product
Ability to keep open socket.io connections, as you've probably guessed :P
Low ping decently high bandwith internet. The socket.io connections are lightweight and not a lot of data has to be sent. Mostly packets of a few kilobytes every now and then for all of the clients.
If this information is too vague or you want to know some other requirements I haven't thought of, let me know.
Check out Heroku (PaaS), they have a free version to start with
We've made an application where two people can video chat with each other using TokBox, but are running into a lot of technical issues surrounding WebRTC and TokBox itself. I know that Twilio recently launched a Javascript version for their video service, but both TokBox and Twilio seem to be aiming for larger scale publish/subscribe operations. It also isn't as far along as TokBox.
Are there other services out there that can do web video 1 on 1's? Perhaps some that don't use WebRTC and therefore don't have the problems we are facing?
I can't help but to think back to ChatRoulette and similar apps.
If what you need is an application that needs to run within the context of a browser, then WebRTC is your only choice when it comes to the technology to use. There's just nothing else there now that Flash is officially dead.
If you need it to run purely inside a packaged PC/mobile application, then you can use something other than WebRTC, but I don't really see the need for that.
When using real time video technologies, one aspect to look at closely is the quality of the network you are using. The questions I usually ask myself are things like does Skype/Hangouts/FaceTime run any better? If the answer is "yes they do", then the problem is in the implementation you have done/used. If the answer is "no, they are just as bad" then you probably can't do a lot better either.
For alternatives, you can check out the vendors listed in this WebRTC Develoepr Tools Landscape: https://bloggeek.me/webrtc-developer-tools-landscape/
I don't know what you mean with "a lot of technical issues surrounding WebRTC and Tokbox itself", but I do know Tokbox handles millions of 1:1 streaming minutes every day, without issues, and it can even handle sessions with 1 publisher and 3000 subscribers at the same time, so, maybe the technical issues are not there, but in another place...
I have a large repo of mp3s on my LAMP server (I think it's a Debian VPS now) and currently I use a crude flash based mp3 player that "streams" the mp3s directly from my server. I am implementing an HTML5 player but I feel this is a similar to my flash integration (and this is slightly besides the point of this question)
This question is about how I should start molding my delivery to limit bandwidth - connection speed isn't entirely an issue (although should be reasonable) but my bandwidth costs are flying now and I need to take measures to limit stream quality (transcode down to 128)
Ideally I'd like to avoid RTMP so I can use my shiny new soundmanager2(html5) plugin for mobile etc, and as such I've been looking into this article here - http://www.metabrew.com/article/transcoding-http-mp3-streaming-proxy-in-bash which details how to create a proxy to on-the-fly transcode bitrate and serve new files.
I am fairly new to this arena and am open to all solutions! Thanks!
P.S I am open to 3rd party services - affordable ones at least :)
Possible Solutions (on SO)
reduce bandwidth streaming mp3s php