Comment comparer deux fichiers audio sans perte?

1

J'ai un fichier M4A qui est également converti en fichier FLAC. Je voudrais voir si la conversion est sans perte, à savoir, si la sortie en pcm de M4A est exactement identique à celle du décodage FLAC.

Je suppose qu'il existe un moyen d'utiliser FFmpeg ou Libav pour produire des sorties "brutes" et les comparer?

Déterminant
la source
Voir aussi: superuser.com/questions/136514/…
mécanique

Réponses:

3

Je voudrais essayer de les convertir tous les deux au format WAV et de comparer leurs sommes de contrôle.

ffmpeg -i file1.m4a file1.wav
ffmpeg -i file2.flac file2.wav
md5sum file1.wav
md5sum file2.wav
rm file?.wav

Comparez les md5 produits. S'ils correspondent, félicitations! Vos fichiers contiennent les mêmes données. Si elles ne correspondent pas, postez le résultat de ces commandes ici, et je regarderai. Potentiellement, il y a une différence de bitrate ou quelque chose comme ça (il ne devrait pas y en avoir ... mais il y en a peut-être, je ne sais pas.)

Notez que ffmpegs générera des fichiers intermédiaires relativement volumineux.

la trentième fois
la source
Il semble que la taille de sortie ffmpeg -y -i in.m4a -ac 2 -ar 48000 -acodec flac out.flacdiffère de celle de ffmpeg -y -i in.m4a -acodec flac out.flac. Je n'ai aucune idée de ce qui se passe lors de la conversion, ainsi que des paramètres subtils. Pourriez-vous expliquer un peu?
Déterminant
Avec cette dernière commande, md5sum est identique.
Déterminant
Et la commande précédente est copiée à partir d'un forum, je suppose que la taille du fichier a quelque chose à voir avec le nombre "48000", non?
Déterminant
1
Ouaip. Voir, le -ar 48000dit d'utiliser 48 000 échantillons par seconde. Si cela diffère du nombre d'échantillons par seconde de la source, ffmpeg interpole (conserve des valeurs supplémentaires entre les deux), ce qui rend le fichier résultant différent. Si vous laissez simplement ffmpeg détecter automatiquement tout, il essaie de changer le moins possible.
trentethreeforty
5
@ymfoi WAV n'est pas un standard de fichier brut en soi. Les fichiers WAV ne sont que des conteneurs et peuvent donc contenir différents codecs audio. Dans ce cas, ce sera l’audio PCM (modulation par impulsions et code), qui est sans perte. Mais il peut aussi être codecs compressés dans un fichier WAV: en.wikipedia.org/wiki/Wav#WAV_file_compression_codecs_compared
slhck
11

Vous pouvez utiliser le md5multiplexeur dans ffmpeg pour calculer et imprimer le hachage MD5 de toutes les images audio (et vidéo) en entrée sans avoir besoin de fichiers intermédiaires. Dans cet exemple, le flac a été créé à partir du fichier MP3 (généralement une procédure recommandée n'est pas recommandée, mais il ne s'agit que d'une démonstration).

$ ffmpeg -i left_right.mp3 -map 0:a -f md5 - 2>/dev/null
MD5=a34bfd9245ad6d69eddcb92035219044

$ ffmpeg -i left_right.flac -map 0:a -f md5 - 2>/dev/null
MD5=a34bfd9245ad6d69eddcb92035219044

Il y a aussi le framemd5multiplexeur pour calculer et imprimer le hachage MD5 pour chaque paquet audio (et vidéo).

Voir également framemd5 Intro et HowTo .

llogan
la source
2
+1 C'est bien aussi parce que cela évite complètement le problème des métadonnées dans le fichier non compressé, ce qui pourrait rendre différents fichiers audio identiques.
un CVn