Question Windows lisant l'intégralité du fichier audio ouvert


J'ai remarqué un comportement quelque peu étrange en jouant avec certains fichiers MP3 sous Windows 7 (32 bits) que j'ai récemment acheté sur Amazon. Ils sont stockés sur un partage réseau (Samba) et, pour l'essentiel, il semblait y avoir un retard important dans le démarrage de leur lecture. J'avais supposé, depuis que j'utilisais mon propre logiciel ici, que c'était probablement quelque chose que je faisais; Cependant, le délai est de plus en plus court fopen call (cela va plus loin, cela se produit également avec la boîte de dialogue GetOpenFileName, il y a une pause notable après la sélection du fichier, avant la fermeture de la boîte de dialogue et le retour du contrôle au code). Ce dernier comportement suggère que le compilateur / chaîne d'outils n'est pas pertinent dans la mesure où il s'agit d'un appel Win32 natif en cours.

Une trace rapide de Wireshark indique que l'appel open (ou GetOpenFileName) déclenche la lecture du fichier entier. Le problème se pose également si le fichier se trouve sur une autre boîte Windows (ce n'est donc pas une bizarrerie Samba ici). Il semble être lié aux métadonnées attachées au fichier; si je l'enlève, le fichier s'ouvre presque instantanément. Il est intéressant de noter que sur un fichier qui ne présente pas ce problème, Wireshark montre que même alors, Windows lira ~ 64 Ko à l’avant du fichier, puis ~ 32 Ko à la fin. Étant donné que vous pouvez avoir des balises ID3 au début et à la fin du fichier, il semble que Windows soit en train de pré-lire le tag pour ses propres fins et que, pour certaines raisons, les balises

Mon Googling jusqu'ici m'a conduit à regarder les gestionnaires de propriété, et plus particulièrement ce lien avait beaucoup d'informations utiles à ce sujet. Un petit problème - Je n'ai pas de gestionnaire de propriétés défini pour .mp3, ni aucun autre contenu audio, donc je suis un peu perdu pour expliquer ce comportement.

Je pensais que c'était peut-être une balise ID3v4, car je me souviens que ceux-ci pourraient (en théorie) être dispersés dans le fichier, ce qui expliquerait pourquoi Windows lit le fichier en entier. Ce n'est pas, c'est ID2v3.


3
2018-06-06 18:44


origine


Cela peut aider si vous avez identifié / décrit votre environnement de développement (c.-à-d. Quel compilateur vous utilisez). S'il vous plaît ne pas répondre dans les commentaires; modifier votre question pour la rendre plus claire et plus complète. - Scott
Je pense que Windows lui-même ajoute des gestionnaires. Si vous pouvez ajouter une colonne comme le bitrate à une fenêtre de l'explorateur en vue détaillée en faisant un clic droit dans l'en-tête, un gestionnaire doit être présent. - LotPings
Peut certainement ajouter du bitrate à la vue, n'a pas l'esprit rempli. Je suppose que tout cela me dit qu'il y a un gestionnaire quelque part qui peut générer cette information, mais cela ne signifie pas nécessairement que c'est pour le contenu audio. - fridgemagnet
Dans le cas des actions, chercher à la fin du fichier peut entraîner un transfert complet, n'est-ce pas? En d'autres termes: "Samba supporte-t-il fseek"? - Yorik
Notez que j'ai mentionné "Le problème survient également si le fichier est situé sur une autre boîte Windows (donc ce n'est pas une bizarrerie Samba ici)". De même, pour les fichiers qui ne présentent pas ce problème, vous pouvez toujours lire le début et la fin du fichier dans la trace. - fridgemagnet


Réponses: