Tester si un fichier est une video flv

Résolu
cs_benus Messages postés 20 Date d'inscription lundi 14 mars 2005 Statut Membre Dernière intervention 29 juillet 2009 - 19 avril 2008 à 13:28
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 - 30 avril 2008 à 17:08
bonjour,
connaissez-vous une librairie ou une astuce qui permet de tester si l'en-tete d'un fichier est bien au format flv (le format video de flash)?

14 réponses

cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
19 avril 2008 à 23:16
Tu crées un objet TShockwaveFlash et tu lances un Play
en encapsulant tes écritures par un Try Except..
C'est pas top mais faute de grives..

cantador
0
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
20 avril 2008 à 00:24
il y a du merle au menu

sinon tu check les 3 premiers octets (caractères) du fichier ... et si c'est "FLV" ...
je te laisse deviner

 
@+
Cirec

<hr siz="" />
0
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
20 avril 2008 à 00:43
Voici un petit exemple :

Const FLVSignature = $1564C46;

Procedure
TForm1.Button1Click(Sender: TObject);
Var
MS : TMemoryStream;
    Sign : Longint;
Begin
  With TMemoryStream.Create Do
  Try
    LoadFromFile('test.flv');
    ReadBuffer(Sign, SizeOf(Sign));

     If Sign = FLVSignature Then ShowMessage('Fichier
Flash');
  Finally
    Free;
  End;
End;

 
@+
Cirec

<hr siz="" />
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
20 avril 2008 à 11:24
hé cirec, c'est bon le merle !
trop fort..

cantador
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_benus Messages postés 20 Date d'inscription lundi 14 mars 2005 Statut Membre Dernière intervention 29 juillet 2009 1
20 avril 2008 à 15:53
merci ce code me parrait assez optimisé mais au lieu de faire un loadfile, n'est-il pas possible de lire uniquement les 3 premiers octets du fichier?
0
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
20 avril 2008 à 16:58
ben comment veux tu lire une partie d'un fichier sans le loader

 
@+
Cirec

<hr siz="" />
0
cs_benus Messages postés 20 Date d'inscription lundi 14 mars 2005 Statut Membre Dernière intervention 29 juillet 2009 1
20 avril 2008 à 17:00
c'etait justement ma question, est-t-il possible de loader uniquement les 3 premiers octets?
0
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
20 avril 2008 à 17:44
ben c'est ce que je fais ... le fichier est ouvert et je lis les premier caractères et pas plus, puis le fichier est refermé ... on ne peut pas faire moins

ps : dans l'exemple donné je lis les 4 premiers et non les 3 premiers

 
@+
Cirec

<hr siz="" />
0
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
20 avril 2008 à 19:25
function IsFlashVideoFile(const FileName: string): boolean;
var Sign : LongWord;
const FLVSignature = $01564C46;
begin
  Result := false;
  if not FileExists(FileName) then
    Exit;
  with TFileStream.Create(FileName, fmOpenRead) Do
  try
    ReadBuffer(Sign, 4);    Result :Sign FLVSignature;
  finally
    Free;
  end;
end;





<hr size="2" width="100%" />
0
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
20 avril 2008 à 19:38
ah, F0xi m'a grillé au poteau

j'allais faire la même chose pour la poster dans les Snippets

Trop tard

 
@+
Cirec

<hr siz="" />
0
cs_benus Messages postés 20 Date d'inscription lundi 14 mars 2005 Statut Membre Dernière intervention 29 juillet 2009 1
20 avril 2008 à 20:41
tu es pas loin de la mienne qui pourrait etre ameliorée grandement je pense (je debute avec le language delphi)  :)

function IsFlvFile(FilePath:string):boolean;
Var //MS : TMemoryStream;
    Sign : Longint;
    Extention : string;
Const FLVSignature = $1564C46;
Begin
  result:=false;

  Extention:=ExtractFileExt(FilePath);
  Extention:=StringReplace(Extention,'.','',[rfReplaceAll, rfIgnoreCase]);

  if (FilePath<>'') AND (Extention<>'htm') AND (Extention<>'html')
  AND (Extention<>'css') AND (Extention<>'js') AND (Extention<>'gif')
  AND (Extention<>'jpg') AND (Extention<>'png') AND (Extention<>'txt') then
  begin
    With TMemoryStream.Create Do
    Try
      LoadFromFile(FilePath);

      try
        ReadBuffer(Sign, SizeOf(Sign));
      except
        ShowMessage('cant read: '+FilePath);
      end;
           
      If Sign = FLVSignature Then
      begin
        ShowMessage('Fichier Flash: '+FilePath);
        result:=true;
      end;
    Finally
      Free;
    End;
  end;
End;
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
30 avril 2008 à 14:21
Tiens je viens de voir que :
$01564C46
çà donne en texte :




�1;VLF



une explication ?

cantador
0
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
30 avril 2008 à 15:36
Ben  est la représentation Hexa de FLV mais inversé ... les octets sont écrits en sens inverse dans un fichier binaire

 
@+
Cirec

<hr siz="" />
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
30 avril 2008 à 17:08
hoops..
les fichiers binaires c'est vraiment pas mon truc..
mais on ne sait jamais..
merci cirec

cantador
0
Rejoignez-nous