Rating:        Based on 6 ratings
Reviewed:  1 review
Downloads: 0
Change Set: 111009
Released: Feb 7, 2015
Updated: Mar 1, 2015 by juliusfriedman
Dev status: Stable Help Icon

Available Downloads

There are no downloads associated with this release.

Release Notes


Adds support for the remaining unimplemented media container formats


OggReader, NutReader, GxfReader, RealReader, McfReader and Others.

Brings the total number of supported container formats to 13.

Supported Digital Container Formats

Developers should be able to retrieve File and Track level properties from all of the following containers:
  • Base Media Format
    • .qt .mov, .mp4, .m4v, .m4a, .ismv, .isma, .ismc, .jp2, .jpf, .jpx, .mj2, .mjp2
  • Resource Interchange Format
    • .riff, .avi, .divx, .odml
  • Matroska File Format / WebM
    • .ebml, .mkv, .mka, .mks, mk3d, .webm
  • Advanced Systems File Format / Windows Media
    • .asf, .wma, .wmv
  • Material Exchange Format (SMPTE 377-1-2009 {[377M-2004]})
    • .mxf, .aaf, .omf
  • General Exchange Format (SMPTE 360M-2001)
    • .gxf
  • Ogg Media Container (Skeleton and Index)
    • .ogg, .ogv, .oga, .ogx, .ogm (OggDS new and old headers) (Now also reads info pages for title and other attributes)
  • Nut Media Container (Version 3 and > Including Side Meta Data and draft compatibility)
    • .nut
  • Real Media
    • .ra, .rm, .rv
  • Multimedia Container Format
    • .mcf, .av.mcf, .audio.mcf, .video.mcf
  • Mpeg Program Transport and Elementary Streams
    • .ts .VOB .EVO .m2ts .ps .pgs (etc)
- Added TransportStreamReader, PacketizedElementaryStreamReader and derived ProgramStreamReader.

Discussions will take place for additional file formats such as but not limited to the following:
  1. Interchange File Format (.iff) / Audio Interchange File Format (Compressed) (.aiff, .aifc) (Which are both very similar and a pre-cursor to Riff)
  2. Magic Lantern Video Format
(Other formats requested should have small sample file(s) in such a container)

RiffReader - General Bug Fixes and code reduction.

BaseMediaReader General bug fixes and code reduction as well as performance increase.

CommonHeaderBits, RtcpHeader, RtpHeader, RtcpPacket, RtpPacket and RtspMessage now have GetHashCode and Equals override as well as operator overloads.

RtspMessage - Has been improved to support more methods and parsing styles. Performance has also been improved.

RtpClient and RtpSourceStream - standalone creation without a RtspClient is possible from a SessionDescription
- Sending of a Goodbye and other reports can now be forced.
- Code reduction and performance increase.
- Now allows more usage scenarios

- Made Interleaved Operation more reliable (Thanks to testing by exterminator). TCP Re-Transmission is dealt with by disabling receive coalescing and analyzing data when receiving to be sure a partial segment was not received. The result is that under TCP when packets are re-transmitted they are seen twice but framing is never lost.

RtpFrame - Fast path optimization on IsMissingPackets and IsComplete.

RtspClient - Code reduction and performance increase. (All sent requests are disposed), now has better API which can indicate paused and playing media. Supports RTSP 2.0 and server sent messages in RTSP 1.0
- Now allows more usage scenarios

- SendPause and SendAnnounce have been Added.

- Added EchoXHeaders

- Improved performance and parsing reliability!

RtspHeaders - adds standard parsing methods for Range, RtpInfo etc.

RtspServer - All sent and received messages are disposed, source packets are sent in dedicated client thread.

RtspServer.Media is now RtspServer.Sources

abstract SourceStream is now SourceMedia.

IMediaContainer - Disposed property added, WriteAt and ReadAt defined.

MediaFileStream - Now uses new streams to read and write underlying data when possible. Implemented with WriteAt and ReadAt of IMediaContainer

Node - Data reading and writing is now performed on a new stream for better performance.

RFC6416Media - Supports basic Packetization and Complete Depacketization.

RFC6184Media - Supports Complete Packetization and Complete Depacketization (including FU-A, FU-B, STAP-A, STAP-B, MTAP-16, MTAP-24)

RFC6185Media - Supports basic Packetization and Depacketization.

RFC6190Media - Supports basic Packetization and Depacketization.

RFC3640Media - Depacketization completely supported (interleaved and non) working on Packetiation.

RFC3952Media - Added

RFC5219Media - Supports basic Depacketization.

RFC2190Media - Added

RFC4629Media - Added

RFC4867Media - Added

RFC5215Media - Added

RFC5391Media - Added

RFC5404Media - Added

RFC5577Media - Added

RFC5993Media - Added

RFC4733Media - Added

RFC6295Media - Added

Codecs.Video.Mpeg - Added

Codecs.Video.H264 - NalUnitType, NalUnitSubType, SliceType and SupplementalEncoderInformationType Added.

Codecs.Video.Mpeg4 - ObjectTypeIndication Added

Codecs.Video.H264 - NalUnitType, NalSubUnitType, SliceType and SupplementalEncoderInformationType Added.

Improves overall library API and Performance.

Ensures compatibility with Silverlight, WPF and GDI can all be achieved.

Breaks down library into several components:

Media.Common.dll - Containers Binary class and functions for dealing with Network Protocol Time values and Loggers for used with `ILogging` interface.

Media.Sdp.dll - Contains Session Description Protocol related classes. Much Improved, Classes are now public (Almost Final)

Media.Container.dll - Contains Digital Media Container Format Super-set Implementation.

Media.Container.Asf.dll - Contains Asf Implementation
Media.Container.BaseMedia.dll - Contains BaseMedia Implementation
Media.Container.Ogg.dll - Contains Ogg Implementation
Media.Container.Nut.dll - Contains Nut Implementation
Media.Container.Mpeg.dll - Contains Mpeg Implementation
Media.Container.Gxf.dll - Contains Gxf Implementation
Media.Container.Mxf.dll - Contains Mxf Implementation
Media.Container.Matroska.dll - Contains Matroska Implementation
Media.Container.Riff.dll - Contains Riff Implementation
Media.Container.Mcf.dll - Contains Mcf Implementation

Media.Codecs.dll - Codec super-set Implementation

Media.Codecs.H264.dll - Contains H264 Codec Implementation
Media.Codecs.Mpeg1.dll - Contains MPEG1 Codec Implementation
Media.Codecs.Mpeg2.dll - Contains MPEG2 Codec Implementation
Media.Codecs.Mpeg4.dll - Contains MPEG4 Codec Implementation
Media.Codecs.Jpeg.dll - Contains JPEG Codec Implementation

Media.Rtp.dll - Contains RFC3550 Implementations.
Updated for compliance / errata and performance.

Media.RtpTools.dll - Implements the `rtptool` suite in managed form. Compatible with Columbia, Wireshark, libjingle, and other `rtpdump` writers in all available formats (Binary, ASCII, Hex, Short)

Media.Rtsp.dll - Implements RFC2326 Client with Draft 2.0 Compatibility as well as Http and Tcp Interleaving Support.

Media.RtspServer.dll - Implements a RFC2326 Server which is cpu and memory efficient.

RtspServer.dll - In a later release will be broken down to separate the Frame implementations from the Sources for ease of use.


-Performance Testing Indicated that `5000` users achieved a max CPU utilization of `42%` and 210 MB Memory.

- These numbers are obtained in process and include rapidly connecting clients which may disconnect and resume their session before it times out -

(Average 20% CPU utilization and 70 MB memory with average 750 active connections)

-These numbers are obtained from a seperate dedicated process which consumed media repeatledly from the server while I was able to visually watch stream from QuickTime, VLC etc. - (But at the same time as the disconnect test)

- Client media streams are unaffected by extreme load

- Server supports thousands of concurrently connected clients

Reviews for this release

i dont know how to import the project source code
by ving0099 on Nov 20, 2014 at 3:54 AM
There is no NuGet package or compiled binary, you must download the source and then compile. This will change when the library has come to a later release which requires such.
Reply by juliusfriedman (N/A) on Nov 22, 2014 at 5:50 AM