RtspClientSharp 1.3.2

C# RTSP Client for .NET

- Supported transport protocols: TCP/HTTP/UDP
- Supported media codecs: H.264/MJPEG/AAC/G711A/G711U/PCM/G726
- No external dependencies, pure C# code
- Asynchronous nature with cancellation tokens support
- Designed to be fast and scaleable
- Low GC pressure during receive stage (when RTSP session is established); low amount of freezes under high load

Install-Package RtspClientSharp -Version 1.3.2
dotnet add package RtspClientSharp --version 1.3.2
<PackageReference Include="RtspClientSharp" Version="1.3.2" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add RtspClientSharp --version 1.3.2
The NuGet Team does not provide support for this client. Please contact its maintainers for support.

Features

  • Supported transport protocols: TCP/HTTP/UDP
  • Supported media codecs: H.264/MJPEG/AAC/G711A/G711U/PCM/G726
  • No external dependencies, pure C# code
  • Asynchronous nature with cancellation tokens support
  • Designed to be fast and scaleable
  • Low GC pressure during receive stage (when RTSP session is established); low amount of freezes under high load

Using RtspClientSharp

Something like this:

var serverUri = new Uri("rtsp://192.168.1.77:554/ucast/11");
var credentials = new NetworkCredential("admin", "123456");
var connectionParameters = new ConnectionParameters(serverUri, credentials);
connectionParameters.RtpTransport = RtpTransportProtocol.TCP;
using(var rtspClient = new RtspClient(connectionParameters))
{
    rtspClient.FrameReceived += (sender, frame) =>
    {
        //process (e.g. decode/save to file) encoded frame here or 
        //make deep copy to use it later because frame buffer (see FrameSegment property) will be reused by client
        switch (frame)
        {
            case RawH264IFrame h264IFrame:
            case RawH264PFrame h264PFrame:
            case RawJpegFrame jpegFrame:
            case RawAACFrame aacFrame:
            case RawG711AFrame g711AFrame:
            case RawG711UFrame g711UFrame:
            case RawPCMFrame pcmFrame:
            case RawG726Frame g726Frame:
        }
    }
    await rtspClient.ConnectAsync(token);
    await rtspClient.ReceiveAsync(token);
}

You could find more complex samples here (e.g. simple RTSP player with full frame decoding and rendering processes):
https://github.com/BogdanovKirill/RtspClientSharp/tree/master/Examples

Features

  • Supported transport protocols: TCP/HTTP/UDP
  • Supported media codecs: H.264/MJPEG/AAC/G711A/G711U/PCM/G726
  • No external dependencies, pure C# code
  • Asynchronous nature with cancellation tokens support
  • Designed to be fast and scaleable
  • Low GC pressure during receive stage (when RTSP session is established); low amount of freezes under high load

Using RtspClientSharp

Something like this:

var serverUri = new Uri("rtsp://192.168.1.77:554/ucast/11");
var credentials = new NetworkCredential("admin", "123456");
var connectionParameters = new ConnectionParameters(serverUri, credentials);
connectionParameters.RtpTransport = RtpTransportProtocol.TCP;
using(var rtspClient = new RtspClient(connectionParameters))
{
    rtspClient.FrameReceived += (sender, frame) =>
    {
        //process (e.g. decode/save to file) encoded frame here or 
        //make deep copy to use it later because frame buffer (see FrameSegment property) will be reused by client
        switch (frame)
        {
            case RawH264IFrame h264IFrame:
            case RawH264PFrame h264PFrame:
            case RawJpegFrame jpegFrame:
            case RawAACFrame aacFrame:
            case RawG711AFrame g711AFrame:
            case RawG711UFrame g711UFrame:
            case RawPCMFrame pcmFrame:
            case RawG726Frame g726Frame:
        }
    }
    await rtspClient.ConnectAsync(token);
    await rtspClient.ReceiveAsync(token);
}

You could find more complex samples here (e.g. simple RTSP player with full frame decoding and rendering processes):
https://github.com/BogdanovKirill/RtspClientSharp/tree/master/Examples

Release Notes

-Bug fix: Wrong logic was added to JPEG parser in commit https://github.com/BogdanovKirill/RtspClientSharp/commit/3b1b21967217ec30d1ae3c62fdbd7ce409106646

More info provided here: https://github.com/BogdanovKirill/RtspClientSharp/issues/55

  • .NETStandard 2.0

    • No dependencies.

This package is not used by any popular GitHub repositories.

Version History

Version Downloads Last updated
1.3.2 52 9/17/2019
1.3.1 527 8/5/2019
1.3.0 245 7/20/2019
1.2.8 888 5/28/2019
1.2.7 616 4/13/2019
1.2.6 583 3/7/2019
1.2.5 262 2/24/2019
1.2.4 1,237 10/24/2018
1.2.3 509 8/31/2018
1.2.2 219 8/18/2018
1.2.1 198 8/15/2018
1.2.0 195 8/15/2018
1.1.0 180 8/11/2018
1.0.0 301 7/23/2018