*.avi Eigenschaften

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

eflex

Betreff: *.avi Eigenschaften

BeitragMo, Nov 16, 2009 14:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

ich würde gern in meinem programm die Eigenschaften von *.avis oder generell von videos einlesen. Nur einlesen es muss nichts geändert werden. Also ich bräuchte Länge Bildbreite und bildhöhe.

Gibts dazu ne userlib?

ozzi789

BeitragMo, Nov 16, 2009 15:37
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi

Mir fällt gerade nur eine Möglichkeit ein du lädst das Video und ermittelst es mit MovieWidth MovieHeight.
Sehr simpel aber nicht wirklich schnell, mfg ozzi
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5
 

eflex

BeitragMo, Nov 16, 2009 15:44
Antworten mit Zitat
Benutzer-Profile anzeigen
ozzi789 hat Folgendes geschrieben:
Hi

Mir fällt gerade nur eine Möglichkeit ein du lädst das Video und ermittelst es mit MovieWidth MovieHeight.
Sehr simpel aber nicht wirklich schnell, mfg ozzi

ich bräuchte aber ne schnelle methode Sad
und die Dauer is auch sehr wichtig

ozzi789

BeitragMo, Nov 16, 2009 15:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Such mal nach bvid, ist ne DLL die viele Video funktionen mit sich bringt, sehe aber gerade das die Website (east power soft) down ist.

Ich überlege gerade wie Windows das ermittelt...

mfg
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5
 

eflex

BeitragMo, Nov 16, 2009 15:57
Antworten mit Zitat
Benutzer-Profile anzeigen
ozzi789 hat Folgendes geschrieben:
Such mal nach bvid, ist ne DLL die viele Video funktionen mit sich bringt, sehe aber gerade das die Website (east power soft) down ist.

Ich überlege gerade wie Windows das ermittelt...

mfg

hmm das geht nur für blitz3d
hab vergessen zu sagen, dass ich mit blitzplus arbeite

ozzi789

BeitragMo, Nov 16, 2009 16:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Bitte unterlase es immer zu zitieren, setze es nur ein wo es sinnvoll ist, zmb wenn es sich auf einen Post bezieht der schon etwas älter ist.

Nun mir schwebt eine Lösung im Kopf, es gibt so eine riesen funktionssammlung für bb , aber mir fällt der Namen nicht ein, vlt weis es jemand anderes..

mfg ozzi
0x2B || ! 0x2B
C# | C++13 | Java 7 | PHP 5

Valnar

BeitragMo, Nov 16, 2009 17:22
Antworten mit Zitat
Benutzer-Profile anzeigen
ozzi789 hat Folgendes geschrieben:
[...]sehe aber gerade das die Website (east power soft) down ist.[...]

http://www.east-power-soft.de/...blitzvideo

Hier steht etwas von der "avifil32.dll", diese scheint zu windows zu gehören. Eventuell ist es das was du suchst... http://www.binary-universe.net...tnet4.html

Edith meint:
Hab grad EPS gefragt: Die Wiedergabe unter BB+ funzt nicht, das auslesen der Headerdaten ohne vorher zu laden sollte aber funzen!

Code: [AUSKLAPPEN]

bvid_GetWidth_%( handle% ) : "bvid_GetWidth"
bvid_GetHeight_%( handle% ) : "bvid_GetHeight"
bvid_GetRate_%( handle% ) : "bvid_GetRate"
bvid_GetLength_%( handle%, mode% ) : "bvid_GetLength"


(Es wird aber auch die avifil32.dll benutzt, also ist das Jacke wie Hose ^^
[url][/url]

EPS

BeitragMo, Nov 16, 2009 18:07
Antworten mit Zitat
Benutzer-Profile anzeigen
Muß mich mal eben kurz melden.

Also BVID funktioniert NICHT mit B+. Sorry für die Aussage. Habe gerade mal selbst rumprobiert aber schon die Initialisierung scheitert und auch wenn die klappen täte würde das Programm spätestens beim öffnen der Videodatei abschmieren weil sich der angegebene Handle auf ein erstelltes Image bezieht, welches in B+ und B3D eben Grundverschieden ist.

Eine Möglichkeit wäre die nötigen Funktionen direkt in B+ zu programmieren. Dazu würde ich mal nach AVIFIL32 hier im Forum oder besser noch im englischen Forum suchen. Da gab es irgendwo was dazu was weiter helfen sollte.

NACHTRAG: http://www.blitzbasic.com/code...?code=1608
mGUI - Graphical User Interface für Blitz3D...Informationen gibt es hier

Man kann sich öfter als zweimal im Leben halb tot lachen.
  • Zuletzt bearbeitet von EPS am Mo, Nov 16, 2009 18:12, insgesamt einmal bearbeitet
 

eflex

BeitragMo, Nov 16, 2009 18:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Soweit so gut, danke.

Es klappt jedoch nicht so wie gewollt.
BlitzBasic: [AUSKLAPPEN]

Include "bvid.bb"
bvid_init()
movie$ = "test.avi"
image = bvid_Open( movie$ )

;Wenn erfolgreich...
If image Then
length$ = bvid_GetTimeStamp$( bvid_GetLength( image, 0 ) )
EndIf


length$ bleibt bei mir jedoch ein leerer string.
Woran könnte das liegen?

EPS

BeitragMo, Nov 16, 2009 18:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Also jetzt bin ich hin und her gerissen.

Dein Codeschnipsel funktioniert bei mir in B+ und ich bekomme in length$ auch einen Wert ... ulkig. Bin da ehrlich gesagt etwas ratlos. Mein eigenes Beispiel funktioniert in B+ nicht.

K.A. was da schief läuft. Aber schau dir mal die AVIFIL32 Funktionen an. Vielleicht implementierst du die entsprechenden Funktionen direkt in dein Programm - ist sicherlich einfacher und du kannst Fehler viel besser nachvollziehen.
mGUI - Graphical User Interface für Blitz3D...Informationen gibt es hier

Man kann sich öfter als zweimal im Leben halb tot lachen.

EPS

BeitragMo, Nov 16, 2009 18:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok, nochmal ich Wink

Also. So wie es aus sieht scheinen die Grundfunktionen wie z.B. das Auslesen der Filmlänge usw. doch zu funktionieren. Ich Drops hab in meinem eigenen Beispiel genau das versucht was eben nicht geht - nämlich das Anzeigen des Videobildes.

Was ebenfalls nicht funktioniert ist eine IF THEN Abfrage bei der Initialisierung denn in B+ wird hier anscheinend immer FALSE zurückgegeben. Dennoch wird die Initialisierung durchgeführt. Warum das so ist kann ich auf die schnelle nicht 100%ig erklären, muß man einfach mal so hinnehmen - es geht zumindest und eigentlich ist die AVIFIL32 ja auch auf jedem System vorhanden so das eine Initialisierung immer klappen sollte.

Warum bei Dir nun keine Länge angezeigt wird ... k.A. kann ich auch nicht so genau sagen. Versuch es doch mal mit anderen AVI Dateien.
mGUI - Graphical User Interface für Blitz3D...Informationen gibt es hier

Man kann sich öfter als zweimal im Leben halb tot lachen.

D2006

Administrator

BeitragMo, Nov 16, 2009 18:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Bitte vermeide Doppelposts. Nach gerade mal 8 Minuten hätte es niemand gemerkt, wenn du deine weiteren Ausführungen einfach in den bisherigen Beitrag hineineditieren hättest.
Intel Core i5 2500 | 16 GB DDR3 RAM dualchannel | ATI Radeon HD6870 (1024 MB RAM) | Windows 7 Home Premium
Intel Core 2 Duo 2.4 GHz | 2 GB DDR3 RAM dualchannel | Nvidia GeForce 9400M (256 MB shared RAM) | Mac OS X Snow Leopard
Intel Pentium Dual-Core 2.4 GHz | 3 GB DDR2 RAM dualchannel | ATI Radeon HD3850 (1024 MB RAM) | Windows 7 Home Premium
Chaos Interactive :: GoBang :: BB-Poker :: ChaosBreaker :: Hexagon :: ChaosRacer 2
 

eflex

BeitragMo, Nov 16, 2009 18:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok. hab jetzt die sample.avi aus dem download packet hergenommen und es geht ebenfalls nicht.
Könnte es an Windows 7 64bit liegen?

EPS

BeitragMo, Nov 16, 2009 18:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Da bin ich überfragt. Ich benutze XP SP3. Ob, und wenn ja was, sich an der AVIFIL32 mit erscheinen von Windows 7 verändert hat vermag ich nicht zu sagen. Denkbar wäre dies allerdings.

In diesem Falle hilft nur die Funktionen selbst zu entwickeln und die MSDN zu wälzen (insofern dort schon Windows 7 spezifische Sachen hinterlegt sind).

@ADMIN - jup, sorry.
mGUI - Graphical User Interface für Blitz3D...Informationen gibt es hier

Man kann sich öfter als zweimal im Leben halb tot lachen.

hectic

Sieger des IS Talentwettbewerb 2006

BeitragMo, Nov 16, 2009 18:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Das Kontainerformat AVI ist bereits schon älter, und in laufe der Zeit wurden immer mehr Funktionen in diesem eingebaut. So wird heute einfach davon ausgegangen, dass zum Beispiel eine AVI-Datei auch mehrere Audiospuren haben sollte oder Untertitelspuren abarbeiten muß. So weit ich aber informiert bin, unterstützt AVI eben nicht dieses. Und so wie dieses Beispiel unterliegt das AVI-Format vielen Funktionen, für die es nicht von gleich auf angepasst wurde. Das Resultat ist dann, dass unterschiedliche AVI-Dateien oft inkompatibilitäten aufweisen, die dann nur von wenigen Programmen ausgemerzt werden. Ähnlich verhielt es sich auch mit dem MP3-Dateiformat.

Einem Programmierer bleibt dann meistens nichts anderes übrig, als möglichst alle Eventuallitäten zu kompensieren. Das geht zum Beispiel indem man eine gute externe Bibliothek anwendet, oder sich selbst mit einem Hex-Editor auf die Suche der Dateiheader macht. Und da AVI so weit ich weiß auch noch streamfähig ist, macht es die Sache dann doch sehr erschwerlich.

Nun, wenn es deine AVI-Dateien sind, dann versuche mal mit geeigneten Programmen die AVI-Dateien umzuwandeln. Das geht zum Beispiel mit VirtualDub --> jeweils Audio als auch Video auf ''direct Stream Copy'' stellen. Dadurch wird sichergestellt, dass keine neue Komprimierung durchgeführt wird, als kein Qualitätsverlust stattfindet, aber der Dateiheader dennoch neu geschrieben wird.

Wenn du aber ein Programm schreiben willst, welche dir unbekannte Dateien abspielen soll, dann siehe meine Vorschläge oben.

Freie Alternativen zu VirtualDub sind auch AVIDemux oder MPEG4 Modifier.

- Wobei VirtualDub das meistegängige ist. Wenn dieses Programm die Dateien nicht lesen kann, kann man von schrottigen Dateiheader ausgehen.

- AVIDemux bietet viele schöne Zusatzfeatures, kommt aber auch mit vielen Eigenarten bei Audio und manchmal auch Video nicht klar. Scrottet die Enddateien dann selbst.

- MPEG4 Modifier dagegen eignet sich gut, wenn man sich gut mit der Materie auskennt, da man zum Beispiel direkt Headereigenschaften verstellen kann, oder auch das Ausgabeformat einstellen kann, ohne das die Datei neu komprimiert werden muß.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

EPS

BeitragMo, Nov 16, 2009 19:01
Antworten mit Zitat
Benutzer-Profile anzeigen
@hectic - in einem Punkt hast du Recht. AVI ist nur ein Container und was darin "schlummert" weis man nicht wirklich. So spielt mein bvid (als Beispiel) nur Standard AVI Dateien ab deren Audio Spur eine konstante Bitrate hat. Für einen VBR (variable Bitrate) empfehle ich AVISynth - das finde ich am einfachsten in der Handhabung.

Wie auch immer. Die mitgelieferte "sample.avi" gibt bei mir eine Länge zurück. Bei eflex jedoch nicht. Man kann dieses Ergebnis also nicht direkt auf die AVI an sich "schieben". Die Ursache hierfür könnte durchaus eine Änderung der AVIFIL32 Funktionen sein.

Ansonsten stimme ich Dir zu 100% zu. Sich mit den ganzen Video Formaten, Containern, Audiospuren etc. auseinanderzusetzen ist ne verdammt harte Nuss und Blitz ist dafür nicht wirklich geeignet.
mGUI - Graphical User Interface für Blitz3D...Informationen gibt es hier

Man kann sich öfter als zweimal im Leben halb tot lachen.
 

eflex

BeitragMo, Nov 16, 2009 19:08
Antworten mit Zitat
Benutzer-Profile anzeigen
wie gesagt abspielen will ich nichts, ich brauch nur die eigenschaften.

EPS

BeitragMo, Nov 16, 2009 19:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Das ist schon klar. Dennoch liegt hier schon der "Hase im Pfeffer". Wie hectic schon beschrieb sind AVI Dateien nur Container. Ein Container ist sozusagen nur ein "Behältnis" um den eigentlichen Inhalt aufzubewahren. Was dieser Inhalt tatsächlich ist, ist mannigfaltig.

Es kann nur Audio sein, nur Video, Video + Audio, Video + mehrere Audio Spuren, all dies sogar mit einer Spur für Untertitel und die "wahren" Formate für all dies können zudem ebenfalls unterschiedlich sein. Also für Audio z.B. WAVE, MP3 oder AC3. Für Video DivX, Xvid, Mp4, Matroska etc. etc. etc.

Du siehst also das Funktionen die Dir Eigenschaften zurückliefern sollen, wie Länge, Breite, Höhe etc., ne ganze Menge an "Möglichkeiten" abdecken müßen. Dies kann ein Programmierer kaum selbst erledigen.

Daher benutzt man schon vorhandene Funktionen die all diese "Unterschiede" intern abwickeln - wie AVIFIL32 eben. AVIFIL32 selbst ist aber mittlerweile auch schon ein "altes Eisen" und muß an neue Gegebenheiten auch angepasst und erweitert werden.

Daher kann es durchaus sein das die Funktionen in Windows 7 sich anders verhalten bzw. andere Parameter erwarten und abweichende Ergebnisse zurückliefern.

Wie auch immer. Ich denke Du wirst nicht umhin kommen dich direkt mit den AVIFIL32 Funktionen auseinanderzusetzen.
mGUI - Graphical User Interface für Blitz3D...Informationen gibt es hier

Man kann sich öfter als zweimal im Leben halb tot lachen.

hectic

Sieger des IS Talentwettbewerb 2006

BeitragMo, Nov 16, 2009 20:38
Antworten mit Zitat
Benutzer-Profile anzeigen
eflex, wie gesagt. Wenn es deine AVI-Dateien sind, dann versuche sie umzuwandeln. Alles andere ist theoretisch unmöglich 100%ig sicher abzudecken. Ich hab zum Beispiel einige AVI-Dateien gehabt, die zeigen mir über mehrere Stunden Abspiellänge an, obwohl tatsächlich nur ein paar Minuten vorhanden waren. Auch die Dateigröße deutete nicht auf mehrere Stunden hin. Das konnte ich beheben, indem ich sie durch die oben genannte Programme konvertiert habe, ohne neu zu komprimieren. Die Dateigröße ist im grunde gleich geblieben, aber die Programme haben ein etwas verträglicheren Daeiheader geschrieben.

Und die Informationsfehler hatte ich auf VLC, welcher meiner Meinung nach der verträglichste Vertretter von Abspielsoftware ist. Andere Programme wie zum Beispiel der WMP konnte diese Dateien überhaupt nicht abspielen.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D
 

eflex

BeitragMo, Nov 16, 2009 20:50
Antworten mit Zitat
Benutzer-Profile anzeigen
okay danke für die zahlreichen antworten.
die avis sind nicht von mir erstellt, aber ich geb nich auf, ich werde mich n bisschen umschaun und dann selber ein paar sachen probieren

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group