FFMPEG en HW-versnelling - capaciteitengids

Hier is de definitieve gids van de FFMPEG-ontwikkelaars over de werkelijk ingewikkelde HW-ondersteuning die beschikbaar is in de huidige FFMPEG (versie 6, halverwege 2023).

Houd er rekening mee dat MCEBuddy een standalone versie van FFMPEG gebruikt voor transcoderen. Let op: dit betekent per definitie dat er een decoderingsbewerking plaatsvindt waarvan de output direct in een encoderingsbewerking gaat. Of beide nu wel of niet de GPU gebruiken is niet altijd duidelijk, en het zijn volledig gescheiden zaken.

Als alternatief kan MCEBuddy Handbrake gebruiken. Handbrake heeft echter zijn eigen ingebouwde versie van FFMPEG en zal de aparte FFMPEG niet gebruiken.

Hetzelfde geldt voor Comskip: ook dat heeft een eigen ingebouwde versie van FFMPEG die het gebruikt. Comskip doet alleen decoderen. Als je Comskip dus geen GPU-versnelling geeft, is het mogelijk niet mogelijk, of CPU-decoderen is gewoon even snel – dat is bij afspelen (decoderen) een beetje de bedoeling.

Kortom: het is over het algemeen niet eenvoudig of duidelijk om precies te weten welke functies elke afzonderlijke FFMPEG-versie ondersteunt of kan, of zelfs of MCEBuddy de juiste opties kan aanroepen – zo kunnen bij de laatste donator-versie van Comskip de nVidia-GPU-opties alleen handmatig via de opdrachtregel worden aangeroepen. Die opties bestaan niet in de donator-versie die met MCEBuddy meegeleverd wordt.

Ik raad daarom aan om het FFMPEG-Hwaccel-ontwikkelaarshandleiding zorgvuldig te bestuderen, te weten welke CPU en GPU je hebt, welke codecs (ook decoderen – niet alleen encoderen!) je gebruikt, om echt te begrijpen wat die „hwaccel”-optie betekent – wat hij wel doet en, belangrijker, wat hij niet doet – en je verwachtingen daarop af te stemmen.

Wat op de ene server werkt, hoeft niet hetzelfde te werken op een andere server met andere CPU’s, GPU’s en besturingssystemen. Dus: je ervaring kan afwijken.

Bedankt voor het delen van deze informatie en advies over de hardwareversnellingsmogelijkheden van FFMPEG en het gebruik ervan binnen verschillende softwaretoepassingen zoals MCEBuddy, Handbrake en Comskip. Je hebt de complexiteit en variabiliteit in ondersteuning voor hardwareversnelling onderstreept, waarduidelijk wordt gemaakt dat de effectiviteit van deze functies kan variëren afhankelijk van de specifieke hardware, codecs en softwareversies die worden gebruikt.

Een leuke functie hier is dat MCEBuddy automatisch de mogelijkheden van de grafische kaarten/drivers analyseert en probeert de hardwareversnelling (voor encoding en decoding afzonderlijk) te koppelen aan de systeemmogelijkheden en de codecs die in het profiel voorkomen (aangepast of standaard, inclusief het omgaan met meerdere grafische kaarten).
Als je niet tevreden bent met de plug-and-play-optie, heb je nog steeds de mogelijkheid om zeer aangepaste profielen te maken die zijn afgestemd op de hardwareversnelling van je systeem, waar MCEBuddy verder geen optimalisaties op zal proberen uit te voeren. Raadpleeg het onderwerp met geavanceerde opdrachten voor meer details, met name de optie UsingHardwareEncoding over hoe je dergelijke aangepaste profielen kunt maken.