Skip to content
generated from ne1410s/DemoLibrary

Multimedia operations and bulk processing CLI

License

Notifications You must be signed in to change notification settings

ne1410s/LeanScreen

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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
gci -r -dir ../TestResults | % { rm -r $_ }; dotnet test -c Release -s .runsettings; dotnet reportgenerator -targetdir:coveragereport -reports:**/coverage.cobertura.xml -reporttypes:"html;jsonsummary"; start coveragereport/index.html;

# Run mutation tests
gci -r -dir ../StrykerOutput | % { rm -r $_ }; 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

About

Multimedia operations and bulk processing CLI

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages