

However, our consumer is only able to process MP4 files with video encoded with H.264 and audio encoded with MP3. Here, we have a Matroska file video.mkv, containing video that was encoded with Google's VP8 and audio encoded with the OPUS codec. Encode the raw data back, using a different codec that is supported by our intended consumer.Decode media from its originally encoded state into raw, uncompressed information.

This is typically done for compatibility purposes, such as when a media source provides a format that the intended target is not able to process an in-between adaptation step is required: Transcoding is the act of transforming one media encoding format directly to another. The command syntax is generally the same on all platforms, but you might need to adapt some platform-specific details such as continuation lines ( \ on Linux, ^ on Windows), or access to environment variables ( $NAME or $ on Linux, %NAME% on Windows).īefore heading directly into practical examples of RTP streaming, we have to talk about transcoding, a concept that ends up appearing sooner or later around the topic of media streaming.

You still need to know what is a codec, a parser, a filter, etc., how and why are you using all these together, and be able to work your way through technical documentation and asking the right questions, in order to end up using these tools in an effective way.Īll the examples shown here will be formatted for a Linux terminal. The matter of fact is that media processing in and of itself is a complex topic, and tools like FFmpeg or GStreamer couldn't do much to smoothen this without at the same time compromising on their feature set. Using these tools can be somewhat confusing or complex for the uninitiated, though. We'll be having a look at how these are handled by some of the best known open-source multimedia tools, FFmpeg and GStreamer: what are the characteristics and shortcomings of their RTP implementations, bugs, things to keep in mind, etc. While RTP is a pretty well established standard, not all extensions and operation modes are necessarily supported by all implementations. In this series of posts we are talking about RTP and SDP:
