Avatar billede tt2002 Nybegynder
12. juni 2004 - 21:21 Der er 14 kommentarer og
1 løsning

dimensioner af videoklip

Hvordan finder jeg dimensionerne (bredde & højde) af et videoklip indlæst i en mediaplayer-komponent?
Avatar billede dkn Nybegynder
12. juni 2004 - 22:06 #1
Avatar billede tt2002 Nybegynder
12. juni 2004 - 22:09 #2
det kan da ikke være rigtigt at man skal bruge alle de linier...
Avatar billede mikstor Nybegynder
12. juni 2004 - 22:13 #3
Du kan bare trykke prt scr, print screen (Der skal ikke være nogen form for zoom på), og kopiere den ind i f.eks. og måle størrelsen på billedet via "klip" metoden...
Avatar billede tt2002 Nybegynder
12. juni 2004 - 22:14 #4
mikstor...

Jeg skal bruge noget kode, så mit Delphi-program selv kan finde dimensionerne...

Ellers tak for rådet...
Avatar billede dkn Nybegynder
12. juni 2004 - 22:50 #5
nej ikke helt så meget, du skal jo have fjernet der hvor den gammer til filen.

Kan da godt prøve at gøre den mindre lang....
Avatar billede tt2002 Nybegynder
13. juni 2004 - 22:25 #6
jatak, det ville være dejligt...
Avatar billede hrc Mester
14. juni 2004 - 23:57 #7
Du kan læse headeren på filen - den skifter godt nok fra avi til mpeg og kræver derfor kendskab til hver enkelt filtypes opbygning. Du har vel tjekket at mediaplayer-komponenten ikke har oplysningerne liggende (jeg har ikke)?

Er det altid samme slags fil du skal vide framedimensionerne på?
Avatar billede tt2002 Nybegynder
15. juni 2004 - 19:23 #8
Nej. Det er ikke altid samme slags fil (skifter mellem avi, mpeg og wmv), men det gør ikke noget. Jeg har styr på hvornår, det er hvad.

Hvad mener du med headeren?
Avatar billede hrc Mester
16. juni 2004 - 09:02 #9
Der ligger altid noget information om den pågældende fil gemt i en header; mener faktisk at der hyppigt ligger 2 slags, en til operativsystemets "Egenskaber" og en til de programmer der læser. Det er den sidste der er interessant idet her står dimensionerne og bit-dybde (farvedybde) og sikkert også hvilken version af filformatet der er tale om. Se bare Microsofts information om Bitmap: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/gdi/bitmaps_7ltf.asp.

Tilsvarende er der sikkert headers for avi, mpeg og wmv.

avi: http://www.fastgraph.com/help/avi_header_format.html - en 56-byte header der starter 32 bytes inde i filen. Her et eksempel (ikke testet, kun tampet ned hurtigt)?

type
  TAVIHeader = packed record
    TimeDelay : cardinal;
    DataRate : cardinal;
    PaddingSize : cardinal;
    ParameterFlags: cardinal;
    NumberOfFrames : cardinal;
    NumberofPreviewFrames : cardinal;
    NumberOfDataStreams : cardinal;
    SuggestedPlaybackBufferSize : cardinal; // in bytes
    PixelWidth : cardinal;
    PixelHeight : cardinal;
    TileScale : cardinal; // Typically 30
    DataRate : cardinal; // (frame rate = data rate / time scale)
    StartingTime : cardinal; // typically 0
    AVISizeInTimeScaleUnits : cardinal;
  end;

procedure ReadAVIHeader(aStream : TStream; var aAVIHeader : TAVIHeader);
begin
  aStream.Position := 32;
  aStream.ReadBuffer(aAVIHeader,sizeof(TAVIHeader));
end;

Måske kan du i stedet hente oplysningerne fra din afspiller? Det kræver at den loader filen hver gang og det kan være for langsomt.
Avatar billede tt2002 Nybegynder
18. juni 2004 - 20:30 #10
kan stadig ikke helt forstå hvordan jeg kommer ind til headeren i filen...

hvor skal man indsætte filnavnet i dit eksempel?
Avatar billede tt2002 Nybegynder
18. juni 2004 - 20:36 #11
dkn...

swissdelphicenter fungerede fint... men kun til avi

skal også kunne bruges til mpeg og wmv...

beklager...
Avatar billede tt2002 Nybegynder
18. juni 2004 - 20:49 #12
jeg har fundet ud af at delphis egen komponent Tanimate har en autosize-funktion, men den virker ikke, uanset hvilken fil jeg indlæser...

er der nogen der har en ide?
Avatar billede hrc Mester
20. juni 2004 - 12:34 #13
tt2002 -> Det er meningen at den fodres med en TFileStream som er åbnet på den fil du vil læse:

var
  fs : TFileStream;
  Header : TAVIHeader;
begin
  fs := TFileStream.Create('c:\Harry potter 5.avi',fmOpenRead);
  try
    ReadAVIHeader(fs,Header);
    // Gør et eller andet med headeren her.
  finally
    fs.Free;
  end;
end;
Avatar billede hrc Mester
20. juni 2004 - 12:34 #14
Nej, jeg har ikke lige den film liggende... ;-)
Avatar billede tt2002 Nybegynder
23. september 2004 - 16:31 #15
.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester