Tester si un fichier est une video flv [Résolu]

cs_benus 20 Messages postés lundi 14 mars 2005Date d'inscription 29 juillet 2009 Dernière intervention - 19 avril 2008 à 13:28 - Dernière réponse : cs_cantador 4996 Messages postés dimanche 26 février 2006Date d'inscription 27 mars 2018 Dernière intervention
- 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)?
Afficher la suite 

Votre réponse

14 réponses

cs_cantador 4996 Messages postés dimanche 26 février 2006Date d'inscription 27 mars 2018 Dernière intervention - 19 avril 2008 à 23:16
0
Merci
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
Commenter la réponse de cs_cantador
Cirec 4231 Messages postés vendredi 23 juillet 2004Date d'inscription 3 août 2018 Dernière intervention - 20 avril 2008 à 00:24
0
Merci
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="" />
Commenter la réponse de Cirec
Cirec 4231 Messages postés vendredi 23 juillet 2004Date d'inscription 3 août 2018 Dernière intervention - 20 avril 2008 à 00:43
0
Merci
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="" />
Commenter la réponse de Cirec
cs_cantador 4996 Messages postés dimanche 26 février 2006Date d'inscription 27 mars 2018 Dernière intervention - 20 avril 2008 à 11:24
0
Merci
hé cirec, c'est bon le merle !
trop fort..

cantador
Commenter la réponse de cs_cantador
cs_benus 20 Messages postés lundi 14 mars 2005Date d'inscription 29 juillet 2009 Dernière intervention - 20 avril 2008 à 15:53
0
Merci
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?
Commenter la réponse de cs_benus
Cirec 4231 Messages postés vendredi 23 juillet 2004Date d'inscription 3 août 2018 Dernière intervention - 20 avril 2008 à 16:58
0
Merci
ben comment veux tu lire une partie d'un fichier sans le loader

 
@+
Cirec

<hr siz="" />
Commenter la réponse de Cirec
cs_benus 20 Messages postés lundi 14 mars 2005Date d'inscription 29 juillet 2009 Dernière intervention - 20 avril 2008 à 17:00
0
Merci
c'etait justement ma question, est-t-il possible de loader uniquement les 3 premiers octets?
Commenter la réponse de cs_benus
Cirec 4231 Messages postés vendredi 23 juillet 2004Date d'inscription 3 août 2018 Dernière intervention - 20 avril 2008 à 17:44
0
Merci
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="" />
Commenter la réponse de Cirec
f0xi 4304 Messages postés samedi 16 octobre 2004Date d'inscription 9 mars 2018 Dernière intervention - 20 avril 2008 à 19:25
0
Merci
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%" />
Commenter la réponse de f0xi
Cirec 4231 Messages postés vendredi 23 juillet 2004Date d'inscription 3 août 2018 Dernière intervention - 20 avril 2008 à 19:38
0
Merci
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="" />
Commenter la réponse de Cirec
cs_benus 20 Messages postés lundi 14 mars 2005Date d'inscription 29 juillet 2009 Dernière intervention - 20 avril 2008 à 20:41
0
Merci
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;
Commenter la réponse de cs_benus
cs_cantador 4996 Messages postés dimanche 26 février 2006Date d'inscription 27 mars 2018 Dernière intervention - 30 avril 2008 à 14:21
0
Merci
Tiens je viens de voir que :
$01564C46
çà donne en texte :




�1;VLF



une explication ?

cantador
Commenter la réponse de cs_cantador
Cirec 4231 Messages postés vendredi 23 juillet 2004Date d'inscription 3 août 2018 Dernière intervention - 30 avril 2008 à 15:36
0
Merci
Ben  est la représentation Hexa de FLV mais inversé ... les octets sont écrits en sens inverse dans un fichier binaire

 
@+
Cirec

<hr siz="" />
Commenter la réponse de Cirec
cs_cantador 4996 Messages postés dimanche 26 février 2006Date d'inscription 27 mars 2018 Dernière intervention - 30 avril 2008 à 17:08
0
Merci
hoops..
les fichiers binaires c'est vraiment pas mon truc..
mais on ne sait jamais..
merci cirec

cantador
Commenter la réponse de cs_cantador

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.