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 [url removed, login to view]).
We will use the VLC media player ([url removed, login to view]), 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 ([url removed, login to view]) 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
([url removed, login to view]).
1. Your code should follow the specification of the Real-time Transport ProtocolRTP
(RFC3550 [url removed, login to view] and RFC3551 [url removed, login to view]), and the
RTP Payload Format for MPEG1/MPEG2 Video (RFC2250 [url removed, login to view]), 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.