Fichiers Flac (et Ape) en VBA

Jack2

XLDnaute Occasionnel
Bonsoir, je suis nouveau sur le forum,

Comme cela est possible pour les fichiers MP3, je cherche comment lire les propriétés (tout ou partie) des fichiers audios non compressés pour les lister à partir de feuilles Excel (Flac principalement).

Merci
 

Modeste geedee

XLDnaute Barbatruc

Jack2

XLDnaute Occasionnel
Re : Fichiers Flac (et Ape) en VBA

Bonjour et merci pour les réponses.

J'ai un code quasi identique à celui que propose Nairolf, mais il n'est transposable que très partiellement pour les fichiers autres que MP3. Par contre, je ne comprend pas très bien comment exploiter les liens de Modeste geedee, notamment l'article des développeurs et IT. Je suis trop novice et je ne connais pas les notions de Data Binding, de WPF . Si quelqu'un peut m'aider, ce sera avec plaisir.
A+
 

MJ13

XLDnaute Barbatruc
Re : Fichiers Flac (et Ape) en VBA

Bonjour à tous

je cherche comment lire les propriétés (tout ou partie) des fichiers audios non compressés pour les lister à partir de feuilles Excel (Flac principalement

2 petites questions pour commencer:

-Quel logiciel utilises tu pour lire tes fichiers Flac?

-Sur l'explorateur de Windows, quelles sont les données fournies dans la partie Résumé des fichiers Flac?

Merci :).
 

Jack2

XLDnaute Occasionnel
Re : Fichiers Flac (et Ape) en VBA

Bonjour,

J'utilise Foobr2000 pour la lecture, la conversion... des fichiers. Dans l'explorateur, il n'y a que les dates de création et de modification, le type de fichier et la taille qui apparaissent. Aucun des tags contrairement au MP3, comme la durée, l'artiste et autres.

J'ai fouiné un peu partout sur Internet, j'ai trouvé des sources en c++ et une en visual basic je suppose. Le problème, c'est que je ne suis pas assez avancé pour déchiffrer, mais j'essaye. Je les mets au cas où cela intéresserait quelqu'un.

Code:
Public Class GlobalMembersFlac
		  ''' <summary>
		  '''   Lit les métadonnées du fichier FLAC.
		  ''' </summary>
		  ''' <param name = "fileName">Chemin d'accès du fichier FLAC à analyser</param>
		  Public Shared Public override Sub ReadMetadata(ByVal fileName As String)
			 FileName = fileName
			 ClearTags()
			 ClearArts()
			 metadataBlocks.Clear()

			 Dim fs As FileStream = Nothing
			 Try
				fs = New FileStream(FileName, FileMode.Open, FileAccess.Read, FileShare.Read)
				Length = fs.Length

				If Length = 0 Then
				   Throw New FileFormatException("The file is not a valid FLAC file because it is empty.")
				End If

				Dim br As var = New BinaryReader(fs)
				If Not fLaC.ArrayEquals(br.ReadBytes(4)) Then
				   Throw New FileFormatException("The file is not a valid FLAC file.")
				End If

				fs.Position = 18
				Dim buffer() As [byte] = br.ReadBytes(8)

				SampleRate = buffer(0)
				SampleRate = (SampleRate << 8) Or buffer(1)
				SampleRate = (SampleRate << 4) Or (buffer(2) >> 4)

				Channels = CType(((buffer(2) >> 1) And 7) + 1, [byte])

				BitsPerSample = CType((((buffer(2) And 1) << 4) Or (buffer(3) >> 4)) + 1, [byte])

				Samples = (buffer(3) And 15)
				Samples = (Samples << 8) Or buffer(4)
				Samples = (Samples << 8) Or buffer(5)
				Samples = (Samples << 8) Or buffer(6)
				Samples = (Samples << 8) Or buffer(7)

				fs.Position = 42 ' first metadata block following STREAM_INFO
				Dim last_metadata_block As Boolean
				Do
				   Dim startHeader As [byte] = br.ReadByte()
				   last_metadata_block = (startHeader >> 7) = 1
				   Dim blockType As var = CType(startHeader And 127, FlacMetadataBlock)

				   buffer = br.ReadBytes(3)
				   Dim size As Integer = buffer(0)
				   size = (size << 8) Or buffer(1)
				   size = (size << 8) Or buffer(2)

				   Select Case blockType
					  Case FlacMetadataBlock.StreamInfo
						 Throw New FileFormatException("The file contains several Stream Info blocks.")
					  Case FlacMetadataBlock.Padding
						 fs.Position += size
					  Case FlacMetadataBlock.VorbisComment
						 ReadVorbisComment(fs, False)
					  Case FlacMetadataBlock.Picture
						 buffer = br.ReadBytes(size)
						 AddArt(New ID3PictureFrame(buffer))
					  Case Else ' APPLICATION, SEEKTABLE, CUESHEET, other blocks
						 Dim metadata As var = New [byte](size + 4 - 1){}
						 metadata(0) = CType(blockType, [byte])
						 buffer.CopyTo(metadata, 1)
						 buffer = br.ReadBytes(size)
						 buffer.CopyTo(metadata, 4)
						 metadataBlocks.Add(metadata)
				   End Select
				Loop While Not last_metadata_block

				If Vendor Is Nothing Then
				   Throw New FileFormatException("The Vorbis comment header cannot be found in the file.")
				End If

				offsetAudioFrameStart = fs.Position
			 Finally
				If fs IsNot Nothing Then
					fs.Close()
				End If
			 End Try
		  End Sub
End Class

A+
 

MJ13

XLDnaute Barbatruc
Re : Fichiers Flac (et Ape) en VBA

Re

Pour ton code, je ne pourrais pas t'aider car en le copiant dans un module VB, j'ai beaucoup de rouge :confused:.

Sinon, je te conseille d'aller voir du côté de Metatogger. Fait une recherche sur le net.
 

Pièces jointes

  • BeaucoupDeRouge.jpg
    BeaucoupDeRouge.jpg
    68.1 KB · Affichages: 71

Discussions similaires

Réponses
6
Affichages
336

Statistiques des forums

Discussions
312 330
Messages
2 087 335
Membres
103 523
dernier inscrit
mounir2025