LeanScreen 1.1.0

dotnet add package LeanScreen --version 1.1.0                
NuGet\Install-Package LeanScreen -Version 1.1.0                
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="LeanScreen" Version="1.1.0" />                
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add LeanScreen --version 1.1.0                
#r "nuget: LeanScreen, 1.1.0"                
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install LeanScreen as a Cake Addin
#addin nuget:?package=LeanScreen&version=1.1.0

// Install LeanScreen as a Cake Tool
#tool nuget:?package=LeanScreen&version=1.1.0                

LeanScreen

Coverage Status

Codacy Badge

Mutation testing badge

Overview

Provides a set of tools for working with multimedia. Some key features:

  • Extract video data and stills, directly from stream with managed .NET code!
  • Compiling a collection of stills into a single file
  • Some basic media organisation capability

The Extensions package provides default implementation for video and image handling (ffmpeg and sixlabors respectively).. However the abstractions package is designed so that you can roll your own if you so choose.

The extensions are exposed to the command line in the form of a Cli tool named leanctl. (NB: This tool is currently not published anywhere, and needs to be built from source - see the dotnet publish ... commands below for reference).

Binaries

The calling assembly needs to have ffmpeg binaries available. The x64 versions for the appropriate ffmpeg version are provided for windows in the Rendering.Ffmpeg project.

In the case of linux, ffmpeg (v7.x) must be installed separately. For example, on Ubuntu 24.04, this can be achieved via:

sudo add-apt-repository ppa:ubuntuhandbook1/ffmpeg7

In the case of windows, the dlls were obtained from here: https://www.gyan.dev/ffmpeg/builds/

In either case, the assembly looks for ffmpeg binaries at runtime. By default, it will be in "ffmpeg" folder, relative to your invocation path. To provide control, you can set the environment variable, FFMPEG_BINARIES_PATH to an absolute path to override this. In Ubuntu 24.04, these could be seen in /usr/lib/x86_64-linux-gnu after ffmpeg was installed.

Further Notes

Handy Commandies

# Restore tools
dotnet tool restore

# General clean up
rd -r **/bin/; rd -r **/obj/;

# Run unit tests
rd -r ../**/TestResults/; dotnet test -c Release -s .runsettings; dotnet reportgenerator -targetdir:coveragereport -reports:**/coverage.cobertura.xml -reporttypes:"html;jsonsummary"; start coveragereport/index.html;

# Run mutation tests
rd -r ../**/StrykerOutput/; dotnet stryker -o;

# Pack and publish a pre-release to a local feed
$suffix="alpha001"; dotnet pack -c Release -o nu --version-suffix $suffix; dotnet nuget push "nu\*.*$suffix.nupkg" --source localdev; rd -r ../**/nu/;

# Publish examples
dotnet publish LeanScreen.CliTool -p:PublishSingleFile=true -p:DebugType=Embedded -r win-x64 -c Release --sc false
dotnet publish LeanScreen.CliTool -p:PublishSingleFile=true -p:DebugType=Embedded -r linux-x64 -c Release --self-contained

# Allow execute (Linux)
sudo chmod +x leanctl
Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  net5.0-windows was computed.  net6.0 was computed.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed. 
.NET Core netcoreapp2.0 was computed.  netcoreapp2.1 was computed.  netcoreapp2.2 was computed.  netcoreapp3.0 was computed.  netcoreapp3.1 was computed. 
.NET Standard netstandard2.0 is compatible.  netstandard2.1 was computed. 
.NET Framework net461 was computed.  net462 was computed.  net463 was computed.  net47 was computed.  net471 was computed.  net472 was computed.  net48 was computed.  net481 was computed. 
MonoAndroid monoandroid was computed. 
MonoMac monomac was computed. 
MonoTouch monotouch was computed. 
Tizen tizen40 was computed.  tizen60 was computed. 
Xamarin.iOS xamarinios was computed. 
Xamarin.Mac xamarinmac was computed. 
Xamarin.TVOS xamarintvos was computed. 
Xamarin.WatchOS xamarinwatchos was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (3)

Showing the top 3 NuGet packages that depend on LeanScreen:

Package Downloads
LeanScreen.Rendering.Ffmpeg

Av multimedia ffmpeg video rendering.

LeanScreen.MediaRepo.FileSystem

Av multimedia filesystem repository.

LeanScreen.Extensions

Av multimedia. This library also contains default implementation for video frame and image rendering.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
1.1.0 143 10/25/2024
1.0.4 205 7/18/2024
1.0.3 221 7/6/2024
1.0.2 217 6/21/2024
1.0.1 210 6/20/2024
1.0.0 212 6/7/2024

Upgraded to ffmpeg7