====== ffmpeg - Only keep English ======
ffmpeg -i "input.mkv" -c copy -map 0:v -map 0:a:m:language:eng? -map 0:s:m:language:eng? -map 0:d? -map 0:t? "output.mkv"
ffmpeg -i "input.mkv" -map 0:v -map 0:a:m:language:eng? -c copy -c:s copy -map 0:s:m:language:eng? -map 0:d? -map 0:t? "output.mkv"
or
ffmpeg -i "input.mkv" -map 0:0 -map 0:a:m:language:eng? -c copy -c:s copy -map 0:s:m:language:eng? -map 0:d? -map 0:t? "output.mkv"
ffmpeg -i "input.mkv" -c copy -map 0:v -map 0:a:m:language:eng? -c:s copy -map 0:s:m:language:eng? -map 0:d? -map 0:t? "output.mkv"
**NOTE:**
* **-c:s copy**: Using stream copy to remux (no encoding).
* **-map 0:v**: Keep the existing Video.
* **-map 0:0**: Keep the existing map 0:0. (Assume this is the Video).
* **-map 0:a:m:language:eng?**: Keep only English Audio. (Optional only if Audio exists).
* **-map 0:s:m:language:eng?**: Keep only English Subtitles. (Optional only if Subtitles exist).
* **-map 0:d?**: Keep Data. (Optional only if Data exists).
* **-map 0:t?**: Keep Attachments. (Optional only if Attachments exists).
----
# QUICK.
ffmpeg -i "input.mkv" -c copy -map 0:v -map 0:a:m:language:eng? -c:s copy -map 0:s:m:language:eng? -map 0:d? -map 0:t? "out1.mkv"
# SLOW, BUT SLIGHTLY SMALLER.
ffmpeg -i "input.mkv" -c:v copy -map 0:v -map 0:a:m:language:eng? -c:s copy -map 0:s:m:language:eng? -map 0:d? -map 0:t? "output.mkv"
# VERY SLOW, BUT SMALLER.
ffmpeg -i "input.mkv" -map 0:v -c:a copy -map 0:a:m:language:eng? -c:s copy -map 0:s:m:language:eng? -map 0:d? -map 0:t? "output.mkv"
# EXTREMELY SLOW, BUT SMALLEST.
ffmpeg -i "input.mkv" -map 0:v -map 0:a:m:language:eng? -c:s copy -map 0:s:m:language:eng? -map 0:d? -map 0:t? "output.mkv"
ffmpeg -i "input.mkv" -map 0:v -map 0:a:m:language:eng? -map 0:s:m:language:eng? -map 0:d? -map 0:t? "output.mkv"
----
===== References =====
https://trac.ffmpeg.org/wiki/Map