L’empreinte digitale audio saute l’intro d’une émission, de manière fiable

Manque de lecteur DVD, [jg] regardait une série télévisée sous la forme d’un tas de fichiers vidéo .avi. Bien sûr, lorsque chaque épisode contient une intro complète, ce n’est qu’une question de temps avant que cela ne devienne trop ennuyeux pour rester assis.

Les sauts de chapitre sont insérés de manière fiable autour de l’intro, même s’ils ne se produisent pas toujours au même endroit.

La méthode habituelle pour sauter l’intro sur un fichier vidéo simple est simple:

  1. Faites glisser manuellement la lecture vers l’avant au-delà de l’intro.
  2. Oups, c’est trop loin, ramenez-le.
  3. Ugh l’a trop inversé, pousse-le en avant.
  4. Ok, c’est bien.

[jg] était certain qu’il y avait un meilleur moyen, et la solution utilisait l’empreinte audio pour insérer des sauts de chapitre. Les fichiers vidéo simples ont maintenant des sauts de chapitre autour de l’intro, ce qui permet de passer facilement directement au contenu. La raison derrière le choix de cette méthode est simple: l’intro de l’émission dure toujours 52 secondes, mais elle n’est pas toujours au même endroit. L’intro joue quelque part dans les deux à cinq premières minutes d’un épisode, le simple fait de passer à un horodatage spécifique ne fera donc pas l’affaire.

Le premier travail consiste à extraire l’audio d’une séquence d’introduction, afin qu’elle puisse être utilisée pour la prise d’empreintes digitales. Exporter les 15 premières minutes d’audio avec ffmpeg crée facilement un fichier wav qui peut être coupé avec un éditeur audio de votre choix. Ce clip est introduit dans la bibliothèque open source SoundFingerprinting en tant que signature, puis chaque vidéo a sa piste audio exportée et la signature y est identifiée. SoundFingerprinting détecte donc où (jusqu’à la seconde) l’intro existe dans chaque fichier vidéo.

Marquer des sauts de chapitre en utilisant ces informations est conceptuellement simple, mais finit par être un peu détourné car il semble que les fichiers .avi ne disposent pas d’un moyen simple d’encoder des chapitres. Cependant, les fichiers .mkv sont une autre affaire. Pour contourner ça, [jg] convertit d’abord chaque .avi en .mkv en utilisant ffmpeg puis les épissures dans le chapitre rompent avec mkvmerge. Un élément important est que le reformatage entre .avi et .mkv se fait sans recoder complètement la vidéo elle-même, c’est donc un processus rapide. Le résultat est un tas de fichiers .mkv avec des sauts de chapitre autour de l’intro, où qu’elle se trouve!

Le script est disponible ici pour que tout le monde puisse jouer avec, et la page du projet est une bonne référence d’apprentissage car [jg] fournit gentiment toutes les options de ligne de commande utilisées pour chaque outil. Vous souhaitez utiliser la prise d’empreintes audio dans vos propres projets? N’oubliez pas de consulter également Olaf, la méthode d’empreinte acoustique trop légère qui peut être mise en œuvre dans les systèmes embarqués et les navigateurs Web.