Стріпте метадані з усіх форматів за допомогою FFmpeg


43

Як я можу видалити всі метадані з усіх форматів за допомогою FFmpeg?

Я можу просто встановити спеціальні метадані для кожного формату на людину ffmpeg . Будь-який варіант чи спосіб очистити всі метадані та знімати медіа-файли з усіх метаданих, доступних у ffmpeg?

   -metadata key=value
       Set a metadata key/value pair.

       For example, for setting the title in the output file:

               ffmpeg -i in.avi -metadata title="my title" out.flv

Відповіді:


63

Трохи модифікуючи командний рядок від @izx , я отримав таке:

ffmpeg -i in.mov -map_metadata -1 -c:v copy -c:a copy out.mov

Результат - знову ж таки, перевірено exiftool), запис метаданих зменшено з 81 до 52 рядків. Зауважте, що ви не можете просто видалити всі метадані, деякі речі залишаться. Однак я не зміг змінити дату створення, що дивно, оскільки вона, здавалося, працює у версії Ubuntu.

Я розмістив у списку розсилки FFmpeg , запитуючи, чи є якісь оновлення чи коментарі до цього питання. Подивимось, що вони мають сказати.


2
У файлах movабо mp4файлах дата створення - це ціле поле у ​​заголовку фільму та заголовках треку (виражається у секундах з 1904 року). Незважаючи на те, що ви можете встановити його на 0 або якесь інше фіксоване значення, немає способу видалити його та мати дійсний файл movчи mp4файл.
mark4o

Я знаю, що не зміг її повністю видалити, але змінити чомусь не вдалося.
slhck

3
Використовуючи поточний ffmpeg, час створення можна змінити за допомогою -metadata creation_time=2012-12-17T21:30:00(UTC).
mark4o

1
Як я можу змінити це, щоб також видалити заголовок? В даний час він встановлює заголовок на щось, що автоматично створюється. Я хочу бачити повне ім'я файлу як заголовок у підсумку.
Rookie

2
@Rookie Тоді вам потрібно встановити -metadata title="Some Value". Або для файлу щось подібне для файлу MP4:ffmpeg -i "$file" -map_metadata -1 -c copy -metadata title="$file" "${file%%*.mp4}-new.mp4
slhck

9

Моє рішення зняти метадані, глави, змінити час створення та назву. Таким чином, будь-який метаконтент повинен відрізнятися від вихідного файлу:

ffmpeg -y -i "test.mkv" -c copy -map_metadata -1 -metadata title="My Title" -metadata creation_time=2016-09-20T21:30:00 -map_chapters -1 "test.mkv"

1
Цей варіант був мені корисний, дякую. Я б хотів, щоб у посібнику з ffmpeg було показано більше прикладів, як описано вище; stackoverflow, superuser тощо ... все стає дуже корисним, оскільки вони містять багато корисної інформації.
шеві

8

ПРИМІТКА: я з тих пір оновив ffmpeg(раніше у мене була застаріла версія avconvрепозиторіїв Ubuntu).

Зараз @ slhck -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% випадків, тому слід віддати перевагу.


1
Файли WAVE, як і інші файли на основі RIFF (наприклад, AVI), можуть насправді містити теги метаданих, використовуючи фрагмент списку "INFO". Він просто не використовується дуже часто.
Блеронтін
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.