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

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

7
задан 6 July 2012 в 10:50

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 строки метаданных (даже создавание, измените etc.times, были обнулены),

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

13
ответ дан 6 July 2012 в 10:50

ПРИМЕЧАНИЕ: с последней версией 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
0
ответ дан 6 July 2012 в 10:50

Другие вопросы по тегам:

Похожие вопросы: