FFMPEG Problem

cobrastyle

New Member
Hallo,

FFMPEG macht mir Probleme.

Das Problem ist das ich nach der Konvertierung eines Videos kein Bild habe, Ton ist allerdings da.
Das passiert nur wenn ich das Script über meine Website ausführe.
Wenn ich in der Konsole Konvertiere ist das Video viel größer und hat auch bild.

Auf meiner Website führe ich den Befehl so aus.
PHP:
if ($format == "mp4") {
system("ffmpeg -i /var/www/cache/$id -sameq -ar 22050 /var/www/cache/$id.$format");
}

Leider habe ich eben kein Bild. Wenn ich das Video über meine Website in das Format 3GP Konvertiere habe ich auch Bild...

Zum Konvertieren in der Konsole nutze ich den selben Code wie in meinem Script...

Code:
root@vserver:/var/www/cache# ffmpeg -i imput.flv -sameq -ar 22050 output.mp4
ffmpeg version 0.7.11, Copyright (c) 2000-2011 the FFmpeg developers
  built on Jan 28 2012 01:15:07 with gcc 4.4.5
  configuration: --enable-libdc1394 --prefix=/usr --extra-cflags='-Wall -g ' --cc='ccache cc' --enable-shared --enable-libmp3lame --enable-gpl --enable-libvorbis --enable-pthreads --enable-libfaac --enable-libxvid --enable-postproc --enable-x11grab --enable-libgsm --enable-libtheora --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libx264 --enable-libspeex --enable-nonfree --disable-stripping --enable-avfilter --enable-libdirac --disable-decoder=libdirac --enable-libschroedinger --disable-encoder=libschroedinger --enable-version3 --enable-libopenjpeg --enable-libvpx --enable-librtmp --extra-libs=-lgcrypt --disable-altivec --disable-armv5te --disable-armv6 --disable-vis
  libavutil    50. 43. 0 / 50. 43. 0
  libavcodec   52.123. 0 / 52.123. 0
  libavformat  52.111. 0 / 52.111. 0
  libavdevice  52.  5. 0 / 52.  5. 0
  libavfilter   1. 80. 0 /  1. 80. 0
  libswscale    0. 14. 1 /  0. 14. 1
  libpostproc  51.  2. 0 / 51.  2. 0
[matroska,webm @ 0xe9b2e0] Estimating duration from bitrate, this may be inaccurate
Input #0, matroska,webm, from 'input.flv':
  Duration: 00:02:51.63, start: 0.000000, bitrate: N/A
    Stream #0.0: Video: vp8, yuv420p, 854x480, PAR 1:1 DAR 427:240, 30 fps, 30 tbr, 1k tbn, 30 tbc (default)
    Stream #0.1: Audio: vorbis, 44100 Hz, stereo, s16 (default)
[buffer @ 0xed3d00] w:854 h:480 pixfmt:yuv420p tb:1/1000000 sar:1/1 sws_param:
Output #0, mp4, to 'output.mp4':
  Metadata:
    encoder         : Lavf52.111.0
    Stream #0.0: Video: mpeg4, yuv420p, 854x480 [PAR 1:1 DAR 427:240], q=2-31, 200 kb/s, 30 tbn, 30 tbc (default)
    Stream #0.1: Audio: libfaac, 22050 Hz, stereo, s16, 64 kb/s (default)
Stream mapping:
  Stream #0.0 -> #0.0
  Stream #0.1 -> #0.1
Press [q] to stop, [?] for help
frame= 5149 fps=147 q=0.0 Lsize=  125650kB time=00:02:51.45 bitrate=6003.4kbits/s
video:124253kB audio:1326kB global headers:0kB muxing overhead 0.057281%

Hoffe jemand weiß Rat ;)

Danke
 
Probier 'mal folgendes:
PHP:
if ($format == "mp4") { 
system("cd /var/www/cache && ffmpeg -i $id -sameq -ar 22050 $id.$format"); 
}

Könnte etwas damit zu tun haben.
 
Hmm,

Ich danke dir erstmal für deine Mühe. Allerdings bringt das auch keine Änderung.
Anscheinend tritt dieses Problem nicht oft auf da ich auf google nichts finde ...
 
shell_exec() gibt die Konsolenausgabe zurueck, mit echo solltest du also in der Lage sein zu sehen ob ffmpeg eine Fehlermeldung ausgibt.

Nebenbei 2 Anmerkungen:

Die Pfade sollten immer absolut sein, in automatisierten Skripten auf korrekte ENV's zu hoffen fuehrt unweigerlich zu Problemen.

Bei lang-laufenden Skripten solltest du ein entsprechendes Kommando wie proc_open() und nicht etwa shell_exec() verwenden. Neben anderem erlaubt es dir auch in Echtzeit die Ausgabe des ausgefuehrten Prozesses an zu zeigen.
 
Hallo,

Danke für den Tipp.
Allerdings komme ich einfach nicht weiter..
Fehler wird eben keiner Ausgegeben. Habe auch schon FFMPEG neuinstalliert hat aber auch nichts gebracht..
An die Installation von xh264 hab ich gerade gedacht allerdings ist da viel zu machen und dafür reichen meine Server-Kenntnisse nicht aus denke ich...

Die Ausgabe habe ich oben Gepostet, die selbe erhalte ich in meinem Perl-Script.
Also keine Fehlermeldung ...
 
Leg mal ein tempraeres Skript an welches _NUR_ das shell_exec() mit absolutem Pfad und dem Befehl als fertigem String enthaelt.
Funktioniert das auch nicht?
 
Achja, auf das hätte ich trottel auch kommen können und euch nicht die Zeit wegnehmen ..

So funktioniert es !!! Endlich !!!
Ich danke dir vielmals. Jetzt muss ich nur mal mein Script Debuggen ... ^^
 
Back
Top