bubulemaster
Messages postés19Date d'inscriptionjeudi 1 avril 2004StatutMembreDernière intervention22 mars 2010 17 sept. 2008 à 14:38
Bonjour,
j'ai cherché sur internet et sur le site de macromedia, je ne trouve pas la doc du format FLV.
Je voudrais juste connaitre la durée et la dimension de la vidéo.
Merci
pjbou
Messages postés1Date d'inscriptionmercredi 18 mai 2005StatutMembreDernière intervention 7 septembre 2008 7 sept. 2008 à 00:18
Bonjour!
Le code a l'air très complet et semble bien marcher pour les autres, mais je suis incapable de l'insérer dans mon appli VB. J'utilise VB Express 2008. Quand je le colle dans un module, j'ai un 40aine d'erreurs qui apparaissent... Je suis débutant, et je ne vois vraiment pas comment résoudre le problème.
Merci!
GEDDi
Messages postés206Date d'inscriptionlundi 22 novembre 1999StatutMembreDernière intervention 3 juillet 2008 31 janv. 2008 à 01:54
Hello,
Merci pour ton code!
Je l'ai adapté au FBSL :)
Voici le code pour celles et ceux que ça intéresse :
#AppType CONSOLE
Dim mnIn As Integer, mnOut As Integer
Dim %i, $sBuff, %nPos
Flv2Mp3( "Stupeflip - Je fume pu d'shit.flv" )
Function Flv2Mp3(ByVal szFLVFile As String) As Integer
mnIn = FileOpen( szFLVFile, BINARY_INPUT )
Flv2Mp3 = False
If (ReadUInt32() = &H464C5601) Then
ReadUInt8() 'flags
nPos = ReadUInt32()
FileSeek( mnIn, nPos )'+1
ReadUInt32() 'prevTagSize
Do Until FileEof(mnIn)
ReadTag()
ReadUInt32() 'prevTagSize
Loop
If mnOut Then
Flv2Mp3 = True
FileClose( mnOut )
mnOut = 0
End If
End If
FileClose( mnIn )
End Function
Sub ReadTag()
Dim eTagType As Integer, eMediaType As Integer, nLength As Integer, xbData As String
Static xTotal As Integer
eTagType = ReadUInt8()
nLength = ReadUInt24()
ReadUInt32() 'timeStamp
ReadUInt24() 'streamID
If nLength Then
eMediaType = ReadUInt8()
xbData = ReadBytes(nLength - 1)
'# Audio et de type MP3 If (eTagType &H8) And (eMediaType \ 16) 2 Then
If mnOut = 0 Then
xTotal = 0
mnOut = FileOpen( ".\out.mp3", BINARY_NEW )
End If
xTotal = xTotal + nLength
FilePut( mnOut, xbData )
'Locate(5, 5): Print xTotal, " MP3 bytes written"
End If
End If
End Sub
Function ReadBytes(vnLength As Integer)
sBuff = FileGet(mnIn, vnLength): Return sBuff
End Function
Function ReadUInt32() As Integer
sBuff = FileGet( mnIn, 4): Return CVI(sBuff, 1)
End Function
Function ReadUInt24() As Integer
sBuff = FileGet( mnIn, 3): Return CVI(sBuff, 1)
End Function
Function ReadUInt8() As Integer
sBuff = FileGet( mnIn, 1): Return CVI(sBuff, 1)
End Function
Enjoy!
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 18 janv. 2008 à 10:00
la doc est dispo chez macromédia ^^
CrackPath va me reservir...
j'avais codé tout un tas de conditions, c'etait sacrément tordu, et j'avais pas cette même garantie de bien gérer tous les cas. Des fois les choses les plus simples...
GetUnique a été codée y'a longtemps...
ces deux fonctions sont d'ailleurs sur Codyx, pour les garder sous le coude
cs_moustachu
Messages postés1079Date d'inscriptionjeudi 14 novembre 2002StatutMembreDernière intervention 1 janvier 2012 18 janv. 2008 à 09:44
Ebartsoft>C'est justement parce que j'avais reçu un coup de fil que je me suis dit que j'avais pas fermé ma balise.Pfiouuu, je suis pas passé loin !
Renfield>Super commenté, ça fait plaisir ! très bien tes fonctions CrackPath et surtout GetUnique. Où as-tu appris comment était constitué un fichier flv ?
++
Moustachu
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 17 janv. 2008 à 21:44
la suite ?
ben j'ai ça en local...
en "Sample" d'une sorte de proxy http
cs_EBArtSoft
Messages postés4525Date d'inscriptiondimanche 29 septembre 2002StatutModérateurDernière intervention22 avril 20199 17 janv. 2008 à 21:12
moustachu> oulaaa malheureux fait gaffe faut toujours fermer la balise en mode hypocrite sinon on fini au gouvernement :p
Ren> [mode semi-pressé de voir la suite = tru] c'est pour quand le mode avec les socket hein dit c'est pour quand [mode semi-pressé de voir la suite = falçe]
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 17 janv. 2008 à 14:32
j'oubliais...
seule la version rapide (qui utilise entre autres le FileMapping) a été mise a jour.
la version VB ne changera pas
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 17 janv. 2008 à 14:31
Mis à jour.
j'ai commenté
et il y a maintenant deux façons de faire:
Dim sFileName As String
Dim sFolder As String
sFolder = "E:\Deezer"
sFileName = Dir$(sFolder & "*.flv")
Do While LenB(sFileName)
Flv2Mp3 sFolder & sFileName, sFolder & "Mp3"
sFileName = Dir$()
Loop
ou bien
Dim xbData() As Byte
Open "E:\Deezer\Untitled - 83_.flv" For Binary Access Read As #1
ReDim xbData(LOF(1))
Get #1, , xbData
Close #1
Flv2Mp3 xbData, "E:\Deezer\Mp3"
Donc soit:
- Nom du fichier Flv source
- Tableau de Byte (contenu du fichier)
comme je l'ai dit plus haut, ca évite de passer par un fichier intermédiaire dans le cadre de fichiers reçus en live...
concernant le second paramètre, plusieurs cas sont possibles :
- il est possible de le laisser vierge.
1/ depuis un fichier, on écrit dans un fichier portant le même nom (extension mp3)
2/ depuis un flux, App.Path & "\Untitled.mp3"
- Si vous spécifiez un nom de dossier, ou un nom de fichier, il sera complété...
à noter que la fonction n'écrasera aucun fichier: elle incrémentera les noms de fichiers
à noter également que la fonction va s'assurer que l'arborescence de sortie existe bien (ou la créer si besoin est).
cs_moustachu
Messages postés1079Date d'inscriptionjeudi 14 novembre 2002StatutMembreDernière intervention 1 janvier 2012 17 janv. 2008 à 09:49
3 commentaires en deux minutes, j'aurais pu condenser...
[Mode chieur = On]Ca aurait été bien un peu plus de commentaires, là, on dirait presque du C ^^[Mode chieur = Off]
++
Moustachu
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 17 janv. 2008 à 09:47
je vais modifier un peu le module, pour pouvoir lire depuis un flux en mémoire, pas forcément depuis un fichier...
parce que mes sockets interceptent un flux, hein, pas un fichier ...
alors si je peux éviter de passer par un fichier .flv intermédiaire.
je ne sais pas si le mode hypocrite est nécessaire, je ne fait que jouer avec ce qui vient sur mon poste après tout...
cs_moustachu
Messages postés1079Date d'inscriptionjeudi 14 novembre 2002StatutMembreDernière intervention 1 janvier 2012 17 janv. 2008 à 09:43
Ouppsss...il faut fermer les balises !
[mode hypocrite=off]
Merci pour ce code. très instructif. Surtout d'avoir les deux méthodes.
++
Moustachu
cs_moustachu
Messages postés1079Date d'inscriptionjeudi 14 novembre 2002StatutMembreDernière intervention 1 janvier 2012 17 janv. 2008 à 09:42
[mode hypocrite=on]
C'est quoi un mp3
cs_EBArtSoft
Messages postés4525Date d'inscriptiondimanche 29 septembre 2002StatutModérateurDernière intervention22 avril 20199 14 janv. 2008 à 17:37
[Mode chieur = On] Ca aurait ete bien d'avoir les deux methodes pour les debutants qui debutent :p [Mode chieur = Off]
Si la fonction est destiné à etre appelé en continu pourquoi ne pas en faire une classe avec genre "Open" "Convert" "Close" ce qui permettrait de tirer un max de profit du mapping. Sinon autant ouvrir/lire/ecrire
(c'etait peut etre a mettre dans le mode chieur ça non ?)
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 14 janv. 2008 à 17:27
Comme mentionné dans la MàJ, j'ai passé le code de lecture au FileMapping, et modifié les lectures qui n'étaient que des skip par de simples incrémentation du pointeur de lecture...
cs_EBArtSoft
Messages postés4525Date d'inscriptiondimanche 29 septembre 2002StatutModérateurDernière intervention22 avril 20199 14 janv. 2008 à 16:19
Ohlala je clique pour voir le code vite fait et la je tombe sur quoi !!!
"Dim xbBytes(2) As Byte"
"CopyMemory ReadUInt24, xbBytes(0), 4"
Copier 4 octets quand on en a que 3 c'est pas bieeeeen !
Bon VB align tout sur 4 donc tu risque rien mais bon par principe :p
Aller je regarde pas plus sinon je vais ecrire un roman et oui quand on aime on ne compte pas. Enfin ça fait toujours plaisir de voir une de tes sources.
@+
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 14 janv. 2008 à 16:17
'lut EB.
euh... je m'interesse en fait pas trop aux vidéos, pas le temps de les regarder ^^
le Mp3 en fond dans les oreilles, pas besoin de lacher l'IDE des yeux...
dans l'absolu, ma source est mauvaise, puisqu'elle accède sans arrêt aux fichiers... on pourrait les mapper en mémoire, et faire de la voltige, mais bon, le temps de traitement semble correct, pour le moment.
j'y reviendrais peut etre, si le besoin s'en fait sentir.
cs_EBArtSoft
Messages postés4525Date d'inscriptiondimanche 29 septembre 2002StatutModérateurDernière intervention22 avril 20199 14 janv. 2008 à 16:12
M%$!de tu ma eu de vitesse, bon faut dire que la source traine sur mon pc depuis Aout dernier.
Bien joué :p
Bon et pour la video ? hein hein ? J'ai vu les source de flvsplitter (c#) tout est dedans.
17 sept. 2008 à 14:38
j'ai cherché sur internet et sur le site de macromedia, je ne trouve pas la doc du format FLV.
Je voudrais juste connaitre la durée et la dimension de la vidéo.
Merci
7 sept. 2008 à 00:18
Le code a l'air très complet et semble bien marcher pour les autres, mais je suis incapable de l'insérer dans mon appli VB. J'utilise VB Express 2008. Quand je le colle dans un module, j'ai un 40aine d'erreurs qui apparaissent... Je suis débutant, et je ne vois vraiment pas comment résoudre le problème.
Merci!
31 janv. 2008 à 01:54
Merci pour ton code!
Je l'ai adapté au FBSL :)
Voici le code pour celles et ceux que ça intéresse :
Enjoy!
18 janv. 2008 à 10:00
CrackPath va me reservir...
j'avais codé tout un tas de conditions, c'etait sacrément tordu, et j'avais pas cette même garantie de bien gérer tous les cas. Des fois les choses les plus simples...
GetUnique a été codée y'a longtemps...
ces deux fonctions sont d'ailleurs sur Codyx, pour les garder sous le coude
18 janv. 2008 à 09:44
Renfield>Super commenté, ça fait plaisir ! très bien tes fonctions CrackPath et surtout GetUnique. Où as-tu appris comment était constitué un fichier flv ?
++
Moustachu
17 janv. 2008 à 21:44
ben j'ai ça en local...
en "Sample" d'une sorte de proxy http
17 janv. 2008 à 21:12
Ren> [mode semi-pressé de voir la suite = tru] c'est pour quand le mode avec les socket hein dit c'est pour quand [mode semi-pressé de voir la suite = falçe]
17 janv. 2008 à 14:32
seule la version rapide (qui utilise entre autres le FileMapping) a été mise a jour.
la version VB ne changera pas
17 janv. 2008 à 14:31
j'ai commenté
et il y a maintenant deux façons de faire:
Dim sFileName As String
Dim sFolder As String
sFolder = "E:\Deezer"
sFileName = Dir$(sFolder & "*.flv")
Do While LenB(sFileName)
Flv2Mp3 sFolder & sFileName, sFolder & "Mp3"
sFileName = Dir$()
Loop
ou bien
Dim xbData() As Byte
Open "E:\Deezer\Untitled - 83_.flv" For Binary Access Read As #1
ReDim xbData(LOF(1))
Get #1, , xbData
Close #1
Flv2Mp3 xbData, "E:\Deezer\Mp3"
Donc soit:
- Nom du fichier Flv source
- Tableau de Byte (contenu du fichier)
comme je l'ai dit plus haut, ca évite de passer par un fichier intermédiaire dans le cadre de fichiers reçus en live...
concernant le second paramètre, plusieurs cas sont possibles :
- il est possible de le laisser vierge.
1/ depuis un fichier, on écrit dans un fichier portant le même nom (extension mp3)
2/ depuis un flux, App.Path & "\Untitled.mp3"
- Si vous spécifiez un nom de dossier, ou un nom de fichier, il sera complété...
à noter que la fonction n'écrasera aucun fichier: elle incrémentera les noms de fichiers
à noter également que la fonction va s'assurer que l'arborescence de sortie existe bien (ou la créer si besoin est).
17 janv. 2008 à 09:49
[Mode chieur = On]Ca aurait été bien un peu plus de commentaires, là, on dirait presque du C ^^[Mode chieur = Off]
++
Moustachu
17 janv. 2008 à 09:47
parce que mes sockets interceptent un flux, hein, pas un fichier ...
alors si je peux éviter de passer par un fichier .flv intermédiaire.
je ne sais pas si le mode hypocrite est nécessaire, je ne fait que jouer avec ce qui vient sur mon poste après tout...
17 janv. 2008 à 09:43
[mode hypocrite=off]
Merci pour ce code. très instructif. Surtout d'avoir les deux méthodes.
++
Moustachu
17 janv. 2008 à 09:42
C'est quoi un mp3
14 janv. 2008 à 17:37
Si la fonction est destiné à etre appelé en continu pourquoi ne pas en faire une classe avec genre "Open" "Convert" "Close" ce qui permettrait de tirer un max de profit du mapping. Sinon autant ouvrir/lire/ecrire
(c'etait peut etre a mettre dans le mode chieur ça non ?)
14 janv. 2008 à 17:27
14 janv. 2008 à 16:19
"Dim xbBytes(2) As Byte"
"CopyMemory ReadUInt24, xbBytes(0), 4"
Copier 4 octets quand on en a que 3 c'est pas bieeeeen !
Bon VB align tout sur 4 donc tu risque rien mais bon par principe :p
Aller je regarde pas plus sinon je vais ecrire un roman et oui quand on aime on ne compte pas. Enfin ça fait toujours plaisir de voir une de tes sources.
@+
14 janv. 2008 à 16:17
euh... je m'interesse en fait pas trop aux vidéos, pas le temps de les regarder ^^
le Mp3 en fond dans les oreilles, pas besoin de lacher l'IDE des yeux...
dans l'absolu, ma source est mauvaise, puisqu'elle accède sans arrêt aux fichiers... on pourrait les mapper en mémoire, et faire de la voltige, mais bon, le temps de traitement semble correct, pour le moment.
j'y reviendrais peut etre, si le besoin s'en fait sentir.
14 janv. 2008 à 16:12
Bien joué :p
Bon et pour la video ? hein hein ? J'ai vu les source de flvsplitter (c#) tout est dedans.
@+