I am working on a wpf application which is suppose to have video calling feature. So I am going for Skype to provide me with the solution.
I am using Skype4COM library to do it. I got all the friends from Skype in my application, I can make call to my friends and even can do video call, but I cant control streaming. Video is being shown in Skype window, I want to show it inside my application like a part of my application.
I don't even know which control should I use to handle the video streaming.
If there is another better way or free way to add video calling in a WPF application. I am ready to change my preferences.
I had previous plans to use Web browser control and go for WebRTC but that does not support IE and believe there is no web browser control from Mozilla and Chrome.
Videoconferencing is not trivial to implement. You have to first look at a signalling protocol like SIP or XMPP which would provide infrastructure to maintain a list of 'friends' and whether they are online or offline. The signalling infrastructure would also let you place a call and alert you when you receive a call. And then there is the question of actually flowing video/audio between two endpoints. There is no single solution that you can plug into your app.
You can look at Google's Libjingle or ConferenceXP for a starting point.
To establish a video conference you would need the following information:
Whom can you call? This is your friends list. You would need a mechanism to add friends to your list and ensure that you can only add friends that are willing to communicate with you
How do you establish a communication channel with your friends? For example what is their IP Address, can they support a particular video codec and so on.
Once you have established a way to communicate with your friend, then there is the question of receiving audio and video information and displaying it with correct timing.
For points 1 and 2 you would need what is called a signalling and presence protocol. SIP and XMPP are two very popular open protocol.
For point [3] you would look at a protocol like RTP.
You can google SIP, XMPP and RTP. You would receive a wide variety of literature. Look at the RFC documents for exact information they they can be a bit arcane.
Libjingle is a library written in C++ implements XMPP and RTP
ConferenceXP is a RTP implementation in C# with some basic signalling but I think you can get a start with the examples without really getting into details.
You may or maynot be able to control that screen. If skype decides to share that level of control with you.
But it looks like skype4com library is on a dead end. It will stop working soon. :(
http://gigaom.com/2013/07/13/skype-says-it-will-kill-desktop-api-by-end-of-2013/
http://aragonresearch.com/microsoft-kills-skype-desktop-apis-leaves-developers-scrambling/
I'd recommend you not to invest time on skype4com, but look to other solutions to get the video chat working.
Please go through the following thread, as this discussess few alternative ways for video chatting.
Developing a Video Chat Application with high quality video streaming
Another promising thing is the Bittorent Live. But you will have to wait. It claims
BitTorrent Live is a powerful new web-based live streaming technology.
Designed to eliminate barriers to broadcast, Live is an entirely new
protocol, designed to deliver high quality video to large audiences -
with significant reduction in infrastructure cost and network delays.
http://live.bittorrent.com/
Its not open yet, let see :)
Related
I searched on Google, but I did not find much information about it. I was wondering if anyone had experience so that they knew a proper way to get data input from a microphone and also know how to play it. What I would like to do is a typical streaming app in C#, which takes audio from the microphone and sends it on the client application. I await advice, thank you.
There're many source codes available if you can use google and bing... If you want to build this application with C# programming language, then you need to know some basics of Network Programming in C#.
If you want build a program like voice chat. You will need grab the audio from the microphone using some technalogies like DirectSound, UDP packets and etc.
If you want build a video streaming application you can use several ways to get video streaming/conferencing with .net easily.
Use of plain Windows Media Encoder components, RTC Clients, voice/SIP, Sockets and etc.
So you have wide choice of managed technologies here. Another thing is Live Meeting at which you had no chance to take good look yet.
For those still interested I found the NAudio library really interesting: https://github.com/naudio/NAudio
Sorry for my English grammar :( (I try learn it)
I want to try write online turn based game with Unity3d.
I want that people will have login with their username and password and will can play from different device like :
1 player from android/iphone and second from facebook
or 1 from web - second from tablet
etc...
Right now I think to create game 1 vs 1 (for 2 players) - but maybe in the feature I will open a new mode for multiplayer
it's simple to card game.
I'm c# developer so I will write code with c#.
My question is:
1) What I have to use for TURN BASED game (if you can give me link)
I think about WCF or WebAPI - for cross-platform
So what is best practice???
2) I want integrate a premium feature in the game - what you can suggest about billing system inside the game? With which company work is better?
3) I also can write code on JavaScript - if is give me plus in performance??
4) Authorization in the game:
What is best practice today?
User have create account in my system or better to give to user login with his facebook account??
5) How I can sync. between mobile device and facebook game? if is possible?
Where I can save his credentials? If in mobile/tablet I can save in local database, in web - in cookie? where in facebook??
6) server - where the best place to publish the server side ? Amazon cloud? or not??
Unity itself supports networking. But there are other plugins like Photon Unity Networking which are enhanced version of unity networking. It also supports Turn based game plus it is a cross platform will support iOS, android and web.
Photon Engine for Unity Networking
I assume by Billing System you mean In apps in the app. I have used UniBill its works fine with iOS,GPlay,Amazon etc stores. With so much less effort you can integrate the plugin. Unibill by Outline Games
C# is enough i think.
You can use facebook it good enough. You can also add simple guest login for authorization. Guest will be registered on the basis of Unique User ID which is provided by unity.
For storing data, you can use Parse Third party plugin. I have tried it and it works great. If you are going to web app as well then try using their Rest API. It will work will all their supported platforms.
Q1) What I have to use for TURN BASED game (if you can give me link) I think about WCF or WebAPI - for cross-platform So what is best practice???
WCF might not be the best choice, though it functions, but in typical cases, you might wish use Socket or Websocket to communicate.
The benefits of Websocket is that the connection, once established, remains active, and this is quite different from http protocols, in which request-response model is used. With http, the connection dismisses once the message is sent/received, you need to repeatedly setup the channel which has overheads if you have massive message, be it large in payload or frequency.
As a comparison shown below, the performance of Websocket is much better than http based communication, refer to this link for more details.
Another option is to use Redis or MongoDB, which has built-in support of the pub-sub model. Since you are talking about the card game, you might wish that:
Player 1 flips the card, all the other players in this game/room can immediately see this change
Player 2 does sth else, all the other players in this game/room can immediately see this change as well.
This is very simple if you use Redis, one client publishes a message (e.g. card flip), then let all the other clients to subscribe this, then all other players (Android, iOS, web, facebook, tablet whatever) get notified immediately, it is then up to you implement your game logic.
The 3rd option is to use xxx-MQ (e.g. RabbitMQ, ZeroMQ, MSMQ, ActiveMQ) which are essentially message brokers, you can use the pub-sub model easily to implement the turn-based game logic.
3) I also can write code on JavaScript - if is give me plus in performance??
No really different.
Here is performance test
Result is:
The average of C# is 8,075ms and Unityscript is 8,142ms. So C# is a little bit ahead,
I'm looking for a library for conference a/v streaming to a server, which multicasts to all other clients. I've looked at SIP and openh323, and both seem too specialized for voip telephony.
I want the app to be a cross platform Silverlight application (mac and windows), so I don't think I can use DirectSound, right?
Thanks in advance.
You may be mixing apples and oranges in your question. DirectSound provides an API for accessing sound cards; H.323 and SIP are standards for making a call out.
Silverlight 4 natively provides a couple of simplified APIs that are roughly equivalent to DirectSound, so that you can access the microphone, sound card and webcams. See http://msdn.microsoft.com/en-us/library/ff602282(VS.95).aspx for some details.
But once you've got the sound, you still need to encode it, transmit it, mix it, distribute it, and then receive it. That's where it gets complicated. Flash has support for all this natively; Silverlight doesn't. The best open source implementation right now for doing this was put together by SocketCoder and is available on CodePlex, but it uses a proprietary signaling/streaming protocol, a proprietary and very inefficient video codec, and a proprietary media server.
From what I can tell, the best option for doing what you want in Silverlight is a closed-source solution provided by StreamCoders. It's not open-source, but it supports a reasonable set of open standards, which means that you'd probably be able to use a third-party open-source media server. You'd want to test to make sure that it's what you need, of course.
Alternatively, you can try your hand at porting any of the various open-source solutions to C#. I've done this with the Speex pre-processor: it's complicated, but not as difficult as you'd think. You could presumably do something similar with openH323 and the various C-based codecs that are out there. You might even try your hand at modifying the Silverlight RTMP implementation by FluorineFx (http://www.fluorinefx.com/) to do what you need to do. None of this is likely to be simple, of course.
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
I have been assigned to know to how to make a GPS Navigation Software for Win CE 6.0 operating system. But after searching a lot, I couldn't find a good way to start.
I have downloaded some free software by which i can view the provided ShapeFile files but I want to make a software by which I can view those files in my customized mode.
My preferred technology is .NET 3.5 / 4 and my OS supports silverlight.
You can visit this link what exactly I want to do.
Thanks in advance.
I have to work on a predefined data set (shape files) provided by my client and i have to put my app in GlobalSat [GA-5718] device.
Your suggestions are very fine but it won't work for me. Thats why I am in a confusing position.
At first you'll need to get access to the GPS data and read it. Most GPS modules act as a serial device on some COM port and provide their information in the NMEA Standard.
To get this easily read you should take a look at the OpenNETCF Serial Library, cause it provides an easy access to the informations and is able to read the NMEA strings.
But most GPS modems needed to be initialized by sending a correct NMEA input string. For these you should take a look into this documentation, this site or in the comment in the source above function public bool SendGpsMessage(string GPSSentence).
With these informations you should have a good starting point to correct read in the GPS data. Visualization of these informations to the user (like showing a Map with the current position) is another task. But maps.google.com API would be a possible candidate if you software runs on a machine with internet connection and you don't mind the costs for this connection.
The fact that you are asking this question strongly suggests you do not have the resources or ability to write it from scratch (it is a substantial project). Therefore you will have to use existing toolkits. You mention Silverlight, so I suspect you are going to be working in an online environment. Therefore I would recommend the Bing Maps Silverlight Control. IMHO, this outperforms the Google Maps control at the moment - but it is a moving target. This is a place where active competition results in two products (Google Maps & Bing Maps) constantly trying to out do each other.
If this is for a commercial application, then check the EULAs for these services - although many enthusiasts assume they are free, this is not necessarily the case. Most commercial applications cost significant sums ($1000s per month). In such a situation, the choice of service will probably come down to cost rather than technology.