AV1 encoding tool with fast VMAF sampling. Uses svt-av1, ffmpeg & vmaf

Related tags

Video ab-av1
Overview

ab-av1

AV1 encoding tool with fast VMAF sampling. Uses svt-av1, ffmpeg & vmaf.

Command: auto-encode

Automatically determine the best crf to deliver the min-vmaf and use it to encode a video.

Two phases:

  • crf-search to determine the best --crf value
  • ffmpeg & SvtAv1EncApp to encode using the settings
ab-av1 auto-encode [OPTIONS] -i  --preset 
   

   

Command: crf-search

Interpolated binary search using sample-encode to find the best crf value delivering min-vmaf & max-encoded-percent.

Outputs:

  • Best crf value
  • Mean sample VMAF score
  • Predicted full encode size
  • Predicted full encode time
ab-av1 crf-search [OPTIONS] -i  --preset 
   

   

Command: sample-encode

Encode short video samples of an input using provided crf & preset. This is much quicker than full encode/vmaf run.

Outputs:

  • Mean sample VMAF score
  • Predicted full encode size
  • Predicted full encode time
ab-av1 sample-encode [OPTIONS] -i  --crf 
   
     --preset 
    

    
   

Command: encode

Simple invocation of ffmpeg & SvtAv1EncApp to encode a video.

ab-av1 encode [OPTIONS] -i  --crf 
   
     --preset 
    

    
   

Command: vmaf

Simple full calculation of VMAF score distorted file vs reference file.

ab-av1 vmaf --reference 
   
     --distorted 
    

    
   

Install

Arch Linux

Available in the AUR.

Using cargo

Latest release

cargo install ab-av1

Latest code direct from git

cargo install --git https://github.com/alexheretic/ab-av1

Requirements

  • svt-av1
  • ffmpeg
  • vmaf
  • opus

ffmpeg, SvtAv1EncApp commands should be in $PATH.

Minimum supported rust compiler

Maintained with latest stable rust.

Comments
  • VMAF values incorrect by 20 to 30

    VMAF values incorrect by 20 to 30

    I am consistently getting VMAF results that are 20 to 30 less than if I ran VMAF or libvmaf directly on the same files. This is true for all of the commands, i.e., trying to use crf-search or auto-encode won't work correctly because it can't find the right vmaf (unless i set minimum <70).

    Example results: ab-av1:

    Z:\Files\Rips\Muxing>ab-av1 vmaf --reference "source_snip.mkv" --distorted "RF22_snip.mkv" --vmaf model="path=vmaf_v0.6.1.json"
    (vmaf 29 fps, eta 0s)67.469444
    

    libvmaf:

    Z:\Files\Rips\Muxing>ffmpeg -i "RF22_snip.mkv" -i "source_snip.mkv" -lavfi libvmaf="n_threads=6" -f null -
    [Parsed_libvmaf_0 @ 0000020d93a4bf80] VMAF score: 93.391178
    

    Not sure if this might be a versioning thing or if I can resolve?

    Running on windows vm at the moment with:

    • ab-av1 0.4.3
    • ffmpeg 2022-10-30-git-ed5a438f05-full_build
    • vmaf 2.3.1
    • svt-av1 v1.3.0
    • opus 0.2-3-gf5f571b (libopus 1.3)
    opened by seanecoffey 25
  • sample-encode: measure sample video stream size instead of file size

    sample-encode: measure sample video stream size instead of file size

    When calculating the predicted encode size percent we compare the sample file size sum to their encoded counterparts. This works fairly well since the samples & encoded samples contain only a video stream.

    However, there may also be some container overhead for each sample that introduces inaccuracy. So we could instead measure the lossless sample video stream size sum and compare that to the encoded video streams specifically avoiding any container overhead on each side. Also see discussion in #79.

    Measuring video streams a little harder than measuring file sizes and may be a bit less reliable too as we have to trust what ffmpeg tells us. It also seems to be in "kB" precision only, I'm not sure if we can configure that or not.

    My current feeling is that this won't significantly improve the sample-encode video stream size predictions over the noise of using sample sizes to deduce the total predicted stream size. So to begin with we should gather some test cases where calculating the samples vs encoded samples using video stream instead of full sample size would be more accurate over many different sample counts.

    opened by alexheretic 16
  • [Question/Suggestion] How is the estimated encode size calculated?

    [Question/Suggestion] How is the estimated encode size calculated?

    I'm quite confused about the encoded size estimations I'm getting for my videos with crf-search. I understand they are just predictions based on a limited number of samples, but they don't get near the real encoded size of my files, sometimes not by much, but many times by a huge margin, so I've been trying to understand how it works and where the inaccuracy comes from. At first, I thought it could be caused by differences in encoding parameters or something like this, but now I've been noticing it depends more on how the source file is; how many tracks it has and what percentage of the whole file size corresponds to the video track or to other tracks.

    Correct me if I'm wrong, but I'm assuming ab-av1 is comparing the encoding efficiency/percentage between the lossless samples and the encoded samples, and then applying that resulting percentage to the input source file size to get the final predicted encoding size.

    For example, when running crf-search, this is what ab-av1 is predicting for one of my full bluray files:

    crf 21 VMAF 95.24 predicted full encode size 5.26 GiB (18%) taking 2 hours

    The source file is 29,2GB, so the 18% of that results in 5,256MB, as predicted.

    The problem I'm finding is that about 10GB out of those 29,2GB are multiple tracks of audio, and the video track is only 19,1GB, so the prediction would be inaccurate, as the audio tracks are not going to be encoded the same way as the video track, which is what actually ab-av1 is calculating. Besides many of those tracks would probably be discarded, and others could be re-encoded, sometimes the same language comes in 2 different audio codecs and quality in 2 tracks, and so on; there is no way to know all of that for every source file and every use case.

    My point is that the total size of the final file completely depends on what the user decides to do with the other tracks, but ab-av1 cannot predict that, so I think it should focus on providing the information of what it can actually predict, which is what is actually being calculated with the video encoders and presets; the estimated size of the encoded video track only. Otherwise it gets confusing, it is not clear what that estimation represents, not the whole file size nor only the video track size, at least as it is right now if I'm not mistaken.

    So, continuing with the example, I believe the more realistic accurate prediction of the encode size would be to calculate the 18% of the video track only (19,1GB), which results in 3,44GB. Then if I decided to keep all audio tracks untouched, the final file would weight around 13,5GB, far from the currently predicted 5,26GB, or if I decided to select only one language, depending on the quality of that track, it would result in a file around 4GB, also not close to the current prediction. Users can take that into account and consider ab-av1's prediction as a baseline only for the video track, which is quite helpful already.

    Would it be possible for ab-av1 to get the size of only the video track from the whole file and then make the encoding prediction based on that? The result would be more accurate, and it would make much more sense in my opinion.

    Thank you.

    opened by iPaulis 13
  • Display Resolution is Not Preserved

    Display Resolution is Not Preserved

    Love the tool but it does not preserve aspect ratio metadata so I currently need to modify the files afterwards.

    Input video: 960x480,SAR 119:134, DAR 119:67 Output video: 960x480, SAR 1:1 DAR 2:1

    opened by georgemcarlson 12
  • Add AVIF support

    Add AVIF support

    This PR addresses #56.

    Instead of erroring on input media with an unknown duration, we set it to zero and then treat all zero-length media as images. There are currently some unwraps that I'm not too happy about, but it "works on my machine™".

    opened by Pyroglyph 11
  • [Idea] VMAF ranges crf-search

    [Idea] VMAF ranges crf-search

    I would like to share an idea for the crf-search part that I have encountered in prolonged use:

    Sometimes the specified VMAF value is not found by the search, which then ends with "Error: Failed to find a suitable crf" but the user may be fine with a nearby value. For example.

    • I specify the VMAF value 98
    • but the best result found is 97 -I am fine with that but that 97 found has an excessive estimated file size and the search does not continue to find a different crf with VMAF 97 because it was started for value 98

    Basically a VMAF range would have to be accepted to perform the search (in this case it would be 98-97).

    For quite some time I have been doing this simply with a bash script and crf-search but there is a lot of overhead as it has to repeat the search several times for different VMAF values even for crfs that have already been analyzed previously.

    opened by Werve 11
  • Error: ffmpeg vmaf exit code Some(1)

    Error: ffmpeg vmaf exit code Some(1)

    Hi @alexheretic, many thanks for this contribution!

    Unfortunately I haven't been able to debug a blocker and a major annoyance with the utility.(on Ubuntu 21.10):

    1. Regardless of the command used, the process fails with "Error: ffmpeg vmaf exit code Some(1)". I tried using ffmpeg-build-script to install ffmpeg and its dependencies, libvmaf should be 2.2.1 (I see you mentioned 1.5.3 as the min requirement?) and I've also compiled the latest vmaf cli and include it in the path ($ ./vmaf --version -> 9e1fb0bb). I don't see anything obvious in VmafOut.
    2. After this failure, I can no longer see my terminal's input buffer, and I have to open a new terminal/tab to return to normal (reset doesn't work). This affects all my terminals and terminals emulators (guake, alacritty, terminator, mate's).

    Any thoughts on how we can debug this?

    opened by astyanax 9
  • Encoding images with SvtAv1EncApp sometimes produces unexpected results

    Encoding images with SvtAv1EncApp sometimes produces unexpected results

    The title of this issue is pretty vague, but I've had numerous different problems with using the default SvtAv1EncApp mode.

    I first found that there was a problem with an image I was trying to encode when I could view it in Windows Photo Viewer but Chromium could not load it for some reason. Other encoders such as libaom-av1 and libsvtav1 did not have this issue and the image was able to be loaded and displayed properly in a browser.

    I did test another image to see if I could give a reproducible sample but something else went wrong instead. This time the image was able to be loaded in my browser but it flickered as if it was showing the image and then a white frame over and over again. The other encoders correctly did not show this flickering.

    Here are the source and output images for both issue types. All were encoded at CRF 10. No other options were changed (other than the encoder). I would have embedded them into the issue, but GitHub has yet to add support for AVIF uploads.

    images.zip

    For clarity: Source image = .png SvtAv1EncApp = .av1.avif libsvtav1 = .svtav1.avif librav1e = .rav1e.avif

    opened by Pyroglyph 7
  • `crf-search` panics almost immediately on any file

    `crf-search` panics almost immediately on any file

    Hello, I've installed ab-av1 using cargo install --git https://github.com/alexheretic/ab-av1 to make sure I have the latest version. When I try running the command ~/.cargo/bin/ab-av1 crf-search -i test.mp4 --preset 6 the task panics after 10-40 seconds on any video file. Here is the error with the stack trace:

    thread 'main' panicked at 'can not convert float seconds to Duration: value is either too big or NaN', /builddir/build/BUILD/rustc-1.65.0-src/library/core/src/time.rs:736:23
    stack backtrace:
       0:     0x55c792d5c889 - <unknown>
       1:     0x55c792d08dae - <unknown>
       2:     0x55c792d335c4 - <unknown>
       3:     0x55c792d5d813 - <unknown>
       4:     0x55c792d5e74d - <unknown>
       5:     0x55c792d5e312 - <unknown>
       6:     0x55c792d5e27c - <unknown>
       7:     0x55c792d5e251 - <unknown>
       8:     0x55c792c66e42 - <unknown>
       9:     0x55c792c80936 - <unknown>
      10:     0x55c792c8f2c1 - <unknown>
      11:     0x55c792cab021 - <unknown>
      12:     0x55c792c873ef - <unknown>
      13:     0x55c792cb6786 - <unknown>
      14:     0x55c792ca6560 - <unknown>
      15:     0x55c792cb5aa7 - <unknown>
      16:     0x7f98b7cc7510 - __libc_start_call_main
      17:     0x7f98b7cc75c9 - __libc_start_main_alias_2
      18:     0x55c792c6a195 - <unknown>
      19:                0x0 - <unknown>
    
    

    I'm running Fedora 37, if that's important.

    opened by zeko9381 7
  • Use Infer to detect image/video

    Use Infer to detect image/video

    Maintaining our own list of known filetypes seems pointless when there are other projects like Infer that do it for us.

    Marked as draft until this is answered: If Infer fails to load the file then ProbeErrors are created despite not being thrown by FFProbe. This is because the check happens in the probe function (for convenience). Is this okay or should a more specific error type be created for this? In any case, the whole thing would have failed anyway if the file is unable to be read.

    opened by Pyroglyph 6
  • [Question] Container Changing

    [Question] Container Changing

    I have some m2ts files I'd like to re-encode into mkv containers. Running this tool seems to be outputting an m2ts file as well, does using the -o option to specify an output file name somehow trigger a container change to the extension specified?

    opened by jwynn6 6
  • Questions about feature

    Questions about feature

    Hey,

    I was wondering how the auto encode works, does it specifically try to hit a vmaf of 95 by default? Is there any option to hit the highest achievable, i.e. if a higher vmaf than 95 can he hit, then favour it?

    Also, would it be possible to implement a batch/multi file processing on a folder basis, using walkdir with metadata recognition of video files? I'll look into the code to see if it doesn't add to much complexity.

    I thought these two features would be a great addition, at least for my use cases.

    What are your thoughts?

    opened by BankaiNoJutsu 0
  • Rust implementation of the SSIMULACRA2 metric

    Rust implementation of the SSIMULACRA2 metric

    Would it be possible to one day have ssim2 score as an optional metric for greater psychovisual accuracy over VMAF? Just one example is that VMAF performs poorly in areas of low luma, claiming everything is fine when the video is far from it. Rust implementation: https://github.com/rust-av/ssimulacra2

    opened by LastBreeze 0
  • Can't use qsv_av1_10bit 'Ffmpeg encode_sample exit code Some(1)'

    Can't use qsv_av1_10bit 'Ffmpeg encode_sample exit code Some(1)'

    I have tried running the command "ab-av1 crf-search -e qsv_av1_10bit" (plus -i info) and despite trying multiple ffmpeg builds, including compiling my own including intel-qsv, I get the error 'Ffmpeg encode_sample exit code Some(1)'.

    Any fix for this? Trying to determine settings for Av1 QSV 10bit encodes. Thanks!

    Specs: 5950x 64GB Ram Intel Arc A770

    opened by ssjbardock 1
  • Re-use best sample when encoding images

    Re-use best sample when encoding images

    Fixes #62

    This PR saves users from wasting time re-encoding the same image when an image with the best CRF has already been encoded.

    I'm not entirely sure how the sample encode cache works, but I assume it doesn't store the samples themselves, so if the best CRF is read from the cache instead of being searched for then we still have to encode it again.

    I'm leaving this as a draft for now because I'm not confident that output_path_with_best_crf (at auto_encode.rs:106) is done correctly. It works, but if the sample naming convention ever changes then this will break.

    opened by Pyroglyph 0
  • Prevent temporary file conflict

    Prevent temporary file conflict

    Though it's less usual to run concurrently against the same file I think this should just work anyway. You may, for example, want to try multiple different encoder args for an encoder than uses a ~1 thread on a multi-thread machine.

    Currently the temporary dir is shared. Since you can specify --temp-dir conflicts can already by worked around. But it would probably be better if conflicts didn't happen out of the box.

    A simple solution is to use a random named nested temp-dir inside --temp-dir for each run.

    enhancement 
    opened by alexheretic 0
Releases(v0.6.1)
  • v0.6.1(Dec 16, 2022)

  • v0.6.0(Dec 9, 2022)

    • Support decimal crf values in sample-encode, encode subcommands (note svt-av1 only supports integer crf).
    • Add crf-search, auto-encode arg --crf-increment. Previously this would always be 1. Defaults to 1. -e libx264, libx265 & libvpx-vp9 default to 0.1.
    • Add crf-search, auto-encode arg --thorough which more exhaustively searches to find a crf value close to the specified min-vmaf.
    • Cache sample-encode results in $CACHE_DIR/ab-av1 directory. This allows repeated same crf sample encoding to be avoided when running sample-encode, crf-search & auto-encode. E.g. repeating a crf-search with a different min-vmaf.
      Caching is enabled by default. Can be disabled with --cache false or setting env var AB_AV1_CACHE=false.
    • Use mkv containers for all lossless samples. Previously mp4 samples were used for mp4 inputs, however in all test cases mkv 20s samples were better quality. This change improves accuracy for all mp4 input files.
    • Default --max-crf to 46 for libx264 & libx265 encoders.
    • Encode webm outputs with the "cues" seek index at the front to optimise stream usage (as done with mkv).
    Source code(tar.gz)
    Source code(zip)
    ab-av1.exe(2.30 MB)
  • v0.5.2(Dec 4, 2022)

  • v0.5.1(Dec 2, 2022)

    • Change encoded size prediction logic to estimate video stream size (or image size) only. This should be much more consistent than the previous method. Change crf-search, sample-encode result text to clarify this.
    • Improve video size prediction logic to account for samples that do not turn out as 20s.
    • Fix full-pass sample encode progress bar.
    • Use label "Full pass" instead of "Sample 1/1" when doing a full pass sample-encode.
    • Add VMAF auto model, n_threads & scaling documentation.
    Source code(tar.gz)
    Source code(zip)
    ab-av1.exe(1.70 MB)
  • v0.5.0(Nov 28, 2022)

    • Default to .mkv output format for all inputs (except .mp4 which will continue to output .mp4 by default). This also applies to ffmpeg encoder sample output format. The previous behavior used the input extension which may not have supported av1 (e.g. .m2ts).
    • For auto-encode use the output extension also for ffmpeg encoder sample outputs if applicable.
    • When creating lossless samples for encode analysis use .mkv (or .mp4) extension for better ffmpeg compatibility.
    • Encode mkv outputs with the "cues" seek index at the front to optimise stream usage.
    • Optimise pixel format choice for VMAF comparisons. Can significantly improve VMAF fps. E.g. if both videos are yuv420p use that instead of yuv444p10le.
    • When sampling use full input video when sample time would be >= 85% of the total (down from 100%).
    • Eliminate repeated redundant ffprobe calls.
    • Windows: Support VMAF pixel format conversion for both distorted and reference. Gives more consistently accurate results and brings Windows in line with Linux functionality.
    • Windows: ab-av1.exe binaries will now be automatically built and attached to releases.
    Source code(tar.gz)
    Source code(zip)
    ab-av1.exe(1.70 MB)
  • v0.4.4(Nov 3, 2022)

    • Add crf-search, auto-encode, encode & vmaf command support for encoding images into avif. This works in the same way as videos, example:
      ab-av1 auto-encode -i pic.jpg
      

      The default encoder svt-av1 has some dimension limitations which may cause this to fail. -e libaom-av1 also works and supports more dimensions.

    • Convert to yuv444p10le pixel format when calculating VMAF for accuracy and compatibility.
    • Update to clap v4 which changes help/about output & reduces binary size.
    • Print crf-search attempts even when stderr is not a tty.
    Source code(tar.gz)
    Source code(zip)
  • v0.4.3(Sep 30, 2022)

  • v0.4.2(Aug 13, 2022)

  • v0.4.1(Jul 28, 2022)

    • For -e libvpx-vp9 map --preset number to ffmpeg -cpu-used (0-5).
    • When overriding with a ffmpeg encoder avoid setting b:a, movflags or ac if explicitly set via --enc.
    • Add error output when using --enc-input with the default svt-av1 encoder.
    • Add errors for --enc/--enc-input args that are already provided by existing args or inferred.
    Source code(tar.gz)
    Source code(zip)
  • v0.4.0(Jul 22, 2022)

    • Add --encoder/-e encoder override. Any encoder ffmpeg supports and that may be controlled using -crf may be used.
    • Add --enc $FFMPEG_ARG for providing arbitrary output options to the ffmpeg encoder invocation. These only work when overriding the encoder with -e.
      E.g. Set x265 params: -e libx265 --enc x265-params=lossless=1.
    • Add --enc-input $FFMPEG_ARG for providing ffmpeg input file options, similar to --enc.
    • --preset now supports also word presets like slow, veryfast for ffmpeg encoders like libx264.
    • --preset is no longer required. Default svt-av1 --preset is now 8.
    • Support setting keyint for -e encoders in a similar way as is done for av1.
    • Add default vp9 & libaom-av1 -b:v 0 setting so constant quality crf based encoding works consistently.
    • For -e libaom-av1 map --preset number to ffmpeg -cpu-used (0-8).
    • For *_vaapi encoders map --crf to ffmpeg -qp as crf is not supported.
    • Shell escape file name in "Encoding ..." output.
    Source code(tar.gz)
    Source code(zip)
  • v0.3.4(Jun 24, 2022)

  • v0.3.3(Jun 17, 2022)

  • v0.3.2(Jun 10, 2022)

  • v0.3.1(Mar 17, 2022)

    • Fix some cases where ffmpeg progress & VMAF score output parsing failed.
    • Fix some edge cases where crf-search would succeed exceeding the specified --max-encoded-percent.
    Source code(tar.gz)
    Source code(zip)
  • v0.3.0(Mar 5, 2022)

    • Select vmaf model model=version=vmaf_4k_v0.6.1 for videos larger than 2560x1440 if no other model is specified. This will raise VMAF scores for 4k videos that previously were getting harsher treatment from the 1k model.
    • Add --vmaf-scale option which sets the video resolution scale to use in VMAF analysis. auto (default) auto scales based on model & resolution, none no scaling or custom WxH format, e.g. 1920x1080.
      • auto upscale 1728x972 & smaller to 1080p, preserving aspect, when using the default 1k VMAF model. This will reduce VMAF scores that previously were getting more generous treatment from the 1k model.
      • auto upscale 3456x1944 & smaller to 4k, preserving aspect, when using the 4k VMAF model.
    • Add --downmix-to-stereo option, if enabled & the input streams use > 3 channels (dts 5.1 etc), downmix input audio streams to stereo.
    • After encoding print per-stream sizes in addition to the file size & percent.
    • Add predicted video stream percent reduction to auto-encode search progress bar after a successful search.
    • Support non-video/audio/subtitle streams from input to output, e.g. attachments.
    • When defaulting the output file don't use input extension if it is avi, y4m, ivf, use mp4 instead.
    • Fix clearing crf-search progress bar output on error.
    • Strip debug symbols in release builds by default which reduces binary size (requires rustc 1.59).
    Source code(tar.gz)
    Source code(zip)
  • v0.2.0(Feb 17, 2022)

    • Add svt-av1 option --keyint FRAME-OR-DURATION argument supporting frame integer or duration string. E.g. --keyint=300 or --keyint=10s. Default keyint to 10s when input duration is over 3m.
    • Add svt-av1 option --scd true|false argument enabling scene change detection. Default scd on when using default keyint & input duration is over 3m.
    • Add --svt ARG for additional args, e.g. --svt mbr=2000 --svt film-grain=30.
    • Add --vfilter ARG argument to apply a ffmpeg video filter (crop, scale etc) to the input before av1 encoding. E.g. --vfilter "scale=1280:-1,fps=24".
    • Add --pix-format ARG argument supporting yuv420p10le (default) & yuv420p.
    • Add vmaf configuration --vmaf ARG, e.g. --vmaf n_threads=8 --vmaf n_subsample=4.
    • Rename vmaf command argument --reference (was --original).
    • Add vmaf command --reference-vfilter argument, similar to --vfilter.
    • Default vmaf n_threads to the number of logical CPUs.
    • Add --temp-dir argument to specify storage of sample data. May also be set with env var AB_AV1_TEMP_DIR.
    • Add --sample-every DURATION argument, default "12m".
    • Remove 3 sample default, this is now calculated using --sample-every 12m default.
    • Create samples concurrently while encoding to reduce io lags waiting to encode.
    • crf-search re-use samples for crf analysis.
    • Linux: vmaf use fifo to convert both reference & distorted to yuv which fixes vmaf accuracy in some cases.
    • Support multiple audio & subtitle streams.
    • Use 128k bitrate as a default for libopus audio.
    • Remove --aq.
    • Fail fast if ffmpeg cut samples are empty (< 1K).
    • Handle input durations lower than the sample duration by using the whole input as a single sample.
    Source code(tar.gz)
    Source code(zip)
  • v0.1.1(Feb 5, 2022)

  • v0.1.0(Feb 3, 2022)

Owner
Alex Butler
Alex Butler
The fastest and safest AV1 encoder.

rav1e The fastest and safest AV1 encoder. Table of Content Overview Features Documentation Releases Building Dependency: NASM Release binary Unstable

Xiph.Org Foundation 3k Jan 3, 2023
ffmpeg libraries precompiled for WebAsembly/WASI, as a Rust crate.

FFMPEG crate for WebAssembly/WASI This crate bundles FFMPEG's libraries, precompiled for WebAssembly. No native installation required. Compatible with

Frank Denis 45 Dec 14, 2022
rsmpeg is a thin&safe layer above the FFmpeg's Rust bindings

A Rust crate that exposes FFmpeg's power as much as possible.

Lark Technologies Pte. Ltd. 384 Jan 2, 2023
📼 Wrapper around ffmpeg which simplifies merging of multiple videos

Vidmerger A wrapper around ffmpeg which simplifies merging of multiple videos. ?? What is this exactly? Vidmerger is a command-line-tool which uses ff

Thomas Gotwig 51 Dec 16, 2022
A ffmpeg/rust based HLS stream generator

hls-streamer Stream your heart's content with HLS. Movtivation I've got a CCTV camera from AliExpress, I know I can use ffmpeg hls demuxer to split up

null 16 Jan 9, 2023
Wrap a standalone FFmpeg binary in an intuitive Iterator interface. 🏍

FFmpeg Sidecar ?? Wrap a standalone FFmpeg binary in an intuitive Iterator interface. Motivation The core goal of this project is to provide a method

Nathan Babcock 26 Feb 22, 2023
A CLI tool that converts videos to ASCII and displays them to the terminal on the fly

A CLI tool that converts videos to ASCII and displays them to the terminal on the fly

Luke T 19 Nov 15, 2022
Media Cleaner is a simple CLI tool to clean up your media library based on your Overseerr requests and Tautulli history, written in Rust.

Media Cleaner Media Cleaner is a simple CLI tool to clean up your media library based on your Overseerr requests and Tautulli history, written in Rust

Felix Bjerhem Aronsson 21 Mar 22, 2023
A fork of the abandoned ffmpeg-next crate which is a fork of the abandoned ffmpeg crate

This is a fork of the abandoned ffmpeg-next crate which is a fork of the abandoned ffmpeg crate. Currently supported FFmpeg versions: 4.x, 5.x. Build

Josh Holmer 4 Jan 26, 2023
Databento Binary Encoding (DBZ) - Fast message encoding and storage format for market data

dbz A library (dbz-lib) and CLI tool (dbz-cli) for working with Databento Binary Encoding (DBZ) files. Python bindings for dbz-lib are provided in the

Databento, Inc. 15 Nov 4, 2022
Py-spy - Sampling profiler for Python programs

py-spy: Sampling profiler for Python programs py-spy is a sampling profiler for Python programs. It lets you visualize what your Python program is spe

Ben Frederickson 9.5k Jan 8, 2023
Sampling profiler and tracer for Ruby (CRuby) which runs in BPF

rbperf rbperf is a low-overhead sampling profiler and tracer for Ruby (CRuby) which runs in BPF Build To build rbperf you would need a Linux machine w

Javier Honduvilla Coto 75 Dec 19, 2022
A tool to deserialize data from an input encoding, transform it and serialize it back into an output encoding.

dts A simple tool to deserialize data from an input encoding, transform it and serialize it back into an output encoding. Requires rust >= 1.56.0. Ins

null 11 Dec 14, 2022
The fastest and safest AV1 encoder.

rav1e The fastest and safest AV1 encoder. Table of Content Overview Features Documentation Releases Building Dependency: NASM Release binary Unstable

Xiph.Org Foundation 3k Jan 3, 2023
A AV1 video decoder implemented in pure rust.

Rust AV1 Decoder A AV1 decoder implemented in pure rust. This is an experimental project currently in progress. Unlike existing projects, this is an A

Mr.Panda 5 Dec 8, 2023
ffmpeg libraries precompiled for WebAsembly/WASI, as a Rust crate.

FFMPEG crate for WebAssembly/WASI This crate bundles FFMPEG's libraries, precompiled for WebAssembly. No native installation required. Compatible with

Frank Denis 45 Dec 14, 2022
rsmpeg is a thin&safe layer above the FFmpeg's Rust bindings

A Rust crate that exposes FFmpeg's power as much as possible.

Lark Technologies Pte. Ltd. 384 Jan 2, 2023
📼 Wrapper around ffmpeg which simplifies merging of multiple videos

Vidmerger A wrapper around ffmpeg which simplifies merging of multiple videos. ?? What is this exactly? Vidmerger is a command-line-tool which uses ff

Thomas Gotwig 51 Dec 16, 2022
A ffmpeg/rust based HLS stream generator

hls-streamer Stream your heart's content with HLS. Movtivation I've got a CCTV camera from AliExpress, I know I can use ffmpeg hls demuxer to split up

null 16 Jan 9, 2023
Wrap a standalone FFmpeg binary in an intuitive Iterator interface. 🏍

FFmpeg Sidecar ?? Wrap a standalone FFmpeg binary in an intuitive Iterator interface. Motivation The core goal of this project is to provide a method

Nathan Babcock 26 Feb 22, 2023