In this project, you will implement a video transcoder that should receive a media stream from a media
server and convert the stream into another format to meet the client requirements. Video transcoding
refers to a two-step process in which a previously compressed video bit-stream is decoded to an
intermediate uncompressed format, and then re-encoded into another bit-stream with a different bit rate or
frame rate, a different resolution (e.g., downscaling), or a different coding format (e.g., the conversion
between MPEG-x and H.26x).
We will use the VLC media player ([login to view URL]), which can be used as a server and as a
client to stream and receive media streams. The transcoder will receive an MPEG video stream over RTP
from the media-streaming server, decompress the video at the decoder part, change the bit rate, frame
rate, or resolution at the encoder part, and send the new MPEG video over RTP to the client. The FFmpeg
libavcodec library ([login to view URL]) will be used by the transcoder to decode/encode
the video frames. Examples can be found in the “doc/examples” directory of the FFmpeg package
([login to view URL]).
1. Your code should follow the specification of the Real-time Transport ProtocolRTP
(RFC3550 [login to view URL] and RFC3551 [login to view URL]), and the
RTP Payload Format for MPEG1/MPEG2 Video (RFC2250 [login to view URL]), so that
the transcoder is able to receive/send RTP packets with MPEG payload from/to the media
2. Your code should be independent of the VLC media libraries, which means you cannot use any
source codes of VLC in your code.