Как удалить все метаданные из файла с фильмом 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):
- до - 80 строк метаданных
- после - 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