Re: U-Tube grabber

Publié par Gerome le 31/01/2008 01:42:19
Merci à toi Philo!

J'ai trouvé un moyen d'extraire la piste MP3 d'un FLV et ce sans passer par FFFMPEG & co :)
Une mise à jour sera bientôt disponible :)

Pour celles et ceux qui ont FBSL sur leur poste voilà le code d'extraction MP3 d'un FLV :

#AppType CONSOLE

Dim mnIn As IntegermnOut As Integer
Dim 
%i$sBuff, %nPos

Flv2Mp3
"Stupeflip - Je fume pu d'shit.flv" )

Function 
Flv2Mp3(ByVal szFLVFile As String) As Integer
    mnIn 
FileOpenszFLVFileBINARY_INPUT )
    
Flv2Mp3 False
    
If (ReadUInt32() = &H464C5601Then
        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
    
FileClosemnIn )
End Function

Sub ReadTag()
Dim eTagType As IntegereMediaType As IntegernLength As IntegerxbData 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!

Cette contribution était de : http://www.gratilog.net/xoops/newbb/viewtopic.php?forum=2&topic_id=3038&post_id=15906