I need to record the voice of the student from the client and send it to server to check whether there are any gramatical mistakes in it. I have designed the client in flex.
My problem is, i have no idea of how to store the recorded sound and send it to the server. can you guys give some guidelines? And one more question is red5 better than flash media server?
Red5 and FMS both can do the recording task for you.
For recording, you have to use the NetStream class. That will send the recording real-time to the server. When closing the NetStream make sure the buffer is empty so you don't cut the recording.
You cannot record the sound on the client.the recording and the sending is a single seamless process.
About the servers, I don't know if better is the correct question, it's free so I'd rather use it in this case.
Related
I need to stream several "channels" (by channels I'm thinking of radio channels, so playlists might be more appropriate) of queued MP3 files to around 200 clients over the internet from a Windows 2008 R2 / IIS 7 web server. Encryption of the stream is not a requirement.
I need some way to ensure each client can only stream one channel at a time. I was thinking of restricting by IP address, and would welcome any suggestions on how I might go about this, or if there may be a better way.
For my clients I assume I'd need a player on the client end that could facilitate "logging in". Ideally I would be able to stream to windows xp/7/8, mac and android clients.
I would need to be able to log in remotely and control each channel / playlist from a finite list of MP3 files hosted on the web server.
I'm wondering if there any off the shelf products that I could use to do this. If not, I'm stuck on what would be the best way to go about this.
I've briefly read up on shoutcast, auto dj, streamcast and ice cast, but I don't have any experience with these solutions, and can't find any information about how to implement the security requirements I have (limiting access to one stream per client / ip address).
IP addresses do not uniquely identify users. There are plenty of situations where NAT comes into play, and you can have hundreds of users all behind the same public IP address.
What you need to do is have another method for identifying users. Assuming you don't want to require accounts, you can use a session ID.
Basically, you assign an ID with a cookie to a browser. When the user clicks a link to launch their audio player, the session ID is passed in the URL to the stream. With this method, it doesn't matter if the browser itself or a separate audio player is used to play the stream. It is up to the streaming server to then accept or reject the request.
It is common to accept any new request and disconnect the old when a new stream starts. Icecast doesn't support this sort of thing natively, but it does provide an API of sorts with the admin interface that you can use from your own scripts to get this behavior.
Alternatively, I have written a server called AudioPump that provides similar functionality. It isn't generally available yet, but please contact me at brad#audiopump.co if you're interested.
I've been doing some research in how to implement a server free, point-to-point video/audio chat (i.e., my own skype without text messaging).
I've been looking for ways to implement it and I had this next ideas:
A multithreaded c++ (cause I know some c++) program getting audio and video (with qt), sending it through 2 different UDP sockets and reading video and audio from 2 other different UDP sockets from the other 'point'. So I'll had to write the UDP server and client multithreaded with a sum of 4 threads: 2 for sending audio and video, other 2 to receive audio and video.
Writing my own protocol to enable video and audio in the same thread, something like parsing half of the packet data size for audio and video buffering, which would leave me with only 2 threads in the application and a lot more 'error prone' code to write.
I've been looking to some real time media protocols, and some of them looked interesting. Maybe study and implement interfaces to this protocols and use them instead of 'creating' my own.
Now, the actual question(s):
Are there some documentation on how to accomplish this? Maybe some 'state of the art' apis/protocols that are being used or well implemented/suited solutions for this problem?
If I choose to implement audio separated from video, is VoIP a possible solution to the audio connection?
Is Qt a good tool for this purpose? I never used Qt before, and for video and audio interfaces I also thought about openframeworks, so I was wondering if anyone has ever used one of this frameworks and if this is the right choice.
I know that my question has no code and that the range of possible answers is wide, but I really need some help here.
Thanks.
First, you should answer on question: How your clients should connect / authorize without server part?
Notes: 1) Skype has servers. 2) A lot of internet users are visiting web throught NAT / Proxy.
Ofc, you can try to implement something for learning proposes, but if you want to create something usefull - try thirdparty solutions that are created by specialists. For example: google libjingle.
You need VOIP library’s :)
There's no need to start from scratch you can use library’s opensource like: opalvoip
I am trying to build an application where I am required to record and playback simultaneously. The application needs to go live on an asterisk telephony server. My problem is:
A user calls the asterisk server and starts to speak.
The voice packets being sent by the user are recorded in a wav file on the system.
A copy of the voice packets are sent as feedback simultaneously.
I have taken a look at ChanSpy, but it will not work if one is using Record.
My questions:
1. If a user calls an asterisk server, does that channel become a simplex or half-duplex channel?
2. Are there any commands etc. that allow us to do the above?
3. If not, does that mean I need to go into C programming for asterisk (agi-bin)?
P.S: Please let me know in case more information is needed.
Why not try MixMonitor? That allows you to record the call, and doesn't interfere with ChanSpy usage. ChanSpy IS the best way to do this, by the way.
You are wanting to feed to voice channel from the caller back to the same caller correct?
Have you tried the Echo command?
I have an Adobe AIR application that makes multiple connections to a server. When I open more than two connections I get an error:
2032: Stream Error.
Is there a configuration option or a property somewhere to raise the limit?
Not familiar with a configuration for this, but I have a theory you might test. Flash is single threaded, but handles requests asynchronously. It still has to handle the input of streams through its one thread. If you are open connections that stream/stay open for a long time, there is probably some blocking going on that could be longer than the allowed stream buffer blocking tolerance. Perhaps flash can handle 2 connections, but introducing the third starts to cause a stream to block too long. This is not exactly a solution, but may get you going in the right direction.
There are no limitation you may check this forum https://forums.adobe.com/thread/1281685
Also you should provide some details like sdk version,os etc
I'm developing a multi-player game and I know nothing about how to connect from one client to another via a server. Where do I start? Are there any whizzy open source projects which provide the communication framework into which I can drop my message data or do I have to write a load of complicated multi-threaded sockety code? Does the picture change at all if teh clients are running on phones?
I am language agnostic, although ideally I would have a Flash or Qt front end and a Java server, but that may be being a bit greedy.
I have spent a few hours googling, but the whole topic is new to me and I'm a bit lost. I'd appreciate help of any kind - including how to tag this question.
If latency isn't a huge issue, you could just implement a few web services to do message passing. This would not be a slow as you might think, and is easy to implement across languages. The downside is the client has to poll the server to get updates. so you could be looking at a few hundred ms to get from one client to another.
You can also use the built in flex messaging interface. There are provisions there to allow client to client interactions.
Typically game engines send UDP packets because of latency. The fact is that TCP is just not fast enough and reliability is less of a concern than speed is.
Web services would compound the latency issues inherent in TCP due to additional overhead. Further, they would eat up memory depending on number of expected players. Finally, they have a large amount of payload overhead that you just don't need (xml anyone?).
There are several ways to go about this. One way is centralized messaging (client/server). This means that you would have a java server listening for udp packets from the clients. It would then rebroadcast them to any of the relevant users.
A second way is decentralized (peer to peer). A client registers with the server to state what game / world it's in. From that it gets a list of other clients in that world. The server maintains that list and notifies the other clients of people who join / drop out.
From that point forward clients broadcast udp packets directly to the other users.
If you look for communication framework with high performance try look at ACE C++ framework (it has Java bindings).
Official web-site is: http://www.cs.wustl.edu/~schmidt/ACE-overview.html
You could also look into Flash Media Interactive Server, or if you want a Java implementation, Wowsa or Red5. Those use AMF and provide native functionality for ShareObjects including synching of the ShareObjects among connected clients.
Those aren't peer to peer though (yet, it's coming soon I hear). They use centralized messaging managed by the server.
Good luck