Get-ChildItem -Filter *.mkv | ForEach-Object { $in = $_.FullName $out = "$($_.BaseName)_8bit_clean.mkv" if (Test-Path $out) { return } # index + language pour TOUS les streams qui ont une langue $streamLangs = & ffprobe -v error ` -show_entries stream=index:stream_tags=language ` -of csv=p=0 "$in" $args = @( "-i", $in, "-map", "0", "-map_metadata", "-1", "-map_chapters", "-1", "-metadata", "encoder=", "-c:v", "libx265", "-pix_fmt", "yuv420p", "-x265-params", "profile=main", "-crf", "20", "-preset", "slow", "-c:a", "copy", "-c:s", "copy" ) foreach ($line in $streamLangs) { # format csv: index,language $parts = $line.Split(',') if ($parts.Count -ge 2) { $idx = $parts[0].Trim() $lang = $parts[1].Trim() if ($idx -match '^\d+$' -and $lang -and $lang -ne "N/A") { $args += @("-metadata:s:$idx", "language=$lang") } } } $args += $out & ffmpeg @args }