FFMPEG Docker Container?


hawihoney

Recommended Posts

Die Suche nach einem Docker Container für FFMPEG bringt immer nur Spezialinstallationen von FFMPEG (Verzeichnisüberwachung, etc.). Was mir fehlt ist eine FFMPEG Installation in einem Container, deren Tools man dann von außerhalb aufrufen und nutzen könnte.

 

Etwas Ähnliches mache ich schon mit diversen Python Scripts und dem MKVToolNix Container:

 

mkvinfo = "docker exec MKVToolNix /usr/bin/mkvinfo"
mkvpropedit = "docker exec MKVToolNix /usr/bin/mkvpropedit"

filename = "/mnt/..."
title_new = "Bla bla"
info = f' --edit info --set "title={title_new}"'
command = f'{mkvpropedit} "{filename}"{info}'
result = os.popen(command).read()

 

 

So etwas suche ich nun für FFMPEG. Dann könnte ich das machen:

 

ffmpeg = "docker exec ffmpeg /usr/bin/ffmpeg"

filename_VC1 = "/mnt/..."
filename_X264 = "/mnt/..."
options = f' -i "{filename_VC1}" -map 0 -scodec copy -acodec copy -vcodec libx264 "{filename_X264}"'
command = f'{ffmpeg}{options}'
result = os.popen(command).read()

 

Vielen Dank.

 

Edited by hawihoney
Link to comment

Ja, OK...ich habe den auch nur ge-googled ;-)

 

Klar feht dem der appdata Pfad, denn er weiss ja nichts von unraid.

Wenn Du da etwas über die Lebenszeit eines Containers hinweg persistieren möchtest, musst Du die Pfade einfach selbt hinzufügen.

 

In dem Link steht ja kurz, wie es geht...der Container ist sozusagen "stageless", zieht den Input via "-i" parameter und schreibt nach stdout:

How to use FFmpeg with Docker
If you don’t have Docker installed yet, follow this guide.
Once Docker is properly setup, it is pretty straightforward to use the FFmpeg image. Instead of using the ffmpeg command line, you call docker to run the opencoconut/ffmpeg image in a container. That’s it!
$ docker run opencoconut/ffmpeg -i http://files.coconut.co.s3.amazonaws.com/test.mp4 -f webm -c:v libvpx -c:a libvorbis - > test.webm

 

Link to comment
12 minutes ago, Ford Prefect said:
docker run opencoconut/ffmpeg

 

Zieht der dann bei jedem Aufruf die 100 MB vom Docker Hub oder liegt das dann irgendwo (wo?) in meinem Docker Subsystem.

 

Meine Skripte werden ffmpeg ein paar tausend mal aufrufen. Das sollte dann schon persistent bei mir liegen.

 

Bin für jeden Einblick dankbar.

 

Link to comment

...wenn das Image schon einmal gezogen wurde, dann eigentlich nicht...dann nimmt Docker standardmässig das lokale....hast Du den schon zweimal aufgerufen?

 

Edit: nö, er nimmt das lokale Image.

 

Edit2: mach einfach mal in der Konsole:

 

  1. docker pull opencoconut/ffmpeg:latest
  2. alias ffmpeg='docker run -v=`pwd`:/tmp/ffmpeg opencoconut/ffmpeg'
  3. ffmpeg -h
  4. -> ...leg eine Datei unter /tmp/ffpeg/<myfile.mp4> ab.
  5. ffmpeg -i <myfile.mp4> out.webm

 

Edit3: OK, dieser *ist* alt.....vielleicht doch mal einen Neuen suchen ;-)

 

Edit4: der sieht noi aus: https://hub.docker.com/r/collelog/ffmpeg

 

Edited by Ford Prefect
Link to comment
10 minutes ago, ich777 said:

Gibt's das nicht im NerdPack?

 

Leider nein.

 

11 minutes ago, ich777 said:

Wäre es nicht für dich einfacher es direkt auf unRAID zu verwenden, brauchst du HW unterstützung von zB Intel oder Nvidia?

 

HW Unterstützung benötige ich nicht. Im Docker Container wäre es auf Grund der vielen Abhängigkeiten bestimmt sicherer als über das Nerd-Pack.

 

Link to comment
11 minutes ago, hawihoney said:

HW Unterstützung benötige ich nicht. Im Docker Container wäre es auf Grund der vielen Abhängigkeiten bestimmt sicherer als über das Nerd-Pack.

Also ich könnte evtl. eine version mit static libraries bauen die keine alle Abhängigkeiten hat wenn du interesse hast... aber das müsste ich mir ansehen, bin mir nicht mehr ganz sicher ob ich das so schnell hin bekomme... :D

Link to comment
38 minutes ago, hawihoney said:

Leider nein.

Grad gefunden, kannst von hier nehmen: Klick

 

cd ~
wget https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-amd64-static.tar.xz
tar -xvf ffmpeg-release-amd64-static.tar.xz
cd ffmpeg-release-amd64-static

 

Wenn du das in einem unRAID terminal ausführst wird FFMPEG static runter geladen in dein root home Verzeichnis und du kannst dann damit machen was immer du willst.

  • Thanks 3
Link to comment

Wechsel in das Verzeichnis mit der input.mkv und führe das aus:

 

docker run --device /dev/dri:/dev/dri -v $(pwd):$(pwd) -w $(pwd) jrottenberg/ffmpeg:vaapi -y -hwaccel vaapi -hwaccel_output_format vaapi -i input.mkv -vcodec vc1_vaapi -acodec copy -b:v 10000K -c:v h264_vaapi output.mp4

 

Oder ersetze $(pwd) gegen absolute Pfade. Der Container stoppt nach einer Konvertierung. Das ist normal. Es gibt viele Container, die man nur pro Job startet. Ist nur in unRAID eher selten anzutreffen.

  • Thanks 2
Link to comment
7 hours ago, hawihoney said:

Angeblich hat der Plex Server upstream ffmpeg drin

 

ja, aber ich meine immer noch eine custom build ... daher nicht zu greifen wenn man jetzt nicht weiß wie die das intern benennen ;)

 

ansonsten sehe ich jetzt in deiner Übersicht keinen Docker wo ffmpeg mit drin ist, mkv's haben das meine ich nicht mit drin.

Link to comment
13 hours ago, mgutt said:

Der Container stoppt nach einer Konvertierung. Das ist normal. Es gibt viele Container, die man nur pro Job startet. Ist nur in unRAID eher selten anzutreffen.

...da würde ein beherztes "-rm" in der Aufrufzeile den Container wieder entfernen, wenn er fertig ist.

Siehe auch oben meinen Alias um das Kommando in ein einfaches "ffmpeg .." umzusetzen.

Link to comment
On 11/23/2021 at 9:29 PM, ich777 said:

Grad gefunden, kannst von hier nehmen: Klick

 

cd ~
wget https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-amd64-static.tar.xz
tar -xvf ffmpeg-release-amd64-static.tar.xz
cd ffmpeg-release-amd64-static

 

Wenn du das in einem unRAID terminal ausführst wird FFMPEG static runter geladen in dein root home Verzeichnis und du kannst dann damit machen was immer du willst.

Hmmm, das ist dann aber nicht Reboot persistent, oder?

Link to comment
38 minutes ago, JoergHH said:

Hmmm, das ist dann aber nicht Reboot persistent, oder?

Nein, aber du kannst es auf einen share legen damit es gespeichert bleibt und persistent ist und es nach /usr/bin linken (wahlweise auch mit Befehl im go file) und dann kannst du ffmpeg direkt über das Terminal oder von einem skript aufrufen.

Link to comment
  • 1 year later...
On 11/23/2021 at 9:29 PM, ich777 said:

Grad gefunden, kannst von hier nehmen: Klick

 

cd ~
wget https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-amd64-static.tar.xz
tar -xvf ffmpeg-release-amd64-static.tar.xz
cd ffmpeg-release-amd64-static

 

Wenn du das in einem unRAID terminal ausführst wird FFMPEG static runter geladen in dein root home Verzeichnis und du kannst dann damit machen was immer du willst.

 

Der Tipp war Gold wert. Brauche ffmpeg nur ab und zu um 5.1 Tonspuren etc runterzurechnen etc. Dafür brauche ich keine große Software wie unmanic etc.

Link to comment
38 minutes ago, darkside40 said:

Der Tipp war Gold wert. Brauche ffmpeg nur ab und zu um 5.1 Tonspuren etc runterzurechnen etc. Dafür brauche ich keine große Software wie unmanic etc.

Aber bitte beachte das Unraid kein Common Purpose Server ist und es eigentlich so gedacht ist das du alles in Docker Containern oder VMs ausführst.

 

Wenn du zB Emby/Jellyfin am laufen hast, hättest du zB ein ffmpeg das du verwenden könntest und müsstest nur dein skript in dem Container ausführen.

 

Deshalb würd ich dir diesen Tip hier ans Herz legen:

 

Vergiss nicht, auf Unraid wird alles als root ausgeführt und das Terminal hat Zugriff auf alles also ist auch die Wahrscheinlichkeit groß das du dir was zerschießt wenn du mal auch nur einen kleinen Fehler machst.

Link to comment

Ich weiss, ich nutze unRaid seit 2011. Aber alles in Docker oder VM's zu packen ist auch nicht immer Sinn der Sache, da die zusätzliche Abstraktionsschicht es nicht einfacher macht.

Wobei man auch sagen muss das unRaid ohne Docker heutzutage wahrscheinlich in der Form garnicht mehr existieren würde. Wenn ich noch daran denke was für ein Akt es war unRaid in Version 4 oder 5 um ein paar grundlegende Linux Programme zu erweitern wird mir heute schlecht.

 

Ohne den super Docker Support würde ich unRaid heute wahrscheinlich garnicht mehr nutzen.

Link to comment
42 minutes ago, darkside40 said:

Ich weiss, ich nutze unRaid seit 2011. Aber alles in Docker oder VM's zu packen ist auch nicht immer Sinn der Sache, da die zusätzliche Abstraktionsschicht es nicht einfacher macht.

Also es gibt doch eigene FFMPEG container und das du einen Pfad da rein mountest ist auch nicht wirklich schwer, gibt es nicht mittlerweile einen FFMPEG container in der CA App?

 

42 minutes ago, darkside40 said:

Wenn ich noch daran denke was für ein Akt es war unRaid in Version 4 oder 5 um ein paar grundlegende Linux Programme zu erweitern wird mir heute schlecht.

Naja, sieh dir auch mal un-get an... ;)

...aber das hab ich nur für Fortgeschrittene User gemacht die wissen was sie tuhen und nicht einfach alles blind installieren, ist ein apt-get Style Paket Manager (ohne Abhängigkeitscheck) der auch andere Slackware repositories einbinden kann.

Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.