# [Managed Server] ffmpeg verwenden

## Finswimmer

Hi!

Ich habe einen Managed Server bei 1&1. Nun soll ich da für einen Kunden Videos umwandeln.

Per ffmpeg schaffe ich das auch ohne Probleme - lokal.

Leider ist es so, dass ich keinen Schreibzugriff auf alle Verzeichnisse habe. So kann ich zwar in einem bestimmten Verzeichnis Dateien ausführen, aber die Libs bekomme ich nicht dahin, wo ich sie haben muss: /usr/lib, /lib

Wenn ich USE="static" emerge ffmpeg -av1 mache, dann ldd /usr/bin/ffmpeg:

```
linux-gate.so.1 =>  (0xffffe000)

        libavformat.so.51 => /usr/lib/libavformat.so.51 (0xb7e92000)

        libavcodec.so.51 => /usr/lib/libavcodec.so.51 (0xb7ab9000)

        libavutil.so.49 => /usr/lib/libavutil.so.49 (0xb7aae000)

        libm.so.6 => /lib/libm.so.6 (0xb7a88000)

        libswscale.so.0 => /usr/lib/libswscale.so.0 (0xb7a67000)

        libc.so.6 => /lib/libc.so.6 (0xb7931000)

        libz.so.1 => /lib/libz.so.1 (0xb791d000)

        libogg.so.0 => /usr/lib/libogg.so.0 (0xb7917000)

        libdl.so.2 => /lib/libdl.so.2 (0xb7913000)

        libX11.so.6 => /usr/lib/libX11.so.6 (0xb7822000)

        libXext.so.6 => /usr/lib/libXext.so.6 (0xb7813000)

        libmp3lame.so.0 => /usr/lib/libmp3lame.so.0 (0xb77a2000)

        libvorbis.so.0 => /usr/lib/libvorbis.so.0 (0xb7777000)

        libvorbisenc.so.2 => /usr/lib/libvorbisenc.so.2 (0xb767d000)

        /lib/ld-linux.so.2 (0xb7f21000)

        libXau.so.6 => /usr/lib/libXau.so.6 (0xb7679000)

        libXdmcp.so.6 => /usr/lib/libXdmcp.so.6 (0xb7673000)
```

Hilft also leider nichts. Nun ist die Frage, wie schaffe ich eine static linked ffmpeg Version?

Oder wie mache ich das sonst?

Danke

Tobi

----------

## blu3bird

Hi,

hier die Lösungen dir mir einfallen, der Reihe nach sortiert wie ich sie probieren würde:

1. Den Hoster bitten ffmeg zu installieren(er managt das Ding ja schließlich für Dich)

2. Ffmpeg statisch kompilieren

```
source /etc/make.conf

export CFLAGS+=" -static -static-libgcc"

export USE+=" -X -v4l -xvid -aac"

ebuild /usr/portage/media-video/ffmpeg/ffmpeg-0.4.9_p20070616-r2.ebuild compile

cd /var/tmp/portage/media-video/ffmpeg-0.4.9_p20070616-r2/work/ffmpeg

rm ffmpeg ffmpeg_g

cp config.mak config.mak.bak

sed -e 's/^LDFLAGS=/LDFLAGS=-static -static-libgcc /' config.mak.bak > config.mak

make

cp ffmpeg /meinserver/home/meinuser/ffmpeg

```

(Falls Du eine der oben deaktivierten Use-Flags benutzen willst, ist das statisch kompilieren "ein bisschen" aufwendiger...)

3. Dynamisch gelinktes ffmpeg benutzen und den Ort der Bibliotheken mit LB_LIBRARY_PATH angeben

```
cp /usr/bin/ffmpeg /meinserver/home/meinuser/ffmpeg/ffmpeg

for lib in "alle benötigten libs"

do

  cp $lib /meinserver/home/meinuser/ffmpeg/

done

cat > /meinserver/home/meinuser/ffmpeg/ffmpeg.sh << EOF

#!/bin/bash

export LD_LIBRARY_PATH="/meinserver/home/meinuser/ffmpeg"

./ffmpeg $*

EOF

chmod a+x ffmpeg.sh
```

----------

## Finswimmer

 *blu3bird wrote:*   

> Hi,
> 
> hier die Lösungen dir mir einfallen, der Reihe nach sortiert wie ich sie probieren würde:
> 
> 3. Dynamisch gelinktes ffmpeg benutzen und den Ort der Bibliotheken mit LB_LIBRARY_PATH angeben
> ...

 

So...

Das scheint zu gehen  :Very Happy: 

Hatte es vorhin mit $LDPATH getestet, aber das wollte nicht so, wie ich es wollte.

Hab es eben auf dem Server getestet.

Leider scheint es so zu sein, dass, wenn ich export LD... mache, dann geht "ls" nicht mehr.

Irgendwie motzt ld rum. Kann es sein, dass da irgendwie noch was rumpfuscht?

Obwohl die Variable vorher leer war.

Inwieweit stört der verschiedene Prozessor?

Das eine ist ein Pentium M (damit lokal die Datei gebaut), das andere ein AMP Opteron.

Kann ich das nicht irgendwie temporär nur für diese Aufruf übergeben?

Es soll nach Möglichkeiten nichts am System ändern.

Chroot geht halt leider nicht, da ich keine Root Rechte habe.

EDIT:

Static Link hat nun geklappt  :Very Happy: 

Nun fehlen mir natürlich gewisse (alle UseFlags). Da das Ding aber wirklich *alle* Videos nach Flash wandeln soll, brauche ich das Ganze.

Wenn es Arbeit macht...Kein Problem. Ich muss nur wissen wie  :Wink: 

Tausend Dank  :Smile: 

Tobi

Danke  :Very Happy: 

Tobi

----------

## Finswimmer

*bump*

EDIT: 

 Static Link hat nun geklappt  :Very Happy: 

 Nun fehlen mir natürlich gewisse (alle UseFlags). Da das Ding aber wirklich *alle* Videos nach Flash wandeln soll, brauche ich das Ganze. 

 Wenn es Arbeit macht...Kein Problem. Ich muss nur wissen wie  :Wink: 

Wie schaut das aus? Ich will ja alles nach Flash wandeln, braucht man da wirklich alle Use Flags? Oder bedeuten die Flags, dass das die Zielformate sind?

Danke

Tobi

----------

## schachti

 *Finswimmer wrote:*   

> Wie schaut das aus? Ich will ja alles nach Flash wandeln, braucht man da wirklich alle Use Flags? Oder bedeuten die Flags, dass das die Zielformate sind?

 

Setzen musst Du USE flags meiner Meinung nach für die Formate, die Du lesen oder schreiben möchtest.

----------

## Finswimmer

 *blu3bird wrote:*   

> 2. Ffmpeg statisch kompilieren
> 
> ```
> source /etc/make.conf
> 
> ...

 

So. Nun habe ich das Problem, dass ich ein paar USE-Flags unbedingt brauche. Konkret sind das tiff, jpeg,jpeg2k bei ImageMagick.

Mir würde schon eine Ansatzmöglichkeit reichen.

Danke!

Tobi

----------

## Finswimmer

*bump*

----------

