Zurück   Flashforum > Flash > Flash Fortgeschritten > Flash 8

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 27-06-2007, 22:26   #1 (permalink)
Neuer User
 
Benutzerbild von Deconteroga
 
Registriert seit: Jun 2004
Ort: Chemnitz
Beiträge: 18
Question Video-Vorschaubilder mit Flash

Hallo =)

Ich hoffe, ich hab den richtigen Bereich erwischt ^^

Ich will Vorschaubilder von Videos (z.b. mpeg, avi, asf, etc.) mit Flash erstellen und anzeigen lassen. Quasi ähnlich wie Youtube oder Google-Video. Meine Frage zu Beginn: ist das überhaupt möglich oder sollte ich lieber aufgeben, solange ich noch kann?

Falls jemand Links hat, wo ich mich belesen könnte, wäre ich dankbar. Google bringt bei einer Suche tausende Links, die überhaupt nichts mit dem Thema zu tun haben ^^

Vielen Dank schonmal.
Deconteroga ist offline   Mit Zitat antworten
Alt 27-06-2007, 23:42   #2 (permalink)
aka CYBERHOLIC
 
Benutzerbild von cyberholic
 
Registriert seit: Jan 2002
Ort: hamburg
Beiträge: 591
Also jetzt mal ganz bescheuert gefragt, aber wieso machst Du nicht
ein Screenshot von dem ersten Frame und baust das mit ein?
Oder handelt es sich bei Deinem Player um eine dynamische Lösung?

Selbst wenn, würde ich dann alles über Datenbank oder externe
Textdatei steuern, so das Du nur eine Playerdatei benötigst, die
dann auf die einzelnen Filme zugreift.

Wobei wir bei denen bisherigen 7 Flash-Beiträgen wären: wieviel
Ahnung hast Du denn? Oder ist die Bedeutung "dynamische Lösung"
für Dich mit einem "böhmischem Dorf" gleich zu setzen?

Gute Nacht und bis morgen

Carlos
__________________
----------------------------------------------
--// www.endorphinum.de
--// beta.endorphinum.de
----------------------------------------------
cyberholic ist offline   Mit Zitat antworten
Alt 28-06-2007, 08:13   #3 (permalink)
Neuer User
 
Benutzerbild von Utopian
 
Registriert seit: May 2003
Beiträge: 1.031
Hi Moin!

Klar, das geht ganz simpel.

Es gibt drei Methoden, eine mit Flash und zwei ohne Flash.

1. Du nimmst eine FLVPlayback Komponente, packst deinen Film dynamisch
dort rein und scannst mit Hilfe der BitmapData Klasse (Beispiele gibt es hier
im Forum genügend!) Pixel für Pixel ab. Dann übergibst du diese Pixel an ein
Flash was wiederum die Daten für dich in ein JPG File schreibt.
Wie gesagt Beispiele gibt es hier im Forum genug! Suche benutzen!

2. Du benutzt FFMPEG.
Aus Flash startest du eine Anfrage an ein PHP das wiederum per SHELL das
FFMPEG aufruft. FFMPEG ist in der Lage aus verschiedenen Videoformaten
Einzelbilder zu extrahieren (und ganz nebenbei noch ein mächtiger Encoder!).

3. Du nutzt FFMEG-PHP und extrahierst
per PHP Script (Aufruf aus Flash starten) ein beliebiges Einzelbild aus deinem
Video. Wäre eigentlich für dieses Szenario am Einfachsten.

Grüße Christian
Utopian ist offline   Mit Zitat antworten
Alt 28-06-2007, 10:14   #4 (permalink)
Neuer User
 
Benutzerbild von Deconteroga
 
Registriert seit: Jun 2004
Ort: Chemnitz
Beiträge: 18
Danke euch beiden.

Ja, das Ganze soll schon dynamisch sein - und ich weiß, wovon ich rede *g*

Das Alles soll, wie Utopian schon richtig angeschnitten hat, eine Alternative zu FFMpeg-PHP sein, das offenbar nur auf der 4er PHP-Version läuft. Eine für Windows kompilierte Version für PHP5 soll es zwar geben, die lässt sich jedoch nicht als Extension einbinden und eine Anleitung zur Benutzung unter einem Windows-Xampp gibts auch nicht. Hab gestern stundenlang alles mögliche ausprobiert und das Inet gewälzt

Deswegen wollte ich den Umweg über Flash gehen. Wobei Utopians erster Vorschlag recht prozesslastig klingt und lange dauern würde.

Gibts vielleicht doch eine Möglichkeit, FFMpeg unter nem Windows-Apache (PHP5) zum Laufen zu kriegen? Hat's vielleicht sogar schon jemand geschafft?
Deconteroga ist offline   Mit Zitat antworten
Alt 29-06-2007, 08:33   #5 (permalink)
Neuer User
 
Benutzerbild von Utopian
 
Registriert seit: May 2003
Beiträge: 1.031
Zitat:
Zitat von Deconteroga Beitrag anzeigen
Gibts vielleicht doch eine Möglichkeit, FFMpeg unter nem Windows-Apache (PHP5) zum Laufen zu kriegen? Hat's vielleicht sogar schon jemand geschafft?
Hi!

Nein, definitiv nicht als Prozess.

Ich habe mal eine Anwendung mit PHP erstellt. Also prinzipiell kannst du mit
PHP auf der serverseite ja jede beliebige EXE starten, kein Ding. Das Problem
hierbei ist nur das du überwachen musst wie weit der Prozess ist und dann
ein Feedback zurückgeben willst.

Für diesen Zweck habe ich AJAX in Verbindung mit Flash verwendet.

So gehts:

Der folgende Codeschnipsel startet über PHP eine ffmpeg binary mit Parametern.
Die Parameter sind:

$time (ein timestamp)
$_REQUEST[ "format" ] (Siehe FFMPEG Hilfe für Ausgabeformate)
$_REQUEST[ "resolution" ] (Siehe FFMPEG Hilfe für Auflösungen)

PHP-Code:
pclosepopen'start /b ffmpeg -i tmp/'$time .'/frame%d.jpg -s '$_REQUEST"resolution" ]  .' -sameq tmp/'$time .'.' $_REQUEST"format" ] .' -y 2> tmp/'.$time.'.txt''r' ) ); 
Die Anwendung startet dann auf der serverseite in einer Konsole und wird
sofort wieder geschlossen. Zwar läuft die Anwendung weiter, aber PHP denkt
das die Anwendung geschlossen ist und verursacht so keinen möglichen
Script Timeout.

Der Schnipsel:

PHP-Code:
2tmp/'.$time.'.txt 
sagt der Konsole, dass alles was darin als Rückgabewert erscheint
(also in der Konsole) in eine Textdatei ausgegeben werden soll deren Name
ein Timestamp (in diesem Fall ist). ffmpeg schreibt nämlich den Konvertierungs
-Status in die Konsole.

Weiter gehts...

Nun ist die Konvertierung am Laufen und alle paar Millisekunden wird eine
Textdatei (immer die Gleiche!) geschrieben die über den aktuellen Status
informiert.

Jetzt kommt AJAX ins Spiel. Das AJAX fragt jede Sekunde eine andere PHP
ab, die wiederum überprüft was in der Datei steht. Falls in der Datei die
Anzahl der zu konvertierenden Frames gleich der Anzahl der Gesamtframes
dann sind wir am Ende ;-) Komfortablerweise kann man den Status von AJAX
an Flash über eine ExternalInterface Komponente übergeben.

Mein PHP das von AJAX angesprochen wird sieht so aus:

PHP-Code:
if ( file_exists "tmp/" $_REQUEST"fname" ] . '.txt' ) ) {
    
        
    
$filename "tmp/"$_REQUEST"fname" ] . '.txt';
    
$handle fopen $filename"r" );
    
$contents fread $handlefilesize $filename ) );

    function 
getvalue $sContent$sValue$sNextValue ) {
    
        
$qpos strripossubstr$sContent strripos$sContent$sValue ) , strripos$sContent$sNextValue )), $sNextValue );
        
        
$value substr$sContent strripos$sContent$sValue ) , $qpos );
        
        
$value substr $value strlen $sValue ) );
        
        return 
$value;
    }
    
    echo 
getValue $contents"Duration:" ", start:" ) ."<br>";

Über $_REQUEST[ "fname" ] holt sich das PHP die Textdatei und wertet sie aus.

Ich habe mir einen kleinen Encoder in Flash gebaut, der serverseitig genau
das macht. Mein Encoder wandelt einen beliebigen Film erst in Einzelframes
um, rendert dann auf schwarzen Hintergrund einen Text (frei wählbar) in
JPG's und wandelt dann alle Einzelbilder wieder in ein beliebiges Ausgabeformat
um (PSP Video, Handy, MPEG, Flash etc.). (siehe Screen im Anhang).

Falls es dich interessiert: Ich schreibe momentan einen kleinen Artikel dazu
(quasi eine DIY-Anleitung) und stelle demnächst eine Doku und den Quellcode
zum Download in meinen Blog zur Verfügung.

Grüße Christian
Angehängte Grafiken
Dateityp: gif Converter.gif (3,3 KB, 25x aufgerufen)

Geändert von Utopian (29-06-2007 um 08:36 Uhr)
Utopian ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 18:10 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele