RtspClientSharp 1.3.3

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.3
dotnet add package RtspClientSharp --version 1.3.3
<PackageReference Include="RtspClientSharp" Version="1.3.3" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add RtspClientSharp --version 1.3.3
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: Additional check for NAL start marker was added. That should resolve issue with some cameras which sends one NAL for one frame without start bytes (0 0 0 1)

More info: https://github.com/BogdanovKirill/RtspClientSharp/issues/49

  • .NETStandard 2.0

    • No dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version History

Version Downloads Last updated
1.3.3 9,085 10/4/2019
1.3.2 430 9/17/2019
1.3.1 1,615 8/5/2019
1.3.0 439 7/20/2019
1.2.8 1,161 5/28/2019
1.2.7 746 4/13/2019
1.2.6 694 3/7/2019
1.2.5 381 2/24/2019
1.2.4 1,399 10/24/2018
1.2.3 659 8/31/2018
1.2.2 338 8/18/2018
1.2.1 309 8/15/2018
1.2.0 338 8/15/2018
1.1.0 314 8/11/2018
1.0.0 488 7/23/2018