- Registriert
- 11. Juni 2010
- Beiträge
- 4.077
- Reaktionspunkte
- 2.854
- Punkte
- 373
Hallo Zusammen,
nach langer Zeit und einigen Anfragen habe ich hier ein neues Tutorial für euch.
In diesem Tutorial geht es darum, eine durch NVIDIAs GPU gepowertes Transcoding laufen zu lassen.
Darüber hinaus zeige ich euch, wie Ihr Filme ganz Easy und schnell nach MP4 transcoded könnt um Maßig Storage ohne Qualitätseinbußen des Videos zu sparen.
Die Anforderungen:
- Mind. einen Core i5 Prozessor, vergleichsweise AMD
- Mind. 8 GB RAM
- Eine HDD mit genug Kapazität
- eine NVIDIA GPU: GTX 1060 3GB / 6GB, GTX 1070, 1080, Quadro P2000 etc. unter dem würde ich nicht anfangen.
- Installation von Ubuntu Server 18.04 als Grundsystem wird vorausgesetzt.
Schritt 1:
Nach der Installation des Grundsystems und dem installieren der aktuellen Updates installieren wir das CUDA Toolkit und die notwendigen Requirements.
Schritt 2:
Nachdem die Installation von CUDA ein paar Minuten gedauert hat, bauen wir uns FFMPEG.
Nun checkt eure ffmpeg Version:
Schritt 3:
Da nun das Grundgerüst zum Transcoding steht, können anfangen zum Beispiel einen Film von MKV nach MP4 zu transcoden.
Mit der Variable $f definiere ich das File, welches transcoded wird und mit $name den Output. Im nächsten Schritt wird CUDA initiiert und das Inputfile gelesen.
Hier beginnt dann nun das eigentlich transcoding. Der hwdownload lädt die Frame in den GPU RAM, ändert das Pixel Format zu nv12 und Uploaded Frames
für das weitere processing. Hier wird mit -c:v:0 der Video Stream 0 nun selektiert und vom Codec H264 (zum Beispiel) mit dem Profil Main und der Geschwindigkeit Slow bei mittlerer
Qualität qmin bis qmax ins Format YUV420P transcoded. Parallel dazu werden die Audio Streams mit deutscher Sprache selektiert und in den Codec LIBFDK_AAC umgewandelt. Hier ist zu beachten, dass der Audiostream 0 Stereo bei 48kbit/s und der Audiostream 1 bei 5.1 mit 384kbit/s umgewandelt wird.
Das folgende Script könnt Ihr als transcode in /usr/local/bin speichern.
Bitte vergesst nicht dem Script entsprechende Rechte zum Ausführen zu geben wie etwa chmod 777 /usr/local/bin/transcode
Ausführungsbeispiel:
Wir haben unter /mnt/share/ unseren Film Avatar.264.DEB.mkv liegen.
Dieser Film ist in etwas 10GB groß.
Nach etwa 10-15 Minuten ist das Transcoding abgeschlossen.
Nun könnt Ihr mittels ls- l --block-size=m prüfen wie groß das Outputfile Avatar.HVENC.Peters.Release.mp4 ist.
Ihr werdet feststellen, dass der Output am Ende nur noch 2...maximal 3,5GB sein wird ohne das Ihr Qualität am Bildmaterial verloren habt.
Ihr könnt gerne mit dem qmin und qmax etwas experimentieren. Für mich sind dies aber ganz gute Werte gemessen daran, wie die Qualität beim Inputfile ist. Bei qmin und qmax gilt:
Je niedriger der Wert, umso höher die Bitrate --> je Höher die Bitrate umso besser das Bild --> Umso besser das Bild --> Je größer wird das File. Also kann es im Extremfall am Ende auch 30GB groß sein, statt ursprünglich 10GB...nur tut man so nichts gewinnen.
Um den ganzen hier noch etwas Würze zu geben, lege ich noch mein UHD Script ontop.
Ich habe hier wirklich starke Erfolge eingefahren für mich. Ich habe einen guten alten Klassiker mit 49GB MKV auf knapp 8.9GB transcoded. Und ganz ehrlich....wenn ich nicht gerade mit einer Lupe vorm Fernseher sitze, sehe ich keinen Unterschied.
Der Unterschied hier ist zum einen das Pixel Format yuv420p10le, sowie der Color Space color_primaries bt2020 -color_trc smpte2084 -colorspace bt2020nc.
Sind die Settings nicht vorhanden, gehen die Farbtöne verloren und werden durch Weiss ersetzt. In diesem Script sind auch die Metadaten gesetzt, wie die Audiostreams benannt sind.
Kleine Info noch zum Abschluss:
Über ein paar kleinere Anpassungen lassen sich damit auch ts Streams erstellen und Livestreamen.
nach langer Zeit und einigen Anfragen habe ich hier ein neues Tutorial für euch.
In diesem Tutorial geht es darum, eine durch NVIDIAs GPU gepowertes Transcoding laufen zu lassen.
Darüber hinaus zeige ich euch, wie Ihr Filme ganz Easy und schnell nach MP4 transcoded könnt um Maßig Storage ohne Qualitätseinbußen des Videos zu sparen.
Die Anforderungen:
- Mind. einen Core i5 Prozessor, vergleichsweise AMD
- Mind. 8 GB RAM
- Eine HDD mit genug Kapazität
- eine NVIDIA GPU: GTX 1060 3GB / 6GB, GTX 1070, 1080, Quadro P2000 etc. unter dem würde ich nicht anfangen.
- Installation von Ubuntu Server 18.04 als Grundsystem wird vorausgesetzt.
Schritt 1:
Nach der Installation des Grundsystems und dem installieren der aktuellen Updates installieren wir das CUDA Toolkit und die notwendigen Requirements.
Du musst dich
Anmelden
oder
Registrieren
um diesen Inhalt sichtbar zu machen!
Schritt 2:
Nachdem die Installation von CUDA ein paar Minuten gedauert hat, bauen wir uns FFMPEG.
Du musst dich
Anmelden
oder
Registrieren
um diesen Inhalt sichtbar zu machen!
Nun checkt eure ffmpeg Version:
Code:
Du musst dich
Anmelden
oder
Registrieren um den Inhalt der Codes zu sehen!
Schritt 3:
Da nun das Grundgerüst zum Transcoding steht, können anfangen zum Beispiel einen Film von MKV nach MP4 zu transcoden.
Mit der Variable $f definiere ich das File, welches transcoded wird und mit $name den Output. Im nächsten Schritt wird CUDA initiiert und das Inputfile gelesen.
Hier beginnt dann nun das eigentlich transcoding. Der hwdownload lädt die Frame in den GPU RAM, ändert das Pixel Format zu nv12 und Uploaded Frames
für das weitere processing. Hier wird mit -c:v:0 der Video Stream 0 nun selektiert und vom Codec H264 (zum Beispiel) mit dem Profil Main und der Geschwindigkeit Slow bei mittlerer
Qualität qmin bis qmax ins Format YUV420P transcoded. Parallel dazu werden die Audio Streams mit deutscher Sprache selektiert und in den Codec LIBFDK_AAC umgewandelt. Hier ist zu beachten, dass der Audiostream 0 Stereo bei 48kbit/s und der Audiostream 1 bei 5.1 mit 384kbit/s umgewandelt wird.
Das folgende Script könnt Ihr als transcode in /usr/local/bin speichern.
Bitte vergesst nicht dem Script entsprechende Rechte zum Ausführen zu geben wie etwa chmod 777 /usr/local/bin/transcode
Du musst dich
Anmelden
oder
Registrieren
um diesen Inhalt sichtbar zu machen!
Wir haben unter /mnt/share/ unseren Film Avatar.264.DEB.mkv liegen.
Dieser Film ist in etwas 10GB groß.
Du musst dich
Anmelden
oder
Registrieren
um diesen Inhalt sichtbar zu machen!
Nun könnt Ihr mittels ls- l --block-size=m prüfen wie groß das Outputfile Avatar.HVENC.Peters.Release.mp4 ist.
Ihr werdet feststellen, dass der Output am Ende nur noch 2...maximal 3,5GB sein wird ohne das Ihr Qualität am Bildmaterial verloren habt.
Ihr könnt gerne mit dem qmin und qmax etwas experimentieren. Für mich sind dies aber ganz gute Werte gemessen daran, wie die Qualität beim Inputfile ist. Bei qmin und qmax gilt:
Je niedriger der Wert, umso höher die Bitrate --> je Höher die Bitrate umso besser das Bild --> Umso besser das Bild --> Je größer wird das File. Also kann es im Extremfall am Ende auch 30GB groß sein, statt ursprünglich 10GB...nur tut man so nichts gewinnen.
Um den ganzen hier noch etwas Würze zu geben, lege ich noch mein UHD Script ontop.
Ich habe hier wirklich starke Erfolge eingefahren für mich. Ich habe einen guten alten Klassiker mit 49GB MKV auf knapp 8.9GB transcoded. Und ganz ehrlich....wenn ich nicht gerade mit einer Lupe vorm Fernseher sitze, sehe ich keinen Unterschied.
Der Unterschied hier ist zum einen das Pixel Format yuv420p10le, sowie der Color Space color_primaries bt2020 -color_trc smpte2084 -colorspace bt2020nc.
Sind die Settings nicht vorhanden, gehen die Farbtöne verloren und werden durch Weiss ersetzt. In diesem Script sind auch die Metadaten gesetzt, wie die Audiostreams benannt sind.
Du musst dich
Anmelden
oder
Registrieren
um diesen Inhalt sichtbar zu machen!
Kleine Info noch zum Abschluss:
Über ein paar kleinere Anpassungen lassen sich damit auch ts Streams erstellen und Livestreamen.