Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 12

Thema: ffmpeg - libx264

  1. #1
    Tripel-As
    Registriert seit
    14. December 2011
    Beiträge
    231

    Standard ffmpeg - libx264

    Hallo,

    Ich habe hier eine AVI-Datei mit den Format Video:1920x1080p,16:9,59.950fps (60000/1001) 4:2:2,JPEG Audio: 48.0 kHz,24bit,2 channel,PCM(Little). Das zeigt mir jedenfalls Mediainfo an.

    Ich möchte daraus ein MKV machen. Vorlage soll sein:
    x264 -crf 18 --preset slow --tune film --bluray-compat --vbv-maxrate 40000 --vbv-bufsize 30000 --level 4.1 --keyint 24 --open-gop --slices 4 --colorprim "bt709" --transfer "bt709" --colormatrix "bt709" --sar 1:1 --pass 1 -o out.264 input.file

    Das ganze soll mit ffmpeg unter "Linux-Mint 18.1 Mate 64bit" ausgeführt werden, mit gleichtzeitiger Audioverarbeitung PCM -> AC3 als Resultat mkv.

    Die Anleitungen die mit google zu finden sind erschlagen mich, wiedersprechen sich und sind total unterschiedlich. Liegt wohl daran das ffmpeg unterschiedlich kompiliert werden kann. Hab ich so mit meinem rudimentären Englisch verstanden. Ich blick da nicht mehr durch bei ffmpeg mit seinen gefühlten 1000 Optionen.

    1. Wo bekommt man ein aktuelles ffmpeg her OHNE selbst kompilieren zu müssen. Mir graut es vor den Abhängigkeiten und deren Abhänigkeiten die für's Kompilieren notwendig sind. In der Paketverwaltung ist wie so häufig nur eine alte Version verfügbar die keine "shuffleframes" unterstützt.

    2. Wie muß die ffmpeg Befehlszeile aussehen ?

    Ich hab mir hier ein Beispiel zusammengefrickelt:
    ffmpeg -i input.avi -vf shuffleframes="0 -1 -1 1 -1" -c:v libx264 -level 41 -preset slow -crf 18 -g 24 -threads 8 -x264opts bluray-compat=1:vbv-bufsize=30000:vbv-maxrate=40000 -c:a ac3_fixed -ar 48000 -ab 256k -y output.mkv

    In manchen Beispielen wird "libx264" in der Befehlszeile weggelassen, wird "-x264opts" verwendet oder auch nicht, wird "x264-params" verwendet oder auch nicht. Ich blick auch hier nicht mehr durch.
    Mir ist auch nicht klar ob das 24bit PCM erst nach 16bit gewandelt werden muß um nach AC3 encodet zu werden.

    Wäre sehr dankbar dafür wenn mich jemand aufzuklären würde.

    Gruß ggrub

  2. #2
    . Avatar von Selur
    Registriert seit
    19. April 2003
    Ort
    underground
    Beiträge
    24.710

    Standard AW: ffmpeg - libx264

    zu 1.: https://launchpad.net/~jonathonf/+ar...buntu/ffmpeg-3 hat immer ne relativ aktuelle Version (meist neuer als 1 Monat). Wirklich up-to-date kriegt man nur wenn man selber compiliert.
    zu 2: 'x264opts' ist alt und wurde durch 'x264-params' ersetzt. => Man sollte heutzutage 'x264-params' verwenden.
    Der PCM Ton sollte von ffmpeg automatisch nach 16bit beim Umwandeln nach ac3 konvertiert werden.
    In der Paketverwaltung ist wie so häufig nur eine alte Version verfügbar die keine "shuffleframes" unterstützt.
    Dabei ist 'shuffleframes' seit 3.0 (2016-02-14) fest in ffmpeg drinnen,...

    Cu Selur

  3. #3
    Tripel-As
    Registriert seit
    14. December 2011
    Beiträge
    231

    Standard AW: ffmpeg - libx264

    Schau's dir an:

    Code:
    $ ffmpeg -version
    ffmpeg version 2.8.11-0ubuntu0.16.04.1 Copyright (c) 2000-2017 the FFmpeg developers
    built with gcc 5.4.0 (Ubuntu 5.4.0-6ubuntu1~16.04.4) 20160609
    Original aus der Paketverwaltung (Repository). Selbstverständlich nach einem "apt update/upgrade".

    Ok, aber woher weiß man denn was hinter "libx264" und was hinter "x264-params" eingetragen werden muß ?

  4. #4
    Erklär-Bär Avatar von LigH
    Registriert seit
    19. April 2003
    Ort
    OPAL-Invalidengebiet Altmark
    Alter
    42
    Beiträge
    42.430

    Standard AW: ffmpeg - libx264

    Es gibt ein paar x264-Parameter, die als ffmpeg-Parameter "durchgereicht" werden, das kann man sich eventuell aus der ausführlichen Hilfe-Ausgabe zusammenreimen. Beispielsweise unterstützt ffmpeg Angaben zur (mittleren Ziel-) Bitrate oder übergeordneter Preset-Namen als Steuermöglichkeit für eine Vielzahl von Encodern.

    Code:
    ffmpeg -version 2> ffmpeg.txt
    ffmpeg -h full >> ffmpeg.txt
    Im Abschnitt "AVCodecContext AVOptions:" stehen alle Parameter, die für beliebige Codecs mehr oder weniger unterstützt werden.

    Im Anschnitt "libx264 AVOptions:" stehen alle libx264-Optionen, die ffmpeg als eigene Parameter veröffentlicht, die also nicht in "-x264opts ..." angehängt werden müssen.

    Für Windows ist eine eigene Compilierung übrigens gar nicht so schwer, dafür wird die media-autobuild_suite regelmäßig gepflegt; unter Linux weiß ich leider nicht, wie gut da die Pflege ähnlicher Projekte ist, aber in der Dokumentation der MABS werden Quellen erwähnt, von denen man sich hat inspirieren lassen... Vielleicht reichen ja relativ geringe Änderungen an der MABS, dass sie nicht für eine MSYS-Umgebung, sondern für ein echtes Linux compiliert und installiert.
    Geändert von LigH (20. August 2017 um 14:08 Uhr)

    Auf gute Zusammenarbeit:

    REGELN befolgen | SUCHE benutzen | FAQ lesen | STICKIES beachten




  5. #5
    Tripel-As
    Registriert seit
    14. December 2011
    Beiträge
    231

    Standard AW: ffmpeg - libx264

    Im Anschnitt "libx264 AVOptions:" stehen alle libx264-Optionen, die ffmpeg als eigene Parameter veröffentlicht, die also nicht in "-x264opts ..." angehängt werden müssen.
    Und genau das hab ich nicht kapiert. Jetzt isses mir klar, danke.

    Es steht geschrieben:
    9.148 shuffleframes

    Reorder and/or duplicate and/or drop video frames.
    It accepts the following parameters:
    mappingSet the destination indexes of input frames. This is space or ’|’ separated list of indexes that maps input frames to output frames. Number of indexes also sets maximal value that each index may have. ’-1’ index have special meaning and that is to drop frame.
    The first frame has the index 0. The default is to keep the input unchanged.
    9.148.1 Examples


    • Swap second and third frame of every three frames of the input: ffmpeg -i INPUT -vf "shuffleframes=0 2 1" OUTPUT
    • Swap 10th and 1st frame of every ten frames of the input: ffmpeg -i INPUT -vf "shuffleframes=9 1 2 3 4 5 6 7 8 0" OUTPUT
    Jetzt hab ich ein progressives 59.950fps mjpeg-avi dessen Urspung 23.976fps ist. Da wurden einfach abwechselnd die Frames verdoppelt und verdreifacht. Nun will ich mit ffmpeg daraus wieder 23.976fps machen. Sollte ja mit "shuffleframes gehen. "Selurs" Hybrid bekommt das hin. Da wird mit ffmpeg eingelesen und nach x264 ge(pipe)t. Das sollte doch dann eigentlich auch nur mit ffmpeg hinzubiegen sein, oder ?

    Warum funktioniert das nicht mit:
    Code:
    ffmpeg -i input.avi -vf "shuffleframes=-1 1 -1 3 -1" -c:v libx264 -preset slow -tune film -profile:v high -level 41 -crf 18 -pix_fmt yuv420p -c:a ac3 -ar 48000 -ab 256k -y ~/output.mkv
    Der erste Frame hat Index 0, und wenn ich nun Frame 2 + 4 nehme, und das alle 5 Frames passiert, sollten doch 23.976 erreicht werden. Da passiert aber nix. Eine Fehlermeldung erscheint auch nicht. Das resultirende mkv-Video hat nach wie vor 59.950fps. Warum ?

  6. #6
    Kaiser
    Registriert seit
    6. July 2009
    Beiträge
    1.293

    Standard AW: ffmpeg - libx264

    Da müssen vermutlich neue Timestamps generiert werden, also irgendwie mit setpts oder so. Weiß jetzt aber auch nicht wirklich wie, mache so etwas über AviSynth o.ä.

    Mit shuffleframes wäre ich vorsichtig. Wenn das Muster nicht 100% durch die ganze Datei paßt, wird es ruckeln.
    Geändert von sneaker2 (20. August 2017 um 18:10 Uhr)

  7. #7
    . Avatar von Selur
    Registriert seit
    19. April 2003
    Ort
    underground
    Beiträge
    24.710

    Standard AW: ffmpeg - libx264

    1. sollte es nicht statt:
    Code:
    shuffleframes=-1 1 -1 3 -1
    eher:
    Code:
    shuffleframes=-1 0 -1 1 -1
    sein?
    2. '-r 23.976' muss vermutlich auch noch in den Aufruf (irgendwo hinter der Quelle, nicht vor der Quelle).
    3. sneaker2 hat recht wenn das Pattern nicht durch den ganzen Clip geht wäre man mit Avisynth/Vapoursynth und sRestore&Co besser beraten.

    Cu Selur

  8. #8
    Tripel-As
    Registriert seit
    14. December 2011
    Beiträge
    231

    Standard AW: ffmpeg - libx264

    Mein Englisch ist zwar nur rudimentär, aber "shuffleframes=-1 1 -1 3 -1" ist richtig, habe es gestern ausführlich getestet. Das Video wurde sauber wiedergegeben. ffmpeg hat aber noch ein paar andere Eigenarten auf die ich aber jetzt hier nicht eingehen will.
    Avisynth unter Linux geht nicht, auf WINE-Gefrickel verzichte ich lieber. Und Vapoursynth tu ich mir NICHT an. Das Thema hatten wir ja schon. Da bleibt dann kaum noch was übrig um von 59.950 auf 23.976 zu kommen.
    Und ja, es ist mir bei einem Video passiert das mitten im Film die Ruckelei anfing weil da eine Störung vorhanden war. "shuffleframes" ist halt nicht optimal für mein Vorhaben, aber halt die einzige Variante.

    Ich wollte ja dazu das ffmpeg Equivalent schaffen:
    Code:
    x264 -crf 18 --preset slow --tune film --bluray-compat --vbv-maxrate  40000 --vbv-bufsize 30000 --level 4.1 --keyint 24 --open-gop --slices 4  --colorprim "bt709" --transfer "bt709" --colormatrix "bt709" --sar 1:1  --pass 1 -o out.264 input.file
    ... und das sieht jetzt unter ffmpeg so aus:

    Code:
    ffmpeg -y -threads 8 -ss 00:00:00.016 -i "input.avi" -to 00:52:59.826 -vf shuffleframes="-1 1 -1 3 -1" -c:v libx264 -preset medium -tune film -profile:v baseline -level 4.1 -crf 18 -pix_fmt yuvj420p -g 24 -bluray-compat 1 -flags cgop -sar 1:1 -r 24000/1001 -slices 4 -nal-hrd vbr -x264-params vbv-maxrate=40000:vbv-bufsize=30000 -color_primaries 1 -color_trc 1 -colorspace 1 -c:a ac3 -ar 48000 -ab 256k /output.mkv
    Und wie man sieht ist auch zusätzlich framegenauer Schnitt möglich, da ja das AVI quasi nur I-Frames hat. Es hat bisher einwandfrei funktioniert, Video/Audio sind/waren syncron. Hab mir gestern 2 Videos angeschaut.

    Noch mal die Frage an Selur, ob man nicht doch diese CUT Möglichkeit für AVI's ohne Vorschau in Hybrid einbauen könnte. Wenn ich mir als Unwissender vorstelle in der ffmpeg Kommandozeile einfach "-ss xx:xx:xx.xxx" und "-to xx:xx:xx.xxx" über eine Maske (vielleicht da wo die Eingabe der "shuttleframes" ist) einzubauen, das sollte doch machbar sein. Stelle mich zum Testen gerne zur Verfügung

  9. #9
    Erklär-Bär Avatar von LigH
    Registriert seit
    19. April 2003
    Ort
    OPAL-Invalidengebiet Altmark
    Alter
    42
    Beiträge
    42.430

    Standard AW: ffmpeg - libx264

    Bei Intra-Only-AVIs geht das; bei Videos mit effizienten Codecs kann aber der Schnittpunkt an der nächstmöglichen Stelle liegen, die evtl. mehrere Sekunden weit weg liegt. Und dann fangen die Nutzer ohne jegliches Halbwissen wieder mit Jammern an, dass das Programm totaaaal buggggyyyy ist.

    Auf gute Zusammenarbeit:

    REGELN befolgen | SUCHE benutzen | FAQ lesen | STICKIES beachten




  10. #10
    Tripel-As
    Registriert seit
    5. March 2009
    Beiträge
    224

    Standard AW: ffmpeg - libx264

    Zitat Zitat von GGRUB Beitrag anzeigen
    "shuffleframes" ist halt nicht optimal für mein Vorhaben, aber halt die einzige Variante.

    Code:
    ffmpeg -y -threads 8 -ss 00:00:00.016 -i "input.avi" -to 00:52:59.826 -vf shuffleframes="-1 1 -1 3 -1" -c:v libx264 -preset medium -tune film -profile:v baseline -level 4.1 -crf 18 -pix_fmt yuvj420p -g 24 -bluray-compat 1 -flags cgop -sar 1:1 -r 24000/1001 -slices 4 -nal-hrd vbr -x264-params vbv-maxrate=40000:vbv-bufsize=30000 -color_primaries 1 -color_trc 1 -colorspace 1 -c:a ac3 -ar 48000 -ab 256k /output.mkv
    Schau dir mal die ffmpeg Filter dejudder,fieldmatch,decimate, pullup usw ... an.

    -profile:v baseline -pix_fmt yuvj420p

    die würde ich nur setzen, wenn du weisst, das du tust.

Seite 1 von 2 12 LetzteLetzte

Aktive Benutzer

Aktive Benutzer

Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)

Ähnliche Themen

  1. ffmpeg und Huffyuv,...
    Von Selur im Forum Alternative A/V-Container und -Formate
    Antworten: 1
    Letzter Beitrag: 22. June 2014, 09:53
  2. FFMPEG m4v -> mp4 == Ruckeln...
    Von 3ds im Forum MPEG-4-Encoding
    Antworten: 8
    Letzter Beitrag: 4. April 2014, 12:39
  3. ffmpeg CBR MP3
    Von TS1234 im Forum Audio – Bearbeitung und Konvertierung
    Antworten: 3
    Letzter Beitrag: 11. November 2009, 00:15
  4. Ffmpeg svn ?
    Von AnImeFaN1991 im Forum MPEG-4-Encoding-Tools
    Antworten: 5
    Letzter Beitrag: 9. December 2008, 11:26
  5. libx264 in c++ nutzen,...?
    Von Selur im Forum Software-Entwicklung
    Antworten: 27
    Letzter Beitrag: 1. October 2008, 18:02

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •