Hinweise zum Upgrade auf HandBrake 1.7.0
- Vor dem Update von HandBrake sollte sichergestellt werden, dass keine Encodierungen mehr ausstehen; außerdem wird empfohlen, benutzerdefinierte Presets und die Einstellungen der App zu sichern.
- Windows-Nutzer müssen unbedingt Microsoft .NET Desktop Runtime Version 6.0.x installieren; auch wenn .NET 7 installiert ist, ist die Installation von .NET 6 weiterhin erforderlich.
Release Notes zu HandBrake 1.7.0
- Die vollständige Liste der Verbesserungen und Bugfixes ist in den Release Notes auf GitHub zu finden.
Fehler melden und Feedback geben
- Wer einen reproduzierbaren Bug oder ein Problem entdeckt oder Feedback geben möchte, wird gebeten, dies über den GitHub-Issue-Tracker zu melden.
- Kontakt ist auch über den IRC-Community-Support-Kanal möglich.
- Die HandBrake-App wird von einem kleinen Team von Freiwilligen in ihrer Freizeit entwickelt, daher sind sofortige Antworten möglicherweise schwierig; alle Rückmeldungen werden jedoch gelesen und konstruktives Feedback ist willkommen.
Dank und Beiträge
- Einige Funktionen dieser Veröffentlichung wurden von HandBrake-Nutzern oder Unternehmen beigesteuert; die Übersetzungen entstehen durch die aktive Beteiligung einer weltweiten Community von Freiwilligen.
- Wer sich für Beiträge interessiert, aber noch nicht mitmacht, sollte den Leitfaden für Beiträge lesen.
- Es gibt viele Möglichkeiten, auch ohne Entwickler zu sein, einen Beitrag zu leisten.
Meinung von GN⁺
- Das Upgrade auf HandBrake 1.7.0 erfordert eine Sicherung benutzerdefinierter Einstellungen und die Installation der neuen .NET-Laufzeit.
- Dieses Update enthält Verbesserungen und Bugfixes und ist ein Community-basiertes Projekt, das durch Beiträge von Nutzern und Unternehmen entstanden ist.
- Dieser Artikel berichtet über die Veröffentlichung einer neuen Version von HandBrake, dem Open-Source-Videotranscoder, und ist interessant, weil er die Bedeutung von Zusammenarbeit und Beiträgen in der Tech-Community hervorhebt.
1 Kommentare
Hacker-News-Kommentare
Wenn es dich stört, dass HandBrake nicht automatisch den Rest berechnet, wenn man eine endgültige Dateigröße vorgibt, ist die Berechnung selbst einfach
Durchschnittliche Bitrate
[kbps] = Zielgröße [Kilobit] ÷ Länge [Sekunden]Wenn man zum Beispiel eine Datei von 2 Stunden 48 Minuten auf unter 5 GB bringen will, dann sind 2 Stunden 48 Minuten 10.080 Sekunden und 5 GB sind 40.000.000 kb, also ergibt sich eine durchschnittliche Bitrate von 40.000.000 kb ÷ 10.080 s = 3.968 kbps
Wenn das Audio 256 kbps hat, darf die durchschnittliche Video-Bitrate höchstens 3.712 kbps betragen
Normalerweise kodiert man mit konstanter Qualität, und die Ausgabegröße hängt dann stark vom Eingabevideo ab
Deshalb habe ich einen Python-Wrapper gebaut, der die Ausgabe von HandBrakeCLI parst und anhand des Fortschritts sowie der aktuellen Größe der Ausgabedatei die Endgröße schätzt
Wenn die Datei offenbar zu groß wird oder die Ausgabequalität so schlecht ist, dass man den Qualitätsfaktor erhöhen sollte, kann man frühzeitig abbrechen
Es ist schön, dass die Meldung „Put that cocktail down. Your HandBrake encode is complete!“ auch nach all den Jahren noch da ist
Früher blieben in der HandBrake-Pipeline viele Filter bei 8 Bit, selbst nachdem alles auf 10 Bit umgestellt war, sodass man durch die Wahl des falschen Filters leicht unbemerkt die Kodierqualität verschlechtern konnte
Inzwischen unterstützen die meisten, vielleicht sogar alle Filter offenbar 10 Bit
Wegen der FDK-AAC-Lizenz konnte außerdem nicht gebündelt werden, weshalb der AAC-Codec in den Release-Versionen unterlegen war, aber inzwischen soll er nicht mehr so schlecht sein wie früher
Ich frage mich, ob es in der aktuellen Version dieser guten App noch große Fallstricke gibt
Das Kernproblem ist jedenfalls Personalmangel. Viele wünschenswerte Features stecken noch im Feature-Himmel fest
Aber das gilt wohl für alle Open-Source-Projekte
Heutzutage bitte ich ChatGPT einfach um einen
ffmpeg-TerminalbefehlDas geht viel schneller als jede App und lässt sich genau so anpassen, wie ich es will
Durch Versuch und Irrtum oder das Lesen der Manpage zu gehen, ist kaum „viel schneller“, als in HandBrake ein Preset auszuwählen und Kästchen anzuklicken oder Schieberegler zu bewegen
ffprobe-Ausgabe in den PromptWenn die Quelle eine DVD ist, muss man außerdem Dinge wie Seitenverhältnis, Deinterlacing, Untertitelbehandlung usw. berücksichtigen
ffmpegist eigentlich das einzige Programm, auf das ich gern ein visuelles No-Code-Interface angewendet säheInzwischen ertappe ich mich dabei, bei jeder Manpage nach einer Art
--chatgpt-Option ähnlich--helpzu suchenDie Feature-Liste gefällt mir. Besonders gespannt bin ich auf die Performance-Verbesserungen für arm64 / aarch64 / Apple Silicon, das schnellere HEVC-Decoding im aktuellen FFmpeg und den um 30 % schnelleren bwdif-Filter, die neuen SVT-AV1-Assembler-Optimierungen mit bis zu 4-facher Performance sowie die höhere Speichereffizienz und schnellere Videokonvertierung durch das Entfernen unnötiger Frame-Kopien
Mein einziger Kritikpunkt an HandBrakeCLI ist, dass es per stdin gepipte Eingaben nicht kodieren kann
FFmpeg kann das, und ich dachte, HandBrake nutze intern ohnehin FFmpeg
libavformat,libavcodecundlibavfilter, also Teile der FFmpeg-BibliothekenTrotzdem ist es eine komplett andere App. Decoder, einige Demuxer und einige Filter sind dieselben, aber die Art, wie sie zusammengesetzt werden, ist völlig anders als bei der FFmpeg-Kommandozeilen-App
Oder vielleicht auch etwas Bash-Magie wie
handbrake-cli -i <(cat video-file.mp4)Ich habe HandBrakeCLI nie benutzt und nur die GUI verwendet, daher weiß ich es nicht genau
Natürlich nutzt es in anderen Bereichen die FFmpeg-Bibliotheken sehr umfassend
Es ist einer der wenigen Transcoder, die nicht bloß FFmpeg-Wrapper sind, was zugleich Vor- und Nachteil ist
Kann mir jemand einfach erklären, warum HandBrake die Option Zieldateigröße angeblich nicht implementieren kann?
Bei Android-Apps zur Videokomprimierung funktioniert das ziemlich gut, aber in den entsprechenden Feature-Requests auf GitHub meinte einer der Maintainer, das sei praktisch schwer umzusetzen
ffmpeg-/vapoursynth-Filterketten geht dasDeshalb kann ich mir nicht vorstellen, warum es nicht gehen soll
Unter Windows würde ich einfach Staxrip empfehlen: https://github.com/staxrip/staxrip
Es gibt auch eine Linux-App auf vapoursynth-Basis, aber mir fällt der Name nicht ein
Oder vielleicht eines der AV1an-GUIs. All diese Tools unterstützen eine Zieldateigröße und haben weit mehr Funktionen als HandBrake
Warum gibt es immer noch keine einfache Funktion wie „Video X auf Dateigröße Y begrenzen“?
Ich will doch einfach nur eine 5-GB-Videodatei, aber HandBrake scheint sich eher darum zu kümmern, welches von 50 Vimeo-Presets, von denen ich nichts verstehe, relevant ist
5 GB ist klar größer als eine CD, und wenn du nicht genau 10 Stück auf eine Blu-ray packen willst, ist es für Blu-ray auch zu klein
So seltsam dir die Vimeo-Presets vorkommen, so seltsam wirkt dein Anwendungsfall auf den Rest der Welt
Außer beim Umgang mit HDR-Videos bevorzuge ich immer ffmpeg gegenüber HandBrake.
Ich habe keinen passenden ffmpeg-Befehl gefunden, um HDR-Metadaten von der Eingabequelle in die Ausgabe zu kopieren.
Als ich das zuletzt geprüft habe, war es nicht möglich, und man musste die Metadaten mit einem Tool wie MediaInfo manuell extrahieren und dann jeden Wert als ffmpeg-Argument übergeben.
Weiß jemand, ob das immer noch so ist?
-movflagsunduse_metadata_tagsausprobiert?ffmpeg -i $input_file -movflags use_metadata_tags -crf 22 $output_fileQuelle: https://video.stackexchange.com/a/26076
Etwas ausführlicher: Es gibt zwei gängige HDR-Videostandards, Dolby Vision und HDR10. Beide benötigen separate Unterstützung innerhalb des Encoders, und das ist eher ein Thema von
libx265als vonlibavformat/ffmpeg.Zum Glück kann man, wenn das Quellvideo HDR10 ist, die global unveränderte Übertragungsfunktion und das Tone Mapping extrahieren und direkt auf die Ausgabe-Metadaten anwenden. FFmpeg kann diese Werte an den Encoder weiterreichen, kopiert sie aber nicht standardmäßig von der Quelle ins Ziel.
Eine Erklärung dazu gibt es unter https://codecalamity.com/encoding-uhd-4k-hdr10-videos-with-f...
Ich habe schon einmal ein als HDR10 kodiertes Video in ein anderes Format reenkodiert und dabei die Metadaten beibehalten; der endgültige Befehl, der noch in meiner Shell-Historie stand, sah ungefähr so aus:
ffmpeg -i Movie-with-HDR.mkv -c:v libx265 -map_metadata:s:0 0:s:0 -map_metadata:g:0 0 -x265-params crf=21:master-display="G(13250,34500)B(7500,3000)R(34000,16000)WP(15635,16450)L(10000000,50)":max-cll=1000,240 Movie-output.mkvDie Einstellungen
master-displayundmax-cllwaren dabei Farb-Übertragungsfunktionen, die ich mit einem anderen Tool aus dem ersten Video extrahieren musste. Diese Einstellungen sind in derlibx265-Parameterdokumentation beschrieben: https://x265.readthedocs.io/en/master/cli.htmlDolby Vision ist schwieriger. Die Metadaten sind dynamisch, daher bin ich nicht sicher, wie man sie aus der Quelle holen kann, aber man kann sie über Kommandozeilenargumente an
libx265übergeben. Leider ist das nur über die Kommandozeile verfügbar und nicht über die API, daher kann ffmpeg das derzeit noch nicht stellvertretend übernehmen.Als weiterführende Referenz zum Extrahieren der Übertragungsfunktion und zum Übergeben an ffmpeg siehe https://medium.com/@yllanos/how-to-encode-a-4k-hdr-movie-usi... und https://codecalamity.com/encoding-uhd-4k-hdr10-videos-with-f...; ein Beitrag, in dem mehrere Leute dieselbe Aufgabe aufarbeiten, ist https://www.reddit.com/r/ffmpeg/comments/g3uucr/how_do_i_enc...
Für die Umwandlung von Dolby Vision nach HDR10 sowie Inhalte zu HLG und PQ siehe https://www.reddit.com/r/ffmpeg/comments/nkxbay/how_to_conve...; zu den Feinheiten von Dolby Vision siehe https://www.reddit.com/r/ffmpeg/comments/a32yv4/deleted_by_u...
Die Release-Seite selbst wäre wohl der bessere Link gewesen.
Dort steht das Changelog, das die meisten wahrscheinlich sehen wollen.
https://github.com/HandBrake/HandBrake/releases/tag/1.7.0