To build a client and server program to enable a video file to be streamed using RTP and RTSP.
$10-30 USD
Closed
Posted almost 3 years ago
$10-30 USD
Paid on delivery
Implement a streaming video server and client. The client will use the real-time streaming protocol (RTSP) to control the actions of the server. The server will use the real-time protocol (RTP) to packetize the video for transport over UDP.
You may reuse the code that partially implements RTSP and RTP at the client and server (link provided in the references section). When you are finished, you will have created a client-server application that does the following:
- The client can pick the video file to consume using the video file name.
- The client can send SETUP, PLAY, PAUSE, and TEARDOWN RTSP commands to server
- The server responds to the commands above.
- When the server is in the playing state, it periodically grabs a stored JPEG frame, packetizes the frame with RTP, and sends the RTP packet into a UDP socket.
- The client receives the RTP packets, removes the JPEG frames, decompresses the frames, and renders the frames to view.
- Use status codes and responses such as 404, 5xx if the requested content is not found on server or server throws an error.
Implementing the Client Basic Features:
When the client starts, it also opens the RTSP socket to the server. Use this socket for sending all RTSP requests.
SETUP
- Create a socket for receiving RTP data and set the timeout on the socket to 5 milliseconds.
- Send SETUP request to server. You will need to insert the Transport header in which you specify the port for the RTP data socket you just created.
- Read reply from server and parse the Session header in the response to get the session ID.
PLAY
- Send PLAY request. You must insert the Session header and use the session ID returned in the SETUP response. You must not put the Transport header in this request.
- Read server's response.
PAUSE
- Send PAUSE request. You must insert the Session header and use the session ID returned in the SETUP response. You must not put the Transport header in this request.
- Read server's response.
TEARDOWN
- Send TEARDOWN request. You must insert the Session header and use the session ID returned in the SETUP response. You must not put the Transport header in this request.
- Read server's response.
Note: You must insert the CSeq header in every request you send. The value of the CSeq header is a number which is incremented by one for each request you send.
RTSP Client State Machine:
In this project, you will need to keep the client's state up-to-date. Client changes state when it receives a reply from the server according to the following state diagram.