I'm making a program for do a livestream of the XSplit Encoder (RTMP Server). I need to have a site to watch that stream, and this program, the player need to have a button to the spectator can choose your video quality, and the stream have to be fluid and have a good quality. Can someone explain this or send me a link to do that? Please
(C#)
This is a VERY large undertaking. And an impossible question to answer unless you narrow the scope. You need a ingest server that takes in RTMP, You need a machine with enough CPU power to do all the transcodes. You need site to playback on. You also need enough bandwidth (CDN) for all your viewers. How many viewers do you need to support? What platforms do you want to play back on? iOS? then you need HLS. Web? then you need RTMP. Or you can use DASH if your ok with limiting it to modern browsers. Do you want it to play in firefox? Then it MUST be flash, because firefox does not have native support for the h.264 codec. But flash wont play in iOS. You can use JWPlaver premium, that will play HLS in flash. Actually is h.264 the codec you intend to use? Have you looked into services such as Zencoder live transcoding? Or Wowza with the transcoding module? Amazon offers preconfigured wowza instances. What is your budget for this project? Why not just use twitch?
Edit: You can probably string something together using ffmpeg:
https://trac.ffmpeg.org/wiki/StreamingGuide
Related
I have a C#/C++ app that captures a video stream from the camera connected to a user's PC. It then does user segmentation using the Intel RealSense SDK to automatically remove the background from the user. What I need to know is how to
insert myself into the video delivery chain so I get each frame, process it, and send it on to the WebRTC module.
The whole desired effect is to make the user look like they are superimposed over the web page. Note, the only browser I need to support is Chrome since I am running the Chromium DLLs in an embedded browser, thanks to the CefSharp project.
The one piece I can't figure out is to put myself into the video so I can get notified when a new video frame is available, modify it, and then pass it on to WebRTC in Chromium. I downloaded the Chromium source and can't find the keyword getUserMedia anywhere.
Since you are using a port of Chromium, this means that you should have access to WebGL calls through WebKit.
Instead of doing it on the app-side, try doing it on your HTML.
Since the question is "Intercept video frames in a WebRTC session for effects processing?" I think this post and the demo it has, which is on github, does exactly what you are asking for:
Using WebGL to apply effects to WebRTC video frames
And since WebGL shaders are basically written in C++ (GLSL), you could easily create a fragment/pixel shader which removes the background. Odds are that there's probably already one out there, it'd be worth trying to google for that one.
Also, in case performance concerns you, doing it this way would be just as fast since shaders work off of the GPU; even in mobile.
H,
How do I stream my webcam through a webpage in c# using asp.net
Thanks
Sp
Depends what you want: streaming (more delay but better quality) or live view (like MSN, Skype Video, etc - less delay but lower quality).
For the first one, you need an encoder API as well as some media server to distribute the video for you. For the latter, you need Flash, Skype API, or similar API and users need direct access to (a port) on your PC.
Tell us a bit more about what you're trying to achieve. Since I've been in this business for years, I might be able to help you out if I get to understand what you want.
If this sponsored event happens only once, you can get a 2-week free trial from StreamZilla (http://www.streamzilla.eu/online-store/online-cdn-store) and use Flash Media Live Encoder (http://www.adobe.com/products/flashmediaserver/flashmediaencoder/) to stream via their network. This will make it 100% free (assuming that you provide the webcam and a powerful PC yourself).
Other providers (eg. UStream) might have trial periods as well, or you might even get it for free if you explain them about the charity part. I've got good experiences with StreamZilla and UStream's Watershed.
Contact me if you need more help.
If you are asp.net then silverlight 4.0 is way to do this. Silverlight is application framework to develop rich internet application and this now supports all webcam api also.
Here is the link to display how you can do this.
http://mtaulty.com/CommunityServer/blogs/mike_taultys_blog/archive/2009/11/18/silverlight-4-rough-notes-camera-and-microphone-support.aspx
Do we have a way to simulate a webcam driver, that will provide realtime captured screen (30 frames per sec) as it's output?
This is one of several features of ManyCam (free). It is a virtual webcam driver through which you can stream your real webcam video (with optional real-time video effects), video or image files, or your full/partial desktop.
Yes, just google video2webcam. It works quite well and will loop a video or picture as output.
The driver's job is to provide a level of abstraction between the software and hardware. The driver is supposed to issue commands to the hardware. It's not responsible for taking pictures and turning it into an animated GIF for instance. It's going to do low level stuff like, turn the device on and off, send raw data to a socket.
That being said, if you need to create a virtual device driver. Here's an overview of VDD's. Windows Programming/Device Driver Introduction
Generally these are not written in higher-level languages such as C#. Rather, they are written in languages such as C/C++. You will need the KMDF, or Kernel-Mode Driver Framework.
If you just need to access a webcam from a .NET application on a system with a webcam, you just need an API.
Open your browser.. go to google.com and type ".NET webcam API"
You will see something like this:
Webcam in your own application
It appears that this is a wrapper for the DirectShow class.
I am looking to put a camera on top of a my lab in the process of being built and stream it to a website.
How can I be doing this with only c# ? How to get stream of video & send it live on server PC from there he can take instant photos?
Modern web cameras would supports WIA and DirectShow. WIA has a scripting interface which is more friendly to C#, however it is designed for cameras and scanners and is not that fast for streaming. But if you just need to push the image to a server, you don't need to write code, kist use Windows Media Encoder to push to a Windows Media Server's publishing point. You can then get image from the server's publishing point using DirectShow or Windows Media Format SDK. None of these are easy in C# though, you are better off using COM class libraries like ATL for extensive COM programming like this.
If you really want to write this in C#, I've had a lot of success with Egmu.
Capturing images is very straightforward - see this question. After that, it'd be FTP to the server as usual.
I'm curious about Sheng Jiang's Media Encoder solution though. Let me know how you get on.
I am interested in developing an application that will allow me to build a list of videos from xml (containing video title, duration, etc) and play that list as my webcam stream. Meaning, if I were to visit ustream.tv, or activate my webcam on live messenger my video playlist would register as my active webcam.
Does anybody have experience in this area, and perhaps have some advice to offer?
If you want this to work so that third party apps see your video as a standard webcam stream (and is sounds very much like you do) then the only way to do it is to write a virtual webcam driver. You will then then be able to "play" your video content as your webcam's streaming output. This will involve writing code to decode the video content - probably using DirectShow - and then copying the raw video stream to the webcam's output stream. You'll need to either write a custom DirectShow renderer filter or use the sample grabber to access the raw, decoded frames.
It's certainly an achievable goal, but not particularly easy given that both DirectShow and driver development have fairly steep learning curves. There are a variety of different driver models you could use for this, depending on exactly what your aims are. The easiest thing would be to create a Video for Windows (VfW) virtual camera driver. The huge benefit of this approach is that the driver will be entirely user mode code - much easier to debug and to write in general.
I don't have a lot of experience in this area, but I would start by looking at the MSDN docs for the DirectShow API.
A couple of .NET wrapper libraries exist as well:
Managed DirectShow
DirectShow.NET
Another DirectShow.NET