⚡DONTAZ CMD WIKI

ССЫЛКИ

• SVT-AV1 Documentation
└• README
└• Parameters (-svtav1-params)

○○○○○○○○○○○○
○  ССЫЛКИ  ○
○○○○○○○○○○○○

FFmpeg Audio

FLAC → Opus 160k

Все FLAC в Opus 160k Stereo.

$outputDir = Join-Path -Path $PWD.Path -ChildPath "output"

    if (!(Test-Path -LiteralPath $outputDir)) { 
        New-Item -ItemType Directory -Path $outputDir | Out-Null 
    }

    Get-ChildItem -LiteralPath $PWD.Path -Filter *.flac -File | ForEach-Object {
        $basename = $_.BaseName
        $outputPath = Join-Path -Path $outputDir -ChildPath "$($basename).opus"
        
        if (Test-Path -LiteralPath $outputPath) {
            Write-Host "Пропуск: $($_.Name) уже обработан." -ForegroundColor Cyan
        } else {
            Write-Host "Обработка: $($_.Name)" -ForegroundColor Yellow
            
            ffmpeg -nostdin -n -i "$($_.FullName)" -hide_banner -c:a libopus -b:a 160k -ac 2 -vbr on -compression_level 10 "$outputPath"
        }
    }

FFmpeg Video

MP4 → MKV (AV1, Opus, Old Cartoons Telecined NTSC, IVTC)

Для старых мультфильмов Telecined NTSC с гибридными вставками. Копирует все аудио-дорожки и субтитры. Аудио в Opus 160k Stereo.
• "fieldmatch=order=auto" — auto можно заменить на tff (Hybrid Telecined NTSC) или bff (NTSC Hard Telecine (BFF - Bottom Field First)), если не определило автоматически.

$outputDir = Join-Path -Path $PWD.Path -ChildPath "output"

if (!(Test-Path -LiteralPath $outputDir)) { 
    New-Item -ItemType Directory -Path $outputDir | Out-Null 
}

Get-ChildItem -LiteralPath $PWD.Path -Filter *.mkv -File | ForEach-Object {
    $basename = $_.BaseName
    $inputPath = $_.FullName
    $outputPath = Join-Path -Path $outputDir -ChildPath "$($basename).mkv"
    
    if (Test-Path -LiteralPath $outputPath) {
        Write-Host "Пропуск: $($_.Name) уже обработан." -ForegroundColor Cyan
    } else {
        Write-Host "Обработка: $($_.Name)" -ForegroundColor Yellow
        
        ffmpeg -nostdin -n -i "$inputPath" -hide_banner -vf "fieldmatch=order=auto:combmatch=full,bwdif=mode=send_frame:deint=interlaced,decimate" -c:v libsvtav1 -preset 4 -crf 28 -svtav1-params "tune=0:enable-qm=1:qm-min=8:qm-max=15:chroma-qm-min=14:film-grain=17:enable-tf=0:adaptive-film-grain=1:film-grain-denoise=0:scd=1:keyint=10s:lookahead=32" -pix_fmt yuv420p10le -c:a libopus -b:a 160k -ac 2 -compression_level 10 -c:s copy -map 0 "$outputPath"
    }
}
MP4 → MKV (AV1 Opus (Very Good Quality, Medium Compression))

Видео и аудио на глаз и слух практически не отличимы от оригинала, неплохое сжатие. Все MP4 в SVT-AV1 и Opus 160k Stereo. Копирует все дорожки субтитров.
• film-grain - подобрать своё значение
• enable-tf - включение очень сильно экономит битрейт, но подпорчивает резкость изображения

$outputDir = Join-Path -Path $PWD.Path -ChildPath "output"

if (!(Test-Path -Path $outputDir)) { 
    New-Item -ItemType Directory -Path $outputDir | Out-Null 
}

Get-ChildItem -Path $PWD.Path -Filter *.mkv -File | ForEach-Object {
    $basename = $_.BaseName
    $outputPath = Join-Path -Path $outputDir -ChildPath "$($basename).mkv"
    
    if (Test-Path -Path $outputPath) {
        Write-Host "Пропуск: $($_.Name) уже обработан." -ForegroundColor Cyan
    } else {
        Write-Host "Обработка: $($_.Name)" -ForegroundColor Yellow
        
        ffmpeg -nostdin -n -i $_.FullName -hide_banner -c:v libsvtav1 -preset 4 -crf 28 -svtav1-params "tune=0:enable-qm=1:qm-min=8:qm-max=15:chroma-qm-min=14:film-grain=13:enable-tf=0:adaptive-film-grain=1:film-grain-denoise=0:scd=1:keyint=10s:lookahead=32" -pix_fmt yuv420p10le -c:a libopus -b:a 160k -ac 2 -compression_level 10 -c:s copy -map 0 "$outputPath"
    }
}
MP4 → MKV AV1 Opus (Medium Quality, High Compression)

Небольшая потеря качества видео и умеренная потеря качества аудио, очень сильное сжатие. Все MP4 в SVT-AV1 и Opus 50k Mono.

$outputDir = Join-Path -Path $PWD.Path -ChildPath "output"

if (!(Test-Path -Path $outputDir)) { 
    New-Item -ItemType Directory -Path $outputDir | Out-Null 
}

Get-ChildItem -Path $PWD.Path -Filter *.mp4 -File | ForEach-Object {
    $basename = $_.BaseName
    $outputPath = Join-Path -Path $outputDir -ChildPath "$($basename).mkv"
    
    if (Test-Path -Path $outputPath) {
        Write-Host "Пропуск: $($_.Name) уже обработан." -ForegroundColor Cyan
    } else {
        Write-Host "Обработка: $($_.Name)" -ForegroundColor Yellow
        
        ffmpeg -nostdin -n -i $_.FullName -hide_banner -c:v libsvtav1 -preset 4 -crf 35 -svtav1-params "tune=0:enable-qm=1:qm-min=0:qm-max=15:film-grain=10:enable-tf=1:adaptive-film-grain=1:film-grain-denoise=1:scd=1:keyint=10s:lookahead=32" -pix_fmt yuv420p10le -c:a libopus -b:a 50k -ac 1 -compression_level 10 -c:s copy -map 0 "$outputPath"
    }
}

Images

JPG → AVIF

Статичные изображения из .jpg в .avif. Требуется:
libavif

if (!(Test-Path "output")) { New-Item -ItemType Directory -Name "output" }

Get-ChildItem *.jpg | ForEach-Object {
    $basename = $_.BaseName
    $outputPath = "output/$($basename).avif"
    
    if (Test-Path $outputPath) {
        Write-Host "Пропуск: $($_.Name) уже обработан." -ForegroundColor Cyan
    } else {
        Write-Host "Обработка: $($_.Name)" -ForegroundColor Yellow
        avifenc --ignore-xmp -d 10 -q 80 --speed 1 --jobs all --yuv 420 $_.FullName "$outputPath"
    }
}
PNG → JXL

Цветные изображения из .png в .jxl.
• -d — качество изображения (ниже значение — лучше качество)
• -e — усилие кодирования (10 — максимальное), лучше качество и меньше размер, но медленнее кодирование.

Требуется:
libjxl

if (!(Test-Path "output")) { New-Item -ItemType Directory -Name "output" }

Get-ChildItem *.png | ForEach-Object {
    $basename = $_.BaseName
    $outputPath = "output/$($basename).jxl"
    
    if (Test-Path $outputPath) {
        Write-Host "Пропуск: $($_.Name) уже обработан." -ForegroundColor Cyan
    } else {
        Write-Host "Обработка: $($_.Name)" -ForegroundColor Yellow
        cjxl $_.FullName "$outputPath" --lossless_jpeg=0 -d 2.5 -e 10
    }
}
JPG (Black & White) → JXL (Black & White)

Чёрно-белые изображения из .jpg в .jxl с фиксом на искажение цвета.
• -d — качество изображения (ниже значение — лучше качество)
• -e — усилие кодирования (10 — максимальное), лучше качество и меньше размер, но медленнее кодирование.

Требуется:
libjxl
ImageMagick

if (!(Test-Path "output")) { New-Item -ItemType Directory -Name "output" | Out-Null }
if (!(Test-Path "temp"))   { New-Item -ItemType Directory -Name "temp"   | Out-Null }

Get-ChildItem *.jpg | ForEach-Object {
    $basename = $_.BaseName
    $outputPath = "output/$($basename).jxl"
    $tempPath   = "temp/$($basename).png"

    if (Test-Path $outputPath) {
        Write-Host "Пропуск: $($_.Name)" -ForegroundColor Cyan
    } else {
        Write-Host "Обработка: $($_.Name)" -ForegroundColor Yellow

        # JPG -> PNG
        magick $_.FullName -colorspace sRGB -type TrueColor -strip $tempPath

        # PNG -> JXL
        cjxl $tempPath $outputPath -d 3 -e 10

        Remove-Item $tempPath
    }
}

Remove-Item "temp" -Recurse -Force