web-dev-qa-db-fra.com

Comment puis-je supprimer toutes les métadonnées d'un fichier vidéo quicktime?

Mon appareil photo prend des fichiers. Mov sous forme de films. Comment puis-je supprimer toutes leurs métadonnées afin de pouvoir les partager en toute confiance sur youtube sans partager accidentellement le lieu/le lieu de tournage, le type d'appareil photo que je possède, etc. , un programme d'interface graphique serait mieux.

7

Eh bien, j'ai une réponse en ligne de commande:

Note: Ceci ne fonctionne qu'avec le ffmpeg inclus dans Ubuntu par défaut: il aura une version similaire à 0.8.1-4:0.8.1-0ubuntu1; cela NE FONCTIONNERA PAS avec les fichiers binaires ffmpeg que vous avez installés à partir d'un PPA tiers ou compilés par vous-même. Votre kilométrage peut varier.

  • Installez ces derniers: Sudo apt-get install ffmpeg libimage-exiftool-Perl
  • Ensuite, accédez à l'emplacement de votre fichier .mov source, nous l'appellerons test.mov
  • Et courir:

     ffmpeg -i test.mov -map_metadata -1 -vcodec copie -acodec copie test-nometadata.mov 
    
  • Vous pouvez ensuite utiliser exiftool pour vérifier son fonctionnement; exiftool test.mov et exiftool test-nometadata.mov devraient vous montrer la différence.

  • Voici mes exemples de sorties d'un ancien Nikon .mov avec des tonnes de métadonnées (Pastebin'd):

    1. avant - 80 lignes de métadonnées
    2. après - 52 lignes de métadonnées (même les créations, modifications, etc. ont été annulées)

(notez que l'ordre dans ffmpeg ci-dessus est essentiel - les fichiers d'entrée et de sortie doivent être spécifiés à la toute fin)

13
ish

NOTE: Avec une version récente de ffmpeg (et probablement avconv, mais je n’ai pas testé cela), vous pouvez simplement utiliser:

ffmpeg -i input.mp4 -map 0 -map_metadata -1 -c copy output.mp4

Utiliser -map_metadata -1 crée une source de métadonnées "factice" vide. Pour la version d'avconv dans le dépôt, ou pour d'autres versions obsolètes, utilisez la méthode décrite ci-dessous.


Utilisation de avconv (ou ffmpeg si c'est votre arme de choix, la syntaxe est la même):

Pour ce faire, le moyen le plus simple consiste à définir -map_metadata afin qu'il utilise l'un des flux d'entrée plutôt que d'utiliser des métadonnées globales. Cela devrait fonctionner dans 99% des cas.

avconv -i input.mp4 -map 0 -map_metadata 0:s:0 -c copy output.mp4

Cela prendra les métadonnées du premier flux de données (généralement le flux vidéo) et les utilisera pour remplacer les métadonnées globales du fichier conteneur. Cela fonctionne car la plupart du temps, les flux de données ne contiennent aucune métadonnée significative. Cependant, parfois, ils le font, et vous voulez vous débarrasser complètement de ces métadonnées. Malheureusement, la seule façon pour moi de faire cela consistait en un canal et deux processus avconv.

avconv -i input.mp4 -f wav - | avconv -i - -i input.mp4 -map 1 -map_metadata 0 -c copy output.mp4

Cela tire parti du fait que les fichiers WAV ne peuvent pas contenir de métadonnées (puisque le format a été créé avant que les balises de métadonnées n'existent).

Ces deux méthodes ont effacé toutes les métadonnées d'un fichier sur lequel je viens de les tester - tout ce qui a été rapporté par exiftool était les informations du codec, et avprobe ne m'a signalé aucune métadonnée. Utiliser un tuyau pour cela est assez moche, et la première méthode fonctionnera dans 99% des cas, donc cela devrait être préférable.

BONUS: créer une version masquée de chaque MP4 dans un répertoire , puis remplacer les versions de métadonnées par les versions masquées (avertissement - à peu près irréversible):

for f in *.mp4; do avconv -i "$f" -map 0 -map_metadata 0:s:0 -c copy "out.$f"; mv "out.$f" "$f"; done
2
evilsoup