Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Länge einer Video-Datei ermitteln (https://www.delphipraxis.net/25072-laenge-einer-video-datei-ermitteln.html)

k0aru 30. Jun 2004 18:40


Länge einer Video-Datei ermitteln
 
Hi!
Ich hab folgendes Problem: Mein Programm soll automatisch die Spieldauer/Länge einer Videodatei (z.B. *.avi oder *.mpeg) ermitteln, da ich diesen Wert im Verlauf des Programmablaufs dringend benötige und ich eine manuelle Eingabe dem User nicht zumuten will/kann.... dabei ist noch zu sagen, dass die Datei im nicht mit z.B. dem TMediaPlayer geöffnet wird, das auslesen muss also irgendwie anders klappen.... einer ne Idee? Würd mich über jede Antwort freuen egal wie konstruktiv die letztendlich wird vll bringt ihr mich ja auf was :thuimb:

Gruss k0aru

iaby 1. Jul 2004 10:23

Re: Länge einer Video-Datei ermitteln
 
hmmm,

du sagst zwar, es wird nicht mit dem TMediaPlayer geöffnet, aber wenn du es
trotzdem kurz darin lädst, dann die länge ausliest und wieder schliesst, würde
es relativ einfach zu realisieren sein.
ansonsten vielleicht mal bei torry.net gucken, ob es da was passendes gibt, das
dir die länge eine video-datei ausliest.

gruss,
iaby

Steve 1. Jul 2004 11:33

Re: Länge einer Video-Datei ermitteln
 
Hi, versuchs mal mit MSDN-Library durchsuchenAVIFileInfo

Gruß
Stephan

k0aru 1. Jul 2004 13:28

Re: Länge einer Video-Datei ermitteln
 
Und wie wende ich das jetzt auf Delphi an?

MrKnogge 1. Jul 2004 18:17

Re: Länge einer Video-Datei ermitteln
 
Staht doch da, wenn du auf den link klickst :gruebel:

Oder meinst du die verwendung von Api-funktionen generell ?

k0aru 1. Jul 2004 18:21

Re: Länge einer Video-Datei ermitteln
 
ja wie kann ich sowas generell einbinden

Steve 2. Jul 2004 10:14

Re: Länge einer Video-Datei ermitteln
 
Hab grad nicht den entsprechenden Link zur Hand, aber such ma den Beitrag bei Torry über Bei Google suchenAviFileInfo, das is vielleicht zumindest ein Einstieg. Außerdem benötigst Du die Unit Bei Google suchenvfw.pas, in der schon einige API-Zugriffe (aus avifil32.dll) für Delphi "übersetzt" sind.

Gruß
Stephan

k0aru 2. Jul 2004 11:45

Re: Länge einer Video-Datei ermitteln
 
ok thx werd ich mich ma mit beschäftigen

franktron 2. Jul 2004 11:59

Re: Länge einer Video-Datei ermitteln
 
@k0aru wenn du willst kann ich dir mal ein prog schicken was ich gemacht hab was unteranderem die länge eine Avi auslesen tut.

k0aru 2. Jul 2004 12:06

Re: Länge einer Video-Datei ermitteln
 
das wäre nett :)

Tubos 2. Jul 2004 12:08

Re: Länge einer Video-Datei ermitteln
 
Könntest du den Code hier posten für andere die dasselbe Problem haben?

edit:
es ist nicht wirklich intelligent seine emailadresse in nem öffentlich zugänglichen forum zu posten, die bots der spamversender finden das garantiert
denselben fehler habe ich auch einmal gemacht und dann massig spam bekommen
--> emailadresse löschen müssen :mrgreen:

k0aru 2. Jul 2004 12:11

Re: Länge einer Video-Datei ermitteln
 
jetzt besser :P

Master_BB 2. Jul 2004 13:10

Re: Länge einer Video-Datei ermitteln
 
heya,
mich würde auch mal interessieren wie ich die informationen der Microsoftwebsite der AVIFileinformationen verwerten kann.

Delphi-Quellcode:
typedef struct { 
    DWORD dwMaxBytesPerSec;
    DWORD dwFlags;
    DWORD dwCaps;
    DWORD dwStreams;
    DWORD dwSuggestedBufferSize;
    DWORD dwWidth;
    DWORD dwHeight;
    DWORD dwScale;
    DWORD dwRate;
    DWORD dwLength;
    DWORD dwEditCount;
    char szFileType[64];
} AVIFILEINFO;
da wird dort aufgeführt. OK aber wie kann ich diese jetzt in meinem programm nutzen? welche unit muß ich dafür
einbinden? shellapi?
wie würde die verwendung gehen? die haben dort keine parameter oder so genannt.
kann ja nicht einfach sagen AVIBildBreite := dwWidth(pfad)

franktron 2. Jul 2004 18:02

Re: Länge einer Video-Datei ermitteln
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hier ist das prog.

Steve 3. Jul 2004 12:21

Re: Länge einer Video-Datei ermitteln
 
Delphi-Quellcode:
uses
 VfW; { downloaden! } 

function GetAviLength(aviFN: string): Word;
var
  pFile : PAVIFile;
  AviInfo: TAVIFILEINFOW;
begin
  Result := 0;
  AVIFileInit;

  // AVI öffnen
  IF AVIFileOpen(pFile, PChar(avifn), 0, nil) <> 0 THEN
  BEGIN
    AVIFileExit;
    ShowMessage('Fehler');
    Exit;
  end;

  // AVI-Informationen auslesen
  if AVIFileInfo(pFile, @AVIINFO, SizeOf(AVIINFO)) = AVIERR_OK then
  with aviinfo do
  begin
    // Länge ermitteln
    result := (dwRate div dwScale) * dwLength;
  end;

  // Aufräumen
  AVIFileRelease(pFile);
  AVIFileExit;
end;
Abgewandelt von Torry.

Vollkommen ungetestet!

Gruß
Stephan

Garfield 19. Jul 2004 23:13

Re: Länge einer Video-Datei ermitteln
 
Hallo,

ich will auch die Länge von Videos bestimmen. Für AVI scheine ich in diesem Thread die Lösung gefunden zu haben. Man bekommt die Informationen also aus dem Header.

Bei MPEG ist es allerdings nicht so einfach. Das ist ein Streamingformat und man muss die Frames zählen. Im Gleitz|Doom9-Forum wurden dafür zwei Beispielprogramme genannt: MPEGWALK von LigH und Mpeg2Schnitt von Martin Dienert. Von beiden sind die Sourcen verfügbar.

http://forum.gleitz.info/showthread.php?t=14159
http://www.mdienert.de/mpeg2schnitt - Ist im Moment wohl nicht erreichbar, vielleicht Trafficgrenze erreicht?

scp 20. Jul 2004 02:51

Re: Länge einer Video-Datei ermitteln
 
Ich habe ein Programm geschrieben, das Infos aus allen geläufigen Video-Formaten (10-15 Stück) rauszieht. Werde es mal bei Gelegenheit als OpenSource rausgeben. Im Moment hätte das keinen Sinn, weil der ganze Code in einer DLL drinsteckt, die auch noch ein IContextMenu drin hat usw., ist halt ziemlich komplex.

Steve 20. Jul 2004 11:47

Re: Länge einer Video-Datei ermitteln
 
imho sind mpegs prinzipiell auch avis, halt bloß codiert (Stichpunkt Codec).
Speicher mal avis/mpegs unter der jeweils anderen Endung.. solange der entsprechende Codec installiert ist, sollte es imho immer funzen..

Gruß
Stephan

scp 20. Jul 2004 12:40

Re: Länge einer Video-Datei ermitteln
 
Zitat:

Zitat von Steve
imho sind mpegs prinzipiell auch avis, halt bloß codiert (Stichpunkt Codec).
Speicher mal avis/mpegs unter der jeweils anderen Endung.. solange der entsprechende Codec installiert ist, sollte es imho immer funzen..

Das stimmt so nicht. Das man die Endung .avi verwenden kann und umgekehrt .mpg für .avi usw. liegt an der "Intelligenz" des Media Players. Dieser schaut nicht nach der Dateieendung sondern nach dem Inhalt.

Garfield 20. Jul 2004 18:27

Re: Länge einer Video-Datei ermitteln
 
Zitat:

Zitat von Steve
imho sind mpegs prinzipiell auch avis, ...

Stimmt wohl nicht. Meines Wissen haben AVIs Datei- und MPEGs Sequenzheader. Du kannst den Dateien Endungen verpassen, wie Du willst. Denn ein Programm entscheidet anhand der Header, was es damit macht, egal welche Endung die Datei hat.

@scp
Kannst Du zufällig auch die Länge für eine Datei aus dem VirtualDub(Mod)-Frameserver bestimmen?

n-regen 3. Feb 2008 10:06

Re: Länge einer Video-Datei ermitteln
 
Hallo!
Bei mir dreht es sich um eine AVI-Datei, die einen DivX-codierten Film enthält.
Jetzt zeigt mir die Funktion von der ersten Seite 17886, der Film dauert 2:09:48, die Framerate ist 25 fps.
Aber was sind denn nun diese 17886?


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:01 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz