Send synchronized audio and video data over the network - c#

I have separately sent Audio and Video over the network but i want to send synchronized audio video data over the network.if any one could me to the solution it would be greatly appreciated.
p.s: i am using Naudio for audio and DirectShow for video.

I assume the first point you have to make sure is that you are generating the RTCP packets at some fixed interval of time. RTCP maps the rtp timestamps with NTP. And this is required at the client end for syncing audio and video.

Related

stream audio and video data separately

I'm developing a C# video streaming application.
At the moment I was able to capture video frames using opencv and encode it using ffmpeg and also capture and encode
audio using ffmpeg and save data in to queue.
The problem that I am facing is that when I send both streams simultaneously I am losing video stream.That means I stream it by first sending a video packet and then an audio packet. But, the player identifies video stream first and start to play. And did not play audio packets.
Can any one give a method to do this task?
It will be greatly appreciated.

How to stream live mjpeg?

I am using directshow sample grabber in order to take pictures with rate of 25 fps from a web cam. Using pic resolution of 640x480. Pic size is around the 25500 bytes after converting it to jpeg. I am sending the frame using the rtp protocol. Also sending voice encoded with g711 with rtp protocol on different port. I am struggling a delay issue with the video from time to time. Maybe the jpeg size is too big? Do I need some how to compress the to mjpeg before sending?
When I recieve the frame on the client side, I am showing it in a picturebox. Changing the pictrue in the picturebox in small period of time give us the illusion of video.
Is this the right way?
https://net7mma.codeplex.com/ has an implementation of this, you would use the RtspServer and just put the new images in a directory and use the class RFC2435Stream which does this for you by monitoring that directory.

Audio Streaming from Microphone

I'm creating an video chat application but I'm having issues streaming microphone audio. I have video streams working already but I was hoping to find out the best method of capturing a laptop's built in microphone and stream it. At the moment I'm using a NetworkStream for sending the video. I have limited experience with NAudio (http://naudio.codeplex.com/) but every example of microphone capture doesn't seem to include a New Audio Frame event (which is my method for sending video frames).
I've been looking at http://voicerecorder.codeplex.com/ but it seems to be more than I need and doesn't cover streaming.
How do I capture microphone audio and stream it, if possible without the overhead of saving the audio to a file? I'd appreciate a simple example.
Create a new WaveIn object
call StartRecording
in the DataAvailable event handler, transmit args.BytesRecorded bytes from args.Buffer across the network.
Note that this will mean you are transmitting PCM, which is not very efficient. Normally for network streaming you would use a codec. In the NAudioDemo source code there is a Network Chat demo showing this in action.

How to decode voip audio when G711 and G729 comes together in single stream?

I am developing a voip call recording system in c#. I have used ffmpeg.exe to decode the streams.
what i have done till now is that catch all incoming and outgoing rtp packets and write to sepperate files(only the payload part). And by ffmpeg i used to convert into mp3 each then mix both the incoming and outgoing audio.
And now i found out that in single stream both the g729 and g711 codecs are coming. The decoding commands are different for both the codecs.
So i need to decode both seperately. But i dont know how will i overcome this issue.
Can anyone suggest me a solution ?
I am using Wireshark to analyse the packets.
Edit
Below i added filter details
Is there any open source softwares for call recording other than oreca ?
Thank you.

Recording SWF and Converting to FLV

I have tonss of videos in database and they can't be accessed directly but I can play them one by one and can record them. Now I want to write a program (probably in C#) that will get a URL and will start Internet Explorer or any other default browser to start the link. Once the link will be started, video will be playing.
Now my job is to record the video for "x" seconds along with audio. I can record the video by taking screenshots very frequently but what about audio and it's quality? Do I need to put microphone in a sound proof room attached with speaker so that I record it or I can directly pull the audio off from audio interface card before letting it toward the speakers?
Any ideas?
Umair
This is not wise at all. You will have a huge quality loss recording video from screen and re-encoding it, not to mention the time this will take.
You should find a way to access those videos directly from the database, and run them through a converter like ffmpeg.
What about using rtmpdump to retrieve the video stream as a .flv? Of course, you will need to parse the stream information from the respective web pages, but that should be manageable.

Categories