x264
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
| x264 [2023-05-08 16:40:45] – manfred | x264 [2024-04-19 20:48:51] (aktuell) – [x264] manfred | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| + | ====== x264 ====== | ||
| + | |||
| + | was ist das: | ||
| + | * [[https:// | ||
| + | |||
| + | > ffmpeg -i Quelle.avi -c:v libx264 -crf 25 -b:v 0 -c:a aac -y Ziel.mp4 | ||
| + | > ffmpeg -i Quelle.avi -c:v libx264 -crf 25 -b:v 0 -preset slower -tune film -g 300 -map 0:a:0 -c:a:0 libfdk_aac -afterburner 1 -movflags faststart -f mp4 -y Ziel.mp4 | ||
| + | |||
| + | //Mit der Option '' | ||
| + | |||
| + | //Mit '' | ||
| + | |||
| + | Um Qualität zu erzielen möchte ich mindestens " | ||
| + | |||
| + | ich konzentriere mich hauptsächlich auf diese beiden Presets: | ||
| + | * '' | ||
| + | * '' | ||
| + | |||
| + | |||
| + | ===== Quellen ===== | ||
| + | |||
| + | Home-Page: | ||
| + | * **[[https:// | ||
| + | * [[http:// | ||
| + | |||
| + | Ansehen kann man sich die Quellen online hier: | ||
| + | * [[http:// | ||
| + | |||
| + | Saugen kann man sich die neuesten Quellen mit Hilfe von [[http:// | ||
| + | # git clone git:// | ||
| + | |||
| + | Oder man saugt sich einfach eine gepackte Version von hier: | ||
| + | * [[ftp:// | ||
| + | |||
| + | weitere Infos: | ||
| + | * [[https:// | ||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | |||
| + | |||
| + | ===== Einstellungen ===== | ||
| + | |||
| + | * [[http:// | ||
| + | |||
| + | Wichtig ist auch die Reihenfolge, | ||
| + | |||
| + | laut Doku soll es so sein: | ||
| + | x264 [CRF] [Preset] [tune] [Restliche Optionen] -o [Zielvideo] [Quellvideo] [Auflösung] | ||
| + | |||
| + | das // | ||
| + | x264 [CRF] [Preset] [tune] [Restliche Optionen] [Quellvideo] -o [Zielvideo] [Auflösung] | ||
| + | |||
| + | bei mir gab es auf 64Bit-Systemen mit der oben genannten Reihenfolge Probleme: | ||
| + | raw [error]: raw input requires a resolution. | ||
| + | x264 [error]: could not open input file `-' | ||
| + | |||
| + | Hierbei hatte ich die Daten im // | ||
| + | |||
| + | seitdem verwende ich diese Reihenfolge der Optionen: | ||
| + | x264 [Quellvideo] --input-res [Auflösung] [CRF] [Preset] [tune] [Restliche Optionen] -o [Zielvideo] | ||
| + | |||
| + | * [[http:// | ||
| + | |||
| + | |||
| + | ==== rate-control mode ==== | ||
| + | |||
| + | '' | ||
| + | |||
| + | - **bitrate** - [Multi-Pass-fähig] orientiert sich an die Bandbreite des Video-Datenstomes | ||
| + | - **qp** - [Blu-Ray-kompatibel] orientiert sich an die Qualität | ||
| + | - **crf** - [Blu-Ray-kompatibel] eine Kombination aus den obigen beiden, es erreicht die Qualität von '' | ||
| + | |||
| + | |||
| + | ==== --preset ==== | ||
| + | |||
| + | ultrafast | ||
| + | superfast | ||
| + | veryfast | ||
| + | faster | ||
| + | fast | ||
| + | medium (default) | ||
| + | slow | ||
| + | slower | ||
| + | veryslow | ||
| + | placebo | ||
| + | |||
| + | |||
| + | ==== --tune ==== | ||
| + | |||
| + | film (psy tuning) | ||
| + | grain (psy tuning) | ||
| + | stillimage (psy tuning) | ||
| + | psnr (psy tuning) | ||
| + | ssim (psy tuning) | ||
| + | fastdecode | ||
| + | zerolatency | ||
| + | |||
| + | Es können mehrere " | ||
| + | |||
| + | |||
| + | ==== --no-fast-pskip ==== | ||
| + | |||
| + | " | ||
| + | |||
| + | |||
| + | ==== --no-dct-decimate ==== | ||
| + | |||
| + | " | ||
| + | |||
| + | |||
| + | ==== --nr ==== | ||
| + | |||
| + | Mit dieser Option kann man das Bildrauschen unterdrücken. | ||
| + | Mit **0** ist sie deaktiviert und zwischen **0-600** sollte der Wert für gängiges Filmmaterial sein. | ||
| + | x264 empfiehlt Werte zwischen **100-1000** um verrauschtes Bildmaterial aufzuwerten. | ||
| + | |||
| + | |||
| + | ===== x264 Blu-Ray-konform ===== | ||
| + | |||
| + | * {{x264_demo_blu-ray.torrent|Torrent-Datei: | ||
| + | * [[http:// | ||
| + | |||
| + | High-definition video may be stored on Blu-ray ROM discs with up to 1920×1080 pixel resolution at up to 59.94 fields per second, corresponding to 29.97 frames per second interlaced or 24 frames per second progressive. Alternatively, | ||
| + | |||
| + | * [[http:// | ||
| + | |||
| + | Die neueste Version der Bibliothek x264 kann Blu-Ray-konforme Videos erzeugen. Einem Mastering von Blu-Ray-Disks ausschließlich mit freien Programmen steht damit nichts mehr im Wege. | ||
| + | Von Hans-Joachim Baader | ||
| + | |||
| + | x264 ist eine freie, unter der GPL veröffentlichte Bibliothek zum Kodieren von H.264/ | ||
| + | |||
| + | Wie Jason Garrett-Glaser, | ||
| + | |||
| + | Blu-Ray-konformes Audio wurde schon zuvor unterstützt, | ||
| + | |||
| + | Zur Demonstration der Fähigkeiten haben die Entwickler eine Blu-Ray-Disk mit vollständig freien Inhalten zusammengestellt. Auf dieser sind die Filme Big Buck Bunny und Elephant' | ||
| + | |||
| + | Eventuelle Patentprobleme sieht das Projekt für die meisten europäischen Länder (noch) nicht. Software ist nach Ansicht der Entwickler im Artikel 52 der Europäischen Patentübereinkunft von der Patentierbarkeit ausgeschlossen. Hardwarehersteller, | ||
| + | |||
| + | * [[http:// | ||
| + | * [[http:// | ||
| + | |||
| + | ---- | ||
| + | |||
| + | [[http:// | ||
| + | |||
| + | ---- | ||
| + | |||
| + | |||
| + | ==== Blu-ray support: NAL-HRD, VFR ratecontrol, | ||
| + | |||
| + | * [[http:// | ||
| + | |||
| + | **2010-03-27** | ||
| + | |||
| + | x264 can now generate Blu-ray-compliant streams for authoring Blu-ray Discs! | ||
| + | Compliance tested using Sony BD-ROM Verifier 1.21. | ||
| + | |||
| + | # x264 --crf 16 --preset veryslow --tune film --weightp 0 --bframes 3 --nal-hrd vbr --vbv-maxrate 40000 --vbv-bufsize 30000 --level 4.1 --keyint 24 --b-pyramid strict --slices 4 --aud --colorprim " | ||
| + | |||
| + | This command is much more complicated than usual due to the very complicated restrictions the Blu-ray spec has. | ||
| + | Most options after " | ||
| + | //--weightp 0// is not, but there are known bugged Blu-ray player chipsets (Mediatek, notably) that will decode video with //--weightp 1// or //2// incorrectly. | ||
| + | **Furthermore, | ||
| + | Examples include 1080p @ 24000/ | ||
| + | |||
| + | Detailed features introduced in this patch: | ||
| + | |||
| + | Full NAL-HRD compliance, with both VBR (no filler) and CBR (filler) modes. | ||
| + | Can be enabled with --nal-hrd vbr/cbr. | ||
| + | libx264 now returns HRD timing information to the caller in the form of an x264_hrd_t. | ||
| + | x264cli doesn' | ||
| + | |||
| + | Full VFR ratecontrol support: VBV, 1-pass ABR, and 2-pass modes. | ||
| + | This means that, even without knowing the average framerate, x264 can achieve a correct bitrate in target bitrate modes. | ||
| + | Note that this changes the statsfile format; first pass encodes make before this patch will have to be re-run. | ||
| + | |||
| + | Pulldown support: libx264 allows the calling application to specify a pulldown mode for each frame. | ||
| + | This is similar to the way that RFFs (Repeat Field Flags) work in MPEG-2. | ||
| + | Note that libx264 does not modify timestamps: it assumes the calling application has set timestamps correctly for pulldown! | ||
| + | x264cli contains an example implementation of caller-side pulldown code. | ||
| + | |||
| + | Pic_struct support: necessary for pulldown and allows interlaced signalling. | ||
| + | Also signal TFF vs BFF with delta_poc_bottom: | ||
| + | --tff and --bff should be preferred to the old --interlaced in order to tell x264 what field order to use. | ||
| + | |||
| + | Huge thanks to Alex Giladi and Lamont Alston for their work on code that eventually became part of this patch. | ||
| + | |||
| + | |||
| + | ===== Beispiel ===== | ||
| + | |||
| + | * [[http:// | ||
| + | |||
| + | Das folgende Kommando ist ein Standard-Beispiel dafür, wie man mit // | ||
| + | In diesem Beispiel hat der Film das Bildformat von 1920x1080, das muss //x264// separat mitgeteilt werden: | ||
| + | # mencoder Originalfilm.flv -really-quiet -mc 0 -noskip -ovc raw -lavcopts threads=1 -lavdopts threads=1 -demuxer lavf -vf scale, | ||
| + | |||
| + | Der //mplayer// kann seine Video-Daten im Format // | ||
| + | Das // | ||
| + | das muss dann dem //x264// noch zusätzlich mit gegeben werden und das muss natürlich vorher wieder erst ermittelt werden, | ||
| + | das braucht man beim // | ||
| + | |||
| + | Allerdings kann der MPlayer seine Video-Daten nicht an eine Pipe übergeben, hier muss man sich eines FIFO bedienen. | ||
| + | Leider hat sich das verwenden von FIFO aber als problematisch herausgestellt, | ||
| + | in den " | ||
| + | |||
| + | In einem Forum habe ich gelesen, das //" | ||
| + | |||
| + | Hier das FIFO-Beispiel: | ||
| + | |||
| + | # mkfifo fifo.y4m | ||
| + | # nohup mplayer Film.mpg -really-quiet -benchmark -vo yuv4mpeg: | ||
| + | # x264 --crf 23 --threads 1 --b-adapt 2 --direct auto --slow-firstpass --no-fast-pskip --me tesa --merange 24 --partitions all --rc-lookahead 60 --ref 5 --subme 10 --trellis 2 --nr 0 --weightp 0 --bframes 3 --nal-hrd vbr --vbv-maxrate 12000 --vbv-bufsize 12000 --level 3.0 --keyint 24 --b-pyramid strict --slices 1 --aud --colorprim bt709 --transfer bt709 --colormatrix bt709 --sar 1:1 -o Film_stumm.mkv fifo.y4m | ||
| + | # mplayer Film.mpg -aid 128 -vo null -dumpaudio -dumpfile Film_audiospur | ||
| + | # mkvmerge --default-language ger --aspect-ratio 1:4/3 -o NEUERFILM.mkv Film_stumm.mkv Film_audiospur | ||
| + | # rm fifo.y4m Film_stumm.mkv Film_audiospur | ||
| + | |||
| + | Da der MPlayer nur das Originalbild (unmanipuliert) ausgeben kann, verwende ich lieber MEncoder. | ||
| + | Mit ihm ist es möglich, das Bild zu scalieren (vergrößern/ | ||
| + | |||
| + | Deshalb habe ich die auf den ersten Blick etwas aufwändigere Variante mit dem // | ||
| + | |||
| + | //Hier ein entsprechendes Script, bei dem eine Tonspur unverändert übernommen wird und die Videodaten in den " | ||
| + | |||
| + | '' | ||
| + | |||
| + | Hier ein Script von mir, das zwar noch nicht fertig ist aber sonst schon alles richtig macht: [[filme_transkodieren# | ||
| + | |||
| + | Aufgerufen wird es zum Beispiel so... | ||
| + | |||
| + | Aufruf der Hilfe: | ||
| + | # / | ||
| + | |||
| + | ins MPEG4-Format transcodieren: | ||
| + | # / | ||
| + | |||
| + | ins AVC-Format transcodieren und das Bildformat unverändert lassen: | ||
| + | # / | ||
| + | |||
| + | die schwarzen Balken rundherum abtrennen (das reale Bild hat nur das Format von 704x432): | ||
| + | # / | ||
| + | |||
| + | die schwarzen Balken rundherum abtrennen | ||
| + | und zusätzlich noch verkleinern (das reale Bild wird auf das Format von 540x324 verkleinert): | ||
| + | # / | ||
| + | |||
| + | Das DVB-Format 720x576 in 16/9 wird hier unverändert übernommen, | ||
| + | # / | ||
| + | |||
