Как удалить все метаданные из файла с фильмом QuickTime?

Моя камера принимает файлы.mov как фильмы. Как я могу удалить из них все метаданные, чтобы чувствовать себя уверенно, делясь ими на YouTube, не сообщая случайно, когда / где они были сняты, какой у меня тип камеры и т. Д. Однострочное использование командной строки - это хорошо, но если это слишком запутанно программа с графическим интерфейсом будет лучше.

2 ответа

Ну, у меня есть ответ из командной строки:

Примечание: это работает только с ffmpeg включен в Ubuntu по умолчанию: он будет иметь версию, аналогичную 0.8.1-4:0.8.1-0ubuntu1; он НЕ БУДЕТ работать с любыми двоичными файлами ffmpeg, которые вы установили из стороннего PPA или скомпилировали сами. Ваш пробег может варьироваться.

  • Установите эти: sudo apt-get install ffmpeg libimage-exiftool-perl
  • Затем перейдите к исходному файлу.mov, мы назовем его test.mov
  • И запустить:

    ffmpeg -i test.mov -map_metadata -1 -vcodec copy -acodec copy test-nometadata.mov
  • Вы можете использовать exiftool проверить, что это сработало; exiftool test.mov а также exiftool test-nometadata.mov должен показать вам разницу.

  • Вот мои примеры выходных данных от старого Nikon .mov с тоннами метаданных (pastebin'd):

    1. до - 80 строк метаданных
    2. после - 52 строки метаданных (даже время создания, изменения и т. д. было обнулено)

(обратите внимание, что порядок в ffmpeg выше важен - входной и выходной файлы должны быть указаны в самом конце)

ПРИМЕЧАНИЕ: с последней версией ffmpeg (и, вероятно, avconv, но я не проверял это), вы можете просто использовать:

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

С помощью -map_metadata -1 создает пустой "фиктивный" источник метаданных. Для версии avconv в репозиториях или других устаревших версий используйте метод, описанный ниже.


Использование avconv (или ffmpeg, если это ваше оружие выбора, синтаксис тот же):

Самый простой способ сделать это - установить -map_metadata использовать один из входных потоков, а не использовать глобальные метаданные. 99% времени это должно работать.

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

Это возьмет метаданные из первого потока данных (обычно видеопоток) и использует их для замены глобальных метаданных файла контейнера. Это работает, потому что большую часть времени потоки данных не имеют значимых метаданных, записанных в них; однако иногда это происходит, и вы хотите полностью избавиться от этих метаданных. К сожалению, единственный способ сделать это - использовать канал и два процесса avconv.

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

При этом используется тот факт, что файлы WAV не могут содержать метаданные (поскольку формат был создан до появления тегов метаданных).

Оба эти метода очищают все метаданные в файле, на котором я только что их протестировал, - все это exiftool была информация о кодеке, и avprobe не сообщил мне никаких метаданных. Использование канала для этого довольно уродливо, и первый метод будет работать в 99% случаев, поэтому это должно быть предпочтительным.

БОНУС: создать бланковую версию каждого MP4 в каталоге, а затем заменить версии метаданных бланшированными версиями (предупреждение - в значительной степени необратимое):

for f in *.mp4; do avconv -i "$f" -map 0 -map_metadata 0:s:0 -c copy "out.$f"; mv "out.$f" "$f"; done
Другие вопросы по тегам