ffmpeg mit 2-pass Hardwarebeschleunigung
Besitzer einer NVIDIA-Grafikkarte werden sich freuen, da der neueste Treiber die Hardwarebeschleunigung von ffmpeg in Windows 10 und Linux unterstützt. Allgemeine, grundlegende Bemerkungen zur Hardwarebeschleunigung sind hier: trac.ffmpeg.org/wiki/HWAccelIntro
ffmpeg ist schnell installiert. Es gibt für Linux und Windows fertige 64bit-Pakete zum Download: ffmpeg.org.
Unter Windows braucht man nichts installieren, sondern auf C:\
einen Ordner anlegen, z. B. C:\ffmpeg
und einen Pfad auf C:\ffmpeg\bin
setzen. Danach steht der Befehl ffmpeg
in der Eingabeaufforderung zur Verfügung.
Grundsätzlich wird alles erklärt mit dem Befehl
ffmpeg -h
Die genaue Beschreibung der Parameter und Beispiele ist hier: trac.ffmpeg.org/wiki
Nachfolgende ffmpeg-Beispiele sind mit ffmpeg N-90155-g28924f4b48 mit Windows 10 und NVIDIA GeForce GTX 1080 getestet.
ffmpeg-Version anzeigen
ffmpeg -version
Codecs anzeigen
ffmpeg -hide_banner -codecs
D..... = Decoding supported .E.... = Encoding supported ..V... = Video codec ..A... = Audio codec ..S... = Subtitle codec ...I.. = Intra frame-only codec ....L. = Lossy compression .....S = Lossless compression
ffmpeg -hide_banner -codecs | grep 264
Windows-Benutzer verwenden statt dem Befehl grep den Befehl findstr.
DEV.LS h264 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 (decoders: h264 h264_qsv h264_cuvid ) (encoders: libx264 libx264rgb h264_amf h264_nvenc h264_qsv nvenc nvenc_h264 )
ffmpeg -hide_banner -codecs | grep 265
DEV.L. hevc H.265 / HEVC (High Efficiency Video Coding) (decoders: hevc hevc_qsv hevc_cuvid ) (encoders: libx265 nvenc_hevc hevc_amf hevc_nvenc hevc_qsv )
nvenc
ist NVIDIA GPU-Hardwarebeschleunigungqsv
ist Intel Quick Sync Video GPU-Hardwarebeschleunigung (verfügbar ab Sandy Bridge Intel-CPU)
Hardwarebeschleunigungsmethoden anzeigen
ffmpeg -hide_banner -hwaccels
Ergibt die Ausgabe etwas wie
Hardware acceleration methods: cuda dxva2 qsv d3d11va qsv cuvid
Verfügbare Presets und Encoder Options anzeigen
Für h.264-Hardware-Encoding
ffmpeg -h encoder=h264_nvenc -hide_banner
Für h.265-Hardware-Encoding
ffmpeg -h encoder=hevc_nvenc -hide_banner
Video transcodieren zu h.264 mit NVIDIA-Hardwarebeschleunigung, 2-pass
Hardwaretranscode mit CUVID und NVENC, transcodiert ein Full-HD Video mit 225 Frames/Sekunde in bester Qualität.
ffmpeg -hwaccel cuvid -c:v h264_cuvid -i input.mkv \ -c:v h264_nvenc -b:v 15M -profile:v high \ -tune film -level 4.1 -preset slow -pixel_format cuda \ -c:a copy -y -hide_banner output.mkv
Mehr Informationen zur NVIDIA Hardwaretranskodierung, unterstützte Grafikkarten und Treiber: developer.nvidia.com/nvidia-video-codec-sdk
Parameter für profile
baseline, main, high, high444p (default=main)
Parameter für tune
film, animation, grain, stillimage, psnr, ssim, fastdecode, zerolatency
Parameter für level
Bis zur Auflösung von 1920×1080 als Parameter 4.1
nehmen
Parameter für preset
slow
High Quality 2-passmedium
High Quality 1-pass (default)fast
hp 1 passhp
hq
bd
ll
low latencyllhq
low latency hqllhp
low latency hplossless
losslesshp
Parameter für pixel_format
yuv420p, nv12, p010le, yuv444p, yuv444p16le, bgr0, rgb0, cuda, d3d11
Skalieren mit Hardwarebeschleunigung
Wenn ffmpeg mit --enable-libnpp
kompiliert ist, kann man zur Filterkette einen GPU-Scaler hinzufügen
ffmpeg -hwaccel_device 0 -hwaccel cuvid -c:v h264_cuvid -i input.mkv\ -vf scale_npp=-1:720 -c:v h264_nvenc -preset slow output.mkv
-hwaccel_device 0
wäre in diesem Beispiel die erste GPU.
Nur die ersten 120 Sekunden transcodieren
-t 120
Ab der 600. Sekunde beginnen
-ss 600
Oben und unten 22 Pixel abschneiden
-vf crop=in_w:in_h-2*22
Links und rechts 10 Pixel abschneiden
-vf crop=in_w-2*10:in_h
Oben und unten schwarze Balken hinzufügen
-vf pad="1920:1080:0:(1080-ih)/2"
Dieses Beispiel gilt für ein Full-HD Video mit 1920×1080 Pixel. Das Format wird benötigt für die HD-DVD Produktion (Mini-BluRay), da nur die Abmessungen 1920×1080 und 1280×720 funktionieren.
Ohne Audio
-an
Ohne Video
-vn