Video conversion

FlyingFiles changes the resolution, quality, codec and format of video recordings, and it can pull just the audio out of a video. It converts one file or many at once, with the same settings. The work is done by FFmpeg, a free program installed on your system. The originals stay unchanged, and existing files are never overwritten.

Converting step by step

The app treats a file as a video when it has a video extension, e.g. .mp4, .mov, .m4v, .mkv, .webm, .avi, .wmv, .flv, .mpg, .mpeg, .ts, .mts, .m2ts, .vob, .3gp or .ogv.

  1. In the panel, select the video files or put the cursor on a single video.

  2. Right-click and choose Convert Video…, or choose Functions → Convert Video….

  3. If FFmpeg isn't on your system, the FFmpeg Not Found window opens. Install it and click Check Again — the conversion window opens by itself.

  4. The Convert Video window first checks the file and FFmpeg (“Checking the file and FFmpeg…”). Then the Source row shows what's in the recording, e.g. “movie.mov — 1920×1080, 29.97 fps, H.264, AAC audio, 3:12, 12.3 Mb/s”.

  5. Choose a Preset or set the fields one by one (what the fields do). The name of the output file is shown at the bottom of the window.

  6. Click Convert (Enter). Cancel (Esc) closes the window without converting.

The context menu has Convert Video… only when the clicked file — or every selected file — is a video. From the Functions menu, the app takes only the videos from the selection and skips the other files. The command has no keyboard shortcut; you can give it one in the Keyboard Shortcuts window.

The Convert button works only once the file and FFmpeg have been checked. When the chosen settings can't be used, the reason appears in bold above the buttons, e.g. “The video has no audio track.”, and the button is disabled (list of messages).

With several files, the window title gives their number, e.g. “Convert Video — 3 files”, and the Source row describes the first one. All files get the same settings, but the app applies them to each file separately: it doesn't enlarge a recording that's smaller than the chosen resolution, and with Copy unchanged it encodes the audio only in the files where it can't be copied.

Progress and stopping

After you click Convert, the Converting Video window opens. The files are converted one after another. The window shows:

  • the current file, e.g. “File 2 of 3: movie.mov”, and the name of the output file (“Saving to: …”);

  • the position in the recording, the percentage and the speed relative to playback time, e.g. “1:05 of 3:12 (33%), speed 2.4×”;

  • the time since the start and the approximate time remaining;

  • a progress bar for the whole queue, measured by the length of the recordings.

When the length of a recording can't be read, the window shows only how much has been processed so far and the speed — without the percentage or the time remaining — and the bar only signals that work is in progress.

Cancel or Esc stops the conversion. The app stops FFmpeg and deletes the unfinished file. Files finished earlier stay, and the window title says “Video conversion cancelled.”

Extract audio from MP4

Since 1.6.0, right-click an MP4 and choose Extract Audio…. If there is a selection, every selected file must be MP4. This extracts the first audio track and works on local storage only; copy files from a server or archive to disk first.

  1. Choose MP3 or Original codec (no re-encoding).

  2. For MP3, choose 64–320 kb/s (192 by default), Automatic, 32, 44.1 or 48 kHz sample rate, and Stereo (default) or Mono.

  3. Save next to the original or in the other panel's local folder, then click Extract.

Original codec copies audio without quality loss: AAC/ALAC → M4A, MP3 → MP3, AC-3/E-AC-3 → AC3/EAC3, Opus → Opus, Vorbis → Ogg, FLAC → FLAC; other codecs → MKA. Each file gets the appropriate container. FFmpeg must be installed separately, and keeping the original codec also requires working ffprobe; MP3 needs the libmp3lame encoder. A missing audio track prevents starting.

Files are processed one by one with progress and Cancel. Originals stay untouched; a name collision adds a number, such as movie (2).mp3. An incomplete output is removed after cancellation or an error.

Conversion settings

FieldOptions
Preset480p, 720p (HD), 1080p (Full HD), 4K (2160p), Audio Only, Custom
FormatMP4, MOV (QuickTime), MKV (Matroska), WebM; with Audio Only — M4A (AAC audio) and MP3 (audio)
Video codecH.264 (greatest compatibility), HEVC / H.265 (smaller file), VP9, AV1 (smallest file, slow encoding), Unchanged (remux, no quality loss)
ResolutionOriginal, 2160p (4K), 1440p, 1080p, 720p, 480p
QualityConstant quality (a slider, 60% by default) or Bitrate in kb/s
Frame rateOriginal, 24, 25, 30, 50 or 60 fps
AudioCopy unchanged (default), AAC, Opus or MP3 at several bitrates, No audio
SaveNext to the original (default) or In the other panel's folder: …

The Preset sets the resolution. To start with, the app picks 1080p (Full HD); when the shorter side of the recording is under 1080 pixels, 720p (HD); and under 720 pixels, 480p. Changing the resolution by hand switches the list to the matching preset or to Custom. Audio Only replaces the format list with M4A and MP3 and turns off the picture fields.

Resolution is the shorter side of the picture: 1080p means a height of 1080 pixels in a landscape video and a width of 1080 pixels in a portrait one. The aspect ratio is kept, and a smaller recording isn't enlarged — a 720p video stays 720p at the 1080p setting. Original shows the size of the source in parentheses.

Video codec. The list shows only the codecs that suit the chosen format and that the installed FFmpeg can encode. Below the list you can see which FFmpeg encoder the app will use, e.g. “FFmpeg encoder: libx264”.

  • H.264 plays on almost every device and in almost every app.

  • HEVC gives a smaller file at similar quality, but not every device can play it.

  • AV1 gives the smallest files, but it's the slowest to encode. VP9 and AV1 are the only codecs for WebM.

  • Unchanged copies the picture without re-encoding: it takes only a moment, and the quality stays the same. The Resolution, Quality and Frame rate fields are disabled then. Only a picture that suits the new format can be remuxed; MKV accepts any.

Below the codec, the Hardware encoding (faster, usually a larger file) checkbox appears when the computer has a working hardware encoder for that codec: VideoToolbox on a Mac, NVENC with an NVIDIA graphics card, Quick Sync with an Intel processor, AMF with an AMD graphics card. The app checks this by encoding a single test frame, so the checkbox isn't there when the hardware doesn't work, even if FFmpeg knows such an encoder.

Quality has two modes:

  • Constant quality — a slider from 0 to 100% in steps of 5, 60% by default. Higher means a better picture and a larger file. Next to the slider, the app shows what this means for the encoder, e.g. “60% (CRF 23)” for H.264 or “60% (q 66)” for hardware encoding on a Mac. An encoder without a constant quality mode gets a bitrate calculated from the picture size, the frame rate and the slider — next to the slider you then see e.g. “60% (about … kb/s)”.

  • Bitrate — how many kilobits per second the picture gets, from 100 to 200,000 kb/s. The app suggests a value for the chosen codec, resolution and frame rate until you type your own. When the length of the recording is known, “Estimated file size: about …” appears below the field, and with several files, “Estimated size of the first file: about …”.

The Frame rate can only be lowered: a recording that has that many frames per second or fewer keeps its own rate. Original shows the source value in parentheses.

Audio is copied unchanged by default, so no quality is lost. When the audio codec doesn't suit the format, the window tells you how it will be saved, e.g. “PCM audio cannot be stored in this format without re-encoding — it will be saved as AAC 192 kb/s.” As a fallback, the app encodes AAC 192 kb/s, Opus 128 kb/s in WebM, and MP3 192 kb/s in MP3. No audio is available in formats with a picture.

Save decides where the files are created: Next to the original or In the other panel's folder: …. The second option is on the list when the other panel shows a folder on the computer's disk.

Formats and codecs

FormatVideo codecAudio when encoded
MP4H.264, HEVC, AV1AAC 128–320 kb/s
MOV (QuickTime)H.264, HEVCAAC 128–320 kb/s
MKV (Matroska)H.264, HEVC, VP9, AV1AAC 128–320 kb/s or Opus 64–192 kb/s
WebMVP9, AV1Opus 64–192 kb/s
M4A (AAC audio)—AAC 128–320 kb/s
MP3 (audio)—MP3 128–320 kb/s

Every format with a picture also has Unchanged, and every format has Copy unchanged for audio. The window doesn't offer other combinations, e.g. AV1 in MOV or H.264 in WebM.

Output files

The name of the output file is the original name without its extension, a space, the resolution of the result and the extension of the new format:

  • holiday.mov at the 720p setting and in the MP4 format → holiday 720p.mp4;

  • the resolution in the name is the one the file really has: a 480p recording at the 720p setting gives holiday 480p.mp4;

  • the original resolution, Unchanged and audio only add nothing to the name: holiday.mkv, holiday.m4a.

Before you start, the window shows the name at the bottom: “Output file: holiday 720p.mp4”, and with several files “Output files: holiday 720p.mp4 and the rest”.

Existing files are never overwritten — the original included. When a name is taken, the app adds a number: holiday 720p (2).mp4, then (3) and so on. It picks the first free number just before converting each file. So remuxing movie.mp4 to MP4 gives movie (2).mp4. FFmpeg is also told not to overwrite anything: if a file with that name appears before FFmpeg starts writing, the conversion ends with an error and that file stays untouched.

After the conversion, the panels that show the output folder refresh. When the results are next to the originals, the cursor lands on the new file (with several, on the last one). The window title says “Converted: holiday 720p.mp4” or “Video files converted: 3”.

When FFmpeg can't convert a file, the Video conversion message gives the file name and the last lines of FFmpeg's output. The unfinished file is deleted. The queue stops at that file: the earlier results stay, and the app doesn't convert the files that come after it.

The FFmpeg program

The conversion is done by FFmpeg, a free program. FlyingFiles doesn't include it — it uses the FFmpeg installed on your system. You only need to install it once; FlyingFiles finds it by itself.

SystemHow to install
macOSInstall Homebrew following the instructions at brew.sh, then type brew install ffmpeg in the Terminal app.
WindowsIn PowerShell or Command Prompt, type winget install --id Gyan.FFmpeg -e. Installing usually takes a minute.
Ubuntu, Debian, Linux MintIn a terminal, type sudo apt install ffmpeg.
FedoraIn a terminal, type sudo dnf install ffmpeg-free.

The FFmpeg Not Found window also shows the commands for the system you're working on. It opens when you choose Convert Video… and FFmpeg can't be found. Each command has a Copy Command button, and further down, under “Other ways to install it:”, there's a link to ffmpeg.org/download.html (on macOS also to brew.sh). After installing, click Check Again — there's no need to close FlyingFiles. When the app finds FFmpeg, it opens the conversion window straight away.

Locate Program… lets you choose the ffmpeg file (on Windows ffmpeg.exe) yourself, e.g. when it's in an unusual folder. The app checks that it really is FFmpeg and saves the path in Settings.

The ffmpeg-free package from Fedora has no x264 and x265 encoders (H.264 and HEVC). The conversion window shows only the codecs the installed FFmpeg can encode; the full FFmpeg (the ffmpeg package) is in the RPM Fusion repository.

Linux: The FlyingFiles .deb package recommends the ffmpeg package, and the .rpm package recommends ffmpeg-free, so FFmpeg usually gets installed together with the app.

The app looks for FFmpeg in this order:

  1. In the FFmpeg program field in File → Settings… → Preview and video: the full path to the program or the folder it's in. An empty field (the default) or a path with no program at it means automatic search.

  2. In the folders from the PATH variable.

  3. In the usual installation folders:

    • macOS: /opt/homebrew/bin and /usr/local/bin (Homebrew), /opt/local/bin (MacPorts);

    • Windows: the winget folders, C:\ProgramData\chocolatey\bin (Chocolatey), scoop\shims in the user folder (Scoop) and C:\ffmpeg\bin;

    • Linux: /usr/bin, /usr/local/bin and /snap/bin.

Thanks to the folders from step 3, the app finds FFmpeg even when it doesn't see it in PATH: on macOS after being started from Finder, and on Windows right after installing with winget, without restarting FlyingFiles.

Together with FFmpeg comes ffprobe, which the app uses to read the description of a recording: the resolution, frame rate, codecs and length. It looks for it next to ffmpeg, then in PATH and in the same usual folders. Without ffprobe, conversion still works, but the window knows less about the recording — from MP4 and MOV files it reads only the length and resolution.

Limitations

  • Only files on the computer's disk. The app doesn't convert videos on an FTP/SFTP server or inside an archive — copy them to your disk first (F5).

  • One video track and one audio track. The result gets the first video track (not the cover image) and the first audio track. Further audio tracks, e.g. other language versions, and subtitles don't make it into the output file.

  • Resolution and frame rate only go down. The app doesn't enlarge the picture or add frames.

  • Files one after another. An error in one file stops the queue.

  • How long it takes depends on the computer, the codec and the resolution. AV1 is the slowest to encode, and Unchanged takes only a moment.

When something doesn't work

MessageWhat to do
“Select the video files (e.g. MP4, MOV, MKV) you want to convert.”Select the videos or put the cursor on one of them.
“Only files on a local disk can be converted…”Copy the files from the server or the archive to your disk (F5) and convert them there.
The FFmpeg Not Found windowInstall FFmpeg and click Check Again.
“FFmpeg still not found…”Wait for the installation to finish and click Check Again, or point to the program with the Locate Program… button.
“The selected file is not the FFmpeg program: …”Choose the ffmpeg program itself (on Windows ffmpeg.exe), not e.g. ffprobe or ffplay.
“Could not run FFmpeg: …”Reinstall FFmpeg or correct the FFmpeg program field in Settings.
“This FFmpeg has no encoder for the … format.”Choose another format or install the full FFmpeg.
“… video cannot be remuxed into … without re-encoding…”Choose MKV, or a codec instead of Unchanged.
“The video has no audio track.”The recording has no sound, so with Audio Only there's nothing to save. Choose another setting.
“The file has no picture — choose “Audio Only”.”Choose Audio Only under Preset.
“Could not convert …”Read the FFmpeg lines in the message. When the original's folder can't be written to, choose In the other panel's folder.

FlyingFiles 1.7.4 · Features added after 1.0.0 are marked in the text.