ffmpeg-php + PHP5

Leider nicht, den die entsprechende Zeile ist entweder schon auskommentiert (0.5.1 oder 0.5.0) oder existiert garnicht mehr (0.6.0) :(
 
Na dann wirst du wohl dein Problem im Bugtracker posten müssen. Mit der neuesten Version über SVN schon probiert oder woher holst die die Packages? Wenn du Debian hast, dann stelle deine Sourcelist auf stable und ziehe es über apt oder aptitude. So hat es bei mir zumindest immer funktioniert.
 
Hallo,

ich weiß ja nicht ob das Thema noch aktuell ist, aber ich hatte jetzt das selbe Problem. FFMPEG über svn ist nicht kompatibel zu PHP5-FFMPEG.

Hier meine Lösung:

für FFMPEG habe ich die version genommen.
svn checkout svn://svn.mplayerhq.hu/ffmpeg/trunk/ ffmpeg -r14473

für FFMPEG-PHP die Version 0.5.3.1, aber auch die funktionierte erstmal nicht. Aber es gibt einen Patch. Hier gibt es die gepatchte Version zum download.
 
Zuletzt bearbeitet von einem Moderator:
Das Thema ist noch mehr oder minder Aktuell. Ich hatte es irgendwann einfach aufgegeben :( Aber ich schau mir das ganze nachher nochmal an, schon mal danke für Deinen Post!
 
Hallo,

scheint ja doch einige noch zu interressieren. Nach langen experimentieren, habe ich mich jetzt entschlossen von Php5-ffmpeg weg zu kommen. Der Grund ist ziemlich einfach, ständige Abstürze der GD Klasse. Momentan bin ich auf der Suche, die Metadaten eines Videos mit Php auszulesen. Vielleicht hat jemand eine Idee, von der Sache her reichen Höhe, Breite und Abspiellänge.

Meine Videos und Vorschaubilder erstelle ich über die system($convertStr, $ret) von php. Leider gibt FFmpeg nur im Fehlerfall was zurück. Ein "> log.txt" am Ende vom Convertstr. hat zwar die datei erstellt aber die Konsolenausgabe nicht reingeschrieben. Naja vielleicht habe ich da ja auch einen Denkfehler, weil das Skript rufe ich über cron über cli auf. Hier mal meine Convertstrings.

Video
PHP:
//$format = $breite.'x'.$höhe -> in pixel, sollte vorher berechnet werden
// man könnte ein $format = $breite.'x' oder  $format = 'x'.$höhe ausprobieren, habe ich aber nicht gemacht. Bei imagick klappt es...
$convert_befehl = FFMPEG_BINARY.' -i '.$saves_pfad.$org_file_name.' -s '. $format . ' -ab 128k -ac 2 -ar 44100 -sameq -r 20 '. $saves_pfad.$neuer_file_name
Vorschaubild
PHP:
//$zeit = Format 00:00:50 ->50sec
$convert_jpg_str = FFMPEG_BINARY.' -i '.$saves_pf.$neuer_file_name.' -an -ss '.$zeit.' -r 1 -vframes 1 -s '.$mov->getFrameWidth().'x'.$mov->getFrameHeight().' %d.jpg && mv 1.jpg '.$saves_pf.$img_name';

Wie gesagt noch brauche ich die Klasse, wegen den Metadaten. Hoffe nur bald nicht mehr. Wenn du animierte Gifs brauchst, erstelle temporär verschiedene Vorschaubilder, also von unterschiedlichen Frames und lasse sie durch Imagick zu einen Gif verarbeiten. Ungefähr so
PHP:
$convert_gif_str = '/usr/bin/convert -delay 100 -loop 0 ';
foreach ($img_tmp_arr as $value){  // dass ist die Liste der Vorschaubilder
   $convert_gif_str .= ' '.$value.' ';
}
$convert_gif_str .= PFAD_ABSOLUT.$gif_name;
system($convert_gif_str, $ret);

Gruss
 
Zuletzt bearbeitet von einem Moderator:
Gelöst

Da ich gerade selbst dass Problem hatte am 8 März 2009 um 05:24
habe ich dass Problem mit meinen guten C kenntnissen so gelöst
bitte diesen code mit der zeile /* {{{ _php_avframe_to_gd_image()
ersetzten

Code:
/* {{{ _php_avframe_to_gd_image()
 */
static int _php_avframe_to_gd_image(AVFrame *frame, gdImage *dest, int width, 
        int height)
{
    int x, y;
     int *src = (int*)frame->data[0];

    if (width > dest->sx || height > dest->sy)
    {
        return -1;
    }

     for (y = 0; y < height; y++) 
	 {
         for (x = 0; x < width; x++) 
		 {
           /* copy pixel to gdimage buffer zeroing the alpha channel */
           dest->tpixels[y][x] = src[x] & 0x00ffffff;
         }
         src += width;
     }
    return 0;
}
/* }}} */

Liebe Grüße
Sascha
 
Zurück