ПРИМЕЧАНИЕ: с тех пор я обновил ffmpeg
(ранее у меня была устаревшая версия avconv
из репозиториев Ubuntu).
Теперь @ slhck's -map_metadata -1
работает отлично.
Я рекомендую решение @ slhck, потому что оно менее типично и актуально. Я оставляю это здесь для тех, кто использует устаревшую версию.
Самый простой способ сделать это - установить -map_metadata
для использования одного из входных потоков вместо использования глобальных метаданных. 99% времени это должно работать. ПРИМЕЧАНИЕ: я использую avconv, потому что это в репозиториях Ubuntu 12.04; это, вероятно, будет совместимо с ffmpeg, так как их синтаксис всегда в моем опыте.
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% случаев, так что это должно быть предпочтительным.