ffmpeg #
See video metadata #
The ffprobe
gathers information from multimedia streams and prints it in human- and machine-readable fashion.
ffprobe -i video.mkv
Showing the encoder options available #
To get the list of presets:
ffmpeg -h encoder=hevc_nvenc
Converting a video to HVEC/H.265 #
It´s done by the -c:v
parameter. To do it using the CPU:
ffmpeg -i input.mov -map_metadata 0 -c:v libx265 -x265-params "lossless=1" output.mp4
Using the GPU (Nvidia). Notice that in this codec we have a -tune
parameter:
ffmpeg -h encoder=hevc_nvenc
ffmpeg -i .input.mkv -map_metadata 0 -c:v hevc_nvenc -tune hq output.mp4
Choosing the metadata, subtitles and audio #
It´s done by the -map
parameter.
Keeping all the video, audio and subtitle streams from input 1:
ffmpeg.exe -i '.\sample.mkv' -map 0:v -map 0:a -map 0:s -map_metadata 0 -c:v hevc_nvenc -tune hq filme.mkv
Keeping the video, but only audio 2 and subtitle 3 from input 1. Notice that it is indexed by 0:
ffmpeg.exe -i '.\sample.mkv' -map 0:v -map 0:a:1 -map 0:s:2 -map_metadata 0 -c:v hevc_nvenc -tune hq filme.mkv
The 1st video stream, 2nd audio stream, all subtitles:
ffmpeg -i input -map 0:v:0 -map 0:a:1 -map 0:s -c copy output
The 3rd video stream, all audio streams, no subtitles. This example uses negative mapping to exclude the subtitles:
ffmpeg -i input -map 0:v:2 -map 0:a -map -0:s -c copy output
Choosing streams from multiple inputs. All video from input 0, all audio from input 1:
ffmpeg -i input0 -i input1 -map 0:v -map 1:a -c copy output
Run ffmpeg recursively in Windows PowerShell #
Run ffmpeg in batch, recursively, making all the output be in the current folder:
dir -recurse -include *.mp4 | %{ $newname = $_.Name.Remove($_.Name.Length - $_.Extension.Length) + ".ffmpeg.p7.hq.mkv"; ffmpeg -i "$_" -map 0:v -map 0:a -map -0:s -map_metadata 0 -c:v hevc_nvenc -tune hq -preset p7 $newname}