staging.inyokaproject.org

FFmpeg und MPV Versionen der Libraries vergleichen

Status: Gelöst | Ubuntu-Version: Kubuntu 22.04 (Jammy Jellyfish)
Antworten |

trollsportverein

Avatar von trollsportverein

Anmeldungsdatum:
21. Oktober 2010

Beiträge: 5232

Hat jemand von euch eine bessere, leichtere oder übersichtliche und/oder elegantere Methode ge- oder erfunden?

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
diff -y <(ffmpeg -version | grep '^lib' | sort) <(mpv -version | grep -v version | grep 'lib' | sort)

libavcodec     61. 11.100 / 61. 11.100                        |    libavcodec      61.11.100
libavdevice    61.  2.100 / 61.  2.100                        |    libavdevice     61.2.100
libavfilter    10.  2.102 / 10.  2.102                        |    libavfilter     10.2.102
libavformat    61.  5.101 / 61.  5.101                        |    libavformat     61.5.101
libavutil      59. 34.100 / 59. 34.100                        |    libavutil       59.34.100
libpostproc    58.  2.100 / 58.  2.100                        |    libswresample   5.2.100
libswresample   5.  2.100 /  5.  2.100                        |    libswscale      8.2.100
libswscale      8.  2.100 /  8.  2.100                        <

Ich baue den FFmpeg und MPV immer wieder mal selbst, und fand dann Versionen der Libraries vergleichen etwas unbequem, da die Sortierung der Reihenfolge der Libraries bei der "mpv -version" Ausgabe nicht mit der Reihenfolge beim FFmpeg übereinstimmte.

Marantkurz

Anmeldungsdatum:
7. September 2023

Beiträge: 941

In der Richtung?

icdiff <(ffmpeg -version | grep '^lib' | sed 's,/.*,,' | sort) <(mpv -version | grep -v version | grep 'lib' | sort)

Bei dem ffmpeg libs ist noch Leerzeichen drin. Vllt. reicht es auch mit "--show-no-spaces".

libavcodec     60. 31.102                            libavcodec      60.31.102                     
libavdevice    60.  3.100                                                                          
libavfilter     9. 12.100                            libavfilter     9.12.100                      
libavformat    60. 16.100                            libavformat     60.16.100                     
libavutil      58. 29.100                            libavutil       58.29.100                     
libpostproc    57.  3.100                                                                          
libswresample   4. 12.100                            libswresample   4.12.100                      
libswscale      7.  5.100                            libswscale      7.5.100         

–

Für was steht eigentlich bei ffmpeg die Form

lib* x.x.x / x.x.x ?

trollsportverein

(Themenstarter)
Avatar von trollsportverein

Anmeldungsdatum:
21. Oktober 2010

Beiträge: 5232

Noch ein bisschen weiter versucht, und bin nun hierbei gelandet:

diff -y <(ffmpeg -version | grep -v libpostproc | grep "^lib" | sed "s,/.*,," | sed  "s/\\(\. \\)././" | sort) <(mpv -version | grep -v version | grep "lib" | sort)

libavcodec     61.1.100                                       |    libavcodec      61.11.100
libavdevice    61.2.100                                       |    libavdevice     61.2.100
libavfilter    10.2.102                                       |    libavfilter     10.2.102
libavformat    61.5.101                                       |    libavformat     61.5.101
libavutil      59.4.100                                       |    libavutil       59.34.100
libswresample   5.2.100                                       |    libswresample   5.2.100
libswscale      8.2.100                                       |    libswscale      8.2.100

Die libpostproc ist nicht im MPV eingebaut.

Marantkurz schrieb:

Für was steht eigentlich bei ffmpeg die Form

lib* x.x.x / x.x.x ?

Habe keine Ahnung, warum das so ausgegeben wird. ¯\_(ツ)_/¯ Mir geht es nur darum, dass die Versionsnummern der Libraries von FFmpeg und MPV nicht auseinanderlaufen, Für den MPV gibt es übrigens das hier:

Edit: Oh nein, blind wie ich bin, fällt mir erst jetzt auf, dass es Zahlen zu viel entfernt. Hat mal jemand ein paar neue Augen für mich?

Noch ein Edit:

1
2
3
4
5
6
7
8
9
diff -y <(ffmpeg -version | grep -v libpostproc | grep "^lib" | sed "s,/.*,," | sed  "s/\\(\. *\\)/./" | sort) <(mpv -version | grep -v version | grep "lib" | sort)

libavcodec     61.11.100                                      |    libavcodec      61.11.100
libavdevice    61.2.100                                       |    libavdevice     61.2.100
libavfilter    10.2.102                                       |    libavfilter     10.2.102
libavformat    61.5.101                                       |    libavformat     61.5.101
libavutil      59.34.100                                      |    libavutil       59.34.100
libswresample   5.2.100                                       |    libswresample   5.2.100
libswscale      8.2.100                                       |    libswscale      8.2.100

Schöner ist es zwar nicht geworden, aber nun stimmen die Zahlen wieder. 😇

Marc_BlackJack_Rintsch Team-Icon

Ehemalige
Avatar von Marc_BlackJack_Rintsch

Anmeldungsdatum:
16. Juni 2006

Beiträge: 4735

@trollsportverein: Kann Dir das mit dem "/" tatsächlich egal sein? Ich weiss nicht warum das da so ausgegeben wird, aber es macht ja keinen Sinn das so zu machen wenn die beiden Versionen vor und nach dem "/" grundsätzlich immer gleich sind.

Könnte mir vorstellen, dass das eine die Version ist, die beim Kompilieren von ffmpeg vorhanden waren, und das andere die Version, die aktuell tatsächlich auf dem System vorhanden ist. Und dann wäre für Dich ja schon wichtig zu wissen welche davon welche ist, oder?

trollsportverein

(Themenstarter)
Avatar von trollsportverein

Anmeldungsdatum:
21. Oktober 2010

Beiträge: 5232

Marc_BlackJack_Rintsch schrieb:

@trollsportverein: Kann Dir das mit dem "/" tatsächlich egal sein? Ich weiss nicht warum das da so ausgegeben wird, aber es macht ja keinen Sinn das so zu machen wenn die beiden Versionen vor und nach dem "/" grundsätzlich immer gleich sind.

Könnte mir vorstellen, dass das eine die Version ist, die beim Kompilieren von ffmpeg vorhanden waren, und das andere die Version, die aktuell tatsächlich auf dem System vorhanden ist. Und dann wäre für Dich ja schon wichtig zu wissen welche davon welche ist, oder?

Auf der linken Seite ist die Ausgabe der Libraries von FFmpeg zu sehen, auf der rechten Seite die Ausgabe der Libraries von MPV. Die Versionen sind nicht immer unbedingt gleich. Gleich sind sie nur, wenn ich den MPV etwa am gleichen Tag baue, wie den FFmpeg. Würde ich auch nur eine Woche warten, dann stimmen die Versionen der Libraries mit größter Wahrscheinlichkeit nicht überein. Oft sogar schon nicht mal mehr am nächsten Tag. Sieht man ja auch, wie rasant die Entwicklung bei FFmpeg vorangeht:

Das mpv-build baut sich seinen eignen internen FFmpeg, ganz egal und unabhängig davon, ob man zuvor gerade einen frischen FFmpeg gebaut und installiert hat. Ich mag es aber trotzdem nicht, wenn die Libraries nicht Versionsgleichstand haben. Funktionieren tut das normalerweise auch wenn die Versionen nicht gleich sind.

Edit: Etwas mehr verbose - der interne FFmpeg vom MPV wird mit dem Schalter "--enable-static" gebaut. Das macht das mpv-build so. Daher liegen die Libraries vom MPV, nach deren Version ich schaue, auch nicht sichtbar im Dateisystem herum. Der FFmpeg fürs System ist hingegen mit dem "--disable-static" Schalter gebaut.

Marc_BlackJack_Rintsch Team-Icon

Ehemalige
Avatar von Marc_BlackJack_Rintsch

Anmeldungsdatum:
16. Juni 2006

Beiträge: 4735

@trollsportverein: Ich glaube wir reden aneinander vorbei. Was Du da schreibst ist mir alles klar. Ich rede von den Versionsnummer links und rechts vom "/" bei ffmpeg wo Du die rechts vom "/" einfach ignorierst. Warum ist das okay das zu tun? Was bedeuten die?

trollsportverein

(Themenstarter)
Avatar von trollsportverein

Anmeldungsdatum:
21. Oktober 2010

Beiträge: 5232

Marc_BlackJack_Rintsch schrieb:

@trollsportverein: Ich glaube wir reden aneinander vorbei. Was Du da schreibst ist mir alles klar. Ich rede von den Versionsnummer links und rechts vom "/" bei ffmpeg wo Du die rechts vom "/" einfach ignorierst. Warum ist das okay das zu tun? Was bedeuten die?

Links sind die, die der FFmpeg benutzt. Die liegen auch sichtbar im Dateisystem:

porg -fs ffmpeg | grep .so

  23  /usr/lib/x86_64-linux-gnu/libavcodec.so
  23  /usr/lib/x86_64-linux-gnu/libavcodec.so.61
 15M  /usr/lib/x86_64-linux-gnu/libavcodec.so.61.11.100
  23  /usr/lib/x86_64-linux-gnu/libavdevice.so
  23  /usr/lib/x86_64-linux-gnu/libavdevice.so.61
210k  /usr/lib/x86_64-linux-gnu/libavdevice.so.61.2.100
  23  /usr/lib/x86_64-linux-gnu/libavfilter.so
  23  /usr/lib/x86_64-linux-gnu/libavfilter.so.10
 12M  /usr/lib/x86_64-linux-gnu/libavfilter.so.10.2.102
  23  /usr/lib/x86_64-linux-gnu/libavformat.so
  23  /usr/lib/x86_64-linux-gnu/libavformat.so.61
2.8M  /usr/lib/x86_64-linux-gnu/libavformat.so.61.5.101
  22  /usr/lib/x86_64-linux-gnu/libavutil.so
  22  /usr/lib/x86_64-linux-gnu/libavutil.so.59
1.1M  /usr/lib/x86_64-linux-gnu/libavutil.so.59.34.100
  23  /usr/lib/x86_64-linux-gnu/libpostproc.so
  23  /usr/lib/x86_64-linux-gnu/libpostproc.so.58
 86k  /usr/lib/x86_64-linux-gnu/libpostproc.so.58.2.100
  24  /usr/lib/x86_64-linux-gnu/libswresample.so
  24  /usr/lib/x86_64-linux-gnu/libswresample.so.5
130k  /usr/lib/x86_64-linux-gnu/libswresample.so.5.2.100
  21  /usr/lib/x86_64-linux-gnu/libswscale.so
  21  /usr/lib/x86_64-linux-gnu/libswscale.so.8
662k  /usr/lib/x86_64-linux-gnu/libswscale.so.8.2.100

Rechts sind die, die statisch im MPV-Binary drin sind.

Marc_BlackJack_Rintsch Team-Icon

Ehemalige
Avatar von Marc_BlackJack_Rintsch

Anmeldungsdatum:
16. Juni 2006

Beiträge: 4735

@trollsportverein: Nein. Rechts sind nicht die von mpv. Warum sollte ffmpeg die Anzeigen?

trollsportverein

(Themenstarter)
Avatar von trollsportverein

Anmeldungsdatum:
21. Oktober 2010

Beiträge: 5232

Marc_BlackJack_Rintsch schrieb:

@trollsportverein: Nein. Rechts sind nicht die von mpv. Warum sollte ffmpeg die Anzeigen?

Weil das die "diff -y" Ausgabe ist, die die Versionsausgaben von FFmpeg und MPV vergleicht.

Marc_BlackJack_Rintsch Team-Icon

Ehemalige
Avatar von Marc_BlackJack_Rintsch

Anmeldungsdatum:
16. Juni 2006

Beiträge: 4735

@trollsportverein: Von der Ausgabe spreche ich nicht. Ich spreche von der wo es Versionsnummern rechts und links von einem "/" gibt. In der diff-Ausgabe ist nirgens ein "/". Egal. Hoffen wir einfach das es egal ist welche der beiden Versionsnummern man nimmt, und bei beiden das gewünschte Ergebnis heraus kommt, auch wenn die mal nicht gleich sein sollten…

trollsportverein

(Themenstarter)
Avatar von trollsportverein

Anmeldungsdatum:
21. Oktober 2010

Beiträge: 5232

Dann schau Dir doch mal an, wo die Ausgabe von FFmpeg auftaucht, und wo die Ausgabe von MPV:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
diff -y <(ffmpeg -version) <(mpv -version)

ffmpeg version N-116756-gcfe0a36352 Copyright (c) 2000-2024 t | mpv v0.38.0-717-g92f052c14e Copyright © 2000-2024 mpv/MPlayer
built with gcc 14 (Ubuntu 14-20240412-0ubuntu1)               |  built on Aug 23 2024 09:31:51
configuration: --prefix=/usr --toolchain=hardened --libdir=/u | libplacebo version: v7.349.0 (v7.349.0-5-g82bf46ae)
libavutil      59. 34.100 / 59. 34.100                        | FFmpeg version: N-116756-gcfe0a36352
libavcodec     61. 11.100 / 61. 11.100                        | FFmpeg library versions:
libavformat    61.  5.101 / 61.  5.101                        |    libavcodec      61.11.100
libavdevice    61.  2.100 / 61.  2.100                        |    libavdevice     61.2.100
libavfilter    10.  2.102 / 10.  2.102                        |    libavfilter     10.2.102
libswscale      8.  2.100 /  8.  2.100                        |    libavformat     61.5.101
libswresample   5.  2.100 /  5.  2.100                        |    libavutil       59.34.100
libpostproc    58.  2.100 / 58.  2.100                        |    libswresample   5.2.100
                                                              >    libswscale      8.2.100

Das ist beides heute gebaut, daher Gleichstand bei den Libraries Versionen. Das wird sich aber voraussichtlich innerhalb kurzer Zeit ändern, wenn ich nur eines von beiden baue. So jedenfalls meine Erfahrung mit der Entwicklungsgeschwindigkeit.

Marc_BlackJack_Rintsch Team-Icon

Ehemalige
Avatar von Marc_BlackJack_Rintsch

Anmeldungsdatum:
16. Juni 2006

Beiträge: 4735

@trollsportverein: Das weiss ich alles. Das beantwortet immer noch nicht die Frage warum es okay ist eine von den *drei* Versionsnummern pro Bibliothek, nämlich — und hier wiederhole ich mich wieder — die rechts vom "/", einfach zu ignorieren. Was bedeutet die, beziehungsweise auch die andere, und ist es tatsächlich egal welche man nimmt, oder muss man die vor dem "/" nehmen, und wenn ja, warum?

Marantkurz

Anmeldungsdatum:
7. September 2023

Beiträge: 941

@trollsportverein

Auf das will @Marc_BlackJack_Rintsch die ganze Zeit hinaus:

lib* x.x.x / x.x.x ?

Nimmt ja kein Ende.

–

Gibts eigentlich Erfolge zu berichten? Kannst Du jetzt damit Westfernsehen sehen? 😎 Bin neugierig.

trollsportverein

(Themenstarter)
Avatar von trollsportverein

Anmeldungsdatum:
21. Oktober 2010

Beiträge: 5232

Marantkurz schrieb:

@trollsportverein

Auf das will @Marc_BlackJack_Rintsch die ganze Zeit hinaus:

lib* x.x.x / x.x.x ?

Nimmt ja kein Ende.

Warum sollte man sich daran so dermaßen verbeißen? Ist doch albern. Die Versionsnummern der FFmpeg Libraries werden seit vielen Jahren so doppelt angezeigt. Warum auch immer. ¯\_(ツ)_/¯ Dabei sind die Versionsnummern der Libraries links und rechts vom Schrägstrich in der Ausgabe von "ffmpeg -version" auch seit Jahren immer identisch.

Falls das jemand als das letzte Rätsel der Menschheit weiter erforschen möchte, bitteschön. Aber ich habe nicht vor, damit Zeit zu verschwenden.

Gibts eigentlich Erfolge zu berichten? Kannst Du jetzt damit Westfernsehen sehen? 😎 Bin neugierig.

Fernsehen? Igitt! Geh weg. Aber den Nachfolger von H.265 kann der selbstgebaute FFmpeg nun.

ffmpeg -hide_banner -codecs | grep vvc

 DEV.L. vvc                  H.266 / VVC (Versatile Video Coding) (decoders: vvc vvc_qsv) (encoders: libvvenc)

Und mehr Performance bei AV1 gibts auch:

trollsportverein

(Themenstarter)
Avatar von trollsportverein

Anmeldungsdatum:
21. Oktober 2010

Beiträge: 5232

Ich setze das jetzt mal auf gelöst. Die Rätselaufgabe, warum FFmpeg seine Libraries doppelt und mit einem Schrägstrich in seiner Versionsausgabe anzeigt, die Marantkurz und Marc_BlackJack_Rintsch mir doch ganz gerne aufs Auge gedrückt hätten, bleibt bislang ungelöst. ¯\_(ツ)_/¯ Tut aber für den Lib-Versionsvergleich zwischen FFmpeg mit seinen shared Libs und MPV mit seinen statisch eingebundenen nichts zur Sache. 😇

Ihr könnt ja trotzdem gerne weiter posten, wenn noch was dazu einfällt.

Antworten |