Python bindings for ffmpeg libraries

  • Hallo,

    Viele beliebte Mediaplayer (vlc, mpd, mpv usw.) verwenden im Hintergrund die „ffmpeg“-Bibliotheken (z. B. libavcodec).
    Wenn Sie Ihren eigenen Audioplayer in Python oder einer anderen Sprache schreiben, nutzen Sie wahrscheinlich eine Bibliothek, die Ihnen bei der Kommunikation mit einem dieser Player (mpd, vlc, mpv usw.) hilft.

    Die Frage ist, wie schwierig es wäre, statt auf diese Player (mpd usw.) zurückzugreifen, ffmpeg-Bibliotheken über eine Python-Bindung zu verwenden?
    Ich habe mehrere Python-Bindungen für ffmpeg gefunden. Einige von ihnen rufen ffmpeg, ffprobe, ffplay einfach als Unterprozess auf. Einige bieten jedoch echte Bindungen für ffmpeg-Bibliotheken. Zum Beispiel:
    https://github.com/PyAV-Org/PyAV

    Hat jemand Erfahrung mit der Verwendung dieser Art von ffmpeg-Bindungen für die Audiowiedergabe?

    Danke!

    ---------------------------------------------------------------------------------------

    Hi,

    Many popular media players (vlc, mpd, mpv etc) are using the 'ffmpeg' libraries (e.g. libavcodec) behind the scenes.

    If you are writing your own audio player in Python or any other language then more likely you leverage some library which helps you to communicate with one of those players (mpd, vlc, mpv etc).

    The question is how difficult it would be instead of piggy backing on those players (mpd etc) to use ffmpeg libraries through some Python binding?

    I found several Python bindings for ffmpeg. Some of them just invoke ffmpeg, ffprobe, ffplay as a subprocess. But some provide real bindings for ffmpeg libraries. For example:

    https://github.com/PyAV-Org/PyAV

    Does anybody have experience using this kind of ffmpeg bindings for audio playback purposes?

    Thanks!

    Peppy Player Entwickler. Ehemaliger DESY (Hamburg) Entwickler :)

  • Klar, ich habe dieses und andere PyAV-Dokumente durchgelesen und sogar einige Implementierungen überprüft. Ich bin mir also nicht sicher, was du meinst. Meinen Sie damit, dass dieser Wert (Frames/Pakete) für die Audioverwaltung zu niedrig ist? Danke!

    ---------------------------------------------------------------------------------

    Sure, I read through that and other PyAV docs and even checked some implementations. So, I'm not sure what you mean. Do you mean that this is too low level (frames/packets) for managing audio? Thanks!

    Peppy Player Entwickler. Ehemaliger DESY (Hamburg) Entwickler :)

  • Ich meine speziell den dritten Absatz in der README.md

    Quote

    This power does come with some responsibility as working with media is horrendously complicated and PyAV can't abstract it away or make all the best decisions for you. If the ffmpeg command does the job without you bending over backwards, PyAV is likely going to be more of a hindrance than a help.

    Das ist IMHO eine recht direkte Antwort auf Deine Frage wie schwierig das ist die Bibliothek direkt selbst zu benutzen, wenn die Autoren der Anbindung von der direkten Nutzung abraten wenn das Aufrufen von ffmpeg (oder in Deinem Fall wohl ffplay) macht was man braucht.

    Tradition is just peer pressure from dead people.

  • Nun, Sie können den gleichen Text über jede Bibliothek schreiben ;) Und ja, die ffplay-Funktionalität ist das, was ich brauche. Es wurde mithilfe von ffmpeg-Bibliotheken implementiert. Ich sollte wahrscheinlich einfach den Quellcode überprüfen und eine Schlussfolgerung ziehen, ob es sich lohnt, sich mit diesen Bibliotheken zu befassen oder nicht. Der Aufruf von ffplay als Unterprozess ist ein anderer Ansatz, aber ich würde die Verwendung einer direkten Bindung bevorzugen.

    Danke!

    -------------------------------------------------------------

    Well, you can write the same text about any library ;) And yes, the ffplay functionality is what I need. It was implemented using ffmpeg libraries. I should probably just check its source code and make a conclusion if it's worth to deal with those libraries or not. Invoking ffplay as a subprocess is another approach but I would prefer using a direct binding.

    Thanks!

    Peppy Player Entwickler. Ehemaliger DESY (Hamburg) Entwickler :)

  • Hallo,

    Quote

    Der Aufruf von ffplay als Unterprozess ist ein anderer Ansatz, aber ich würde die Verwendung einer direkten Bindung bevorzug

    Dann machen es doch. Wenn sich das später als super Entscheidung rausstellt -> sehr gut. Wenn es sich später als Fehlentscheidung rausstellt -> wegwefen, neu machen. Die Entscheidung muss letztendlich DU treffen.

    ffmpeg kümmert sich in erster Instanz ja um die En-/Dekodierung. Wenn du die Bibliothek in was eigenes einbinden willst, dann muss du dich noch im die Ausgabe und das UI kümmern.

    BTW: es gibt keine Extrapunkte für bilinguale Posts. Auch wenn der deutsche Post relativ offensichtlich maschinell aus dem englischen übersetzt ist -> du brauchst deine Beiträge nicht zusätzlich in englisch posten.

    Gruß, noisefloor

  • Ich kümmere mich bereits um alles (UI usw.), was mit dem Audioplayer zu tun hat. Ich habe mich nur gefragt, ob es möglich ist, den Weg zwischen Player und Audioausgabe zu verkürzen, indem man ffmpeg direkt verwendet. Aber nachdem ich die Quelle des ffplay überprüft habe, bezweifle ich das.

    Die Kopie in englischer Sprache ist hauptsächlich für Suchmaschinen bestimmt. Auch zum Vergleich mit dem Original, falls es bei der Übersetzung zu Fehlern kommen sollte.

    Danke!

    ---------------------------------------------------------------------------------

    I handle everything (UI etc) related to audio player already. I was just wondering if it's possible to shorten the path between player and audio output by using ffmpeg directly. But after checking the source of the ffplay I doubt that.

    The copy in English is mosttly for search engines. Also to compare with original in case there are glitches in translation.

    Thanks!

    Peppy Player Entwickler. Ehemaliger DESY (Hamburg) Entwickler :)

  • Hallo,

    Quote


    Aber nachdem ich die Quelle des ffplay überprüft habe, bezweifle ich das.

    ffply willst du doch eigentlich so oder so nicht verwenden. Zitat aus der Doku: "It is mostly used as a testbed for the various FFmpeg APIs.". Anders ausgedrückt: nicht wirklich für den produktiven Einsatz gedacht.

    Quote

    ob es möglich ist, den Weg zwischen Player und Audioausgabe zu verkürzen,

    ? - wie denn das? Wenn du einen fertigen Player nimmst hast du doch alles bis zur Audioausgabe. Die Aussage macht wenig Sinn. Wenn du ernsthaft an Hilfe interessiert bist, dann solltest du vielleicht mal mit der Sprache rausrücken, was du _wirklich_ vorhast. Im Moment ist das alles hochgradig hypothetisch.

    Gruß, noisefloor

  • ffplay ist ein gutes Beispiel für die Verwendung von ffmpeg-Bibliotheken.

    Der aktuelle Pfad zwischen Player und Audioausgabe sieht so aus:
    Mein Player -> Bibliothek für die Kommunikation mit mpd (oder vlc, mpv) -> mpd -> ffmpeg -> Audioausgabe.

    Die Idee war, einen kürzeren Weg zu verwenden:
    Mein Player -> ffmpeg (durch Bindung) -> Audioausgabe

    Mit freundlichen Grüßen

    --------------------------------------------------------------------------

    ffplay is a good example of using ffmpeg libraries.

    The current path between player and audio output looks like this:

    My player -> library for communication with mpd (or vlc, mpv) -> mpd -> ffmpeg -> audio output.

    The idea was to use a shorter path:

    My player -> ffmpeg (through binding) -> audio output

    Best regards

    Peppy Player Entwickler. Ehemaliger DESY (Hamburg) Entwickler :)

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!