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

Вы можете легко запустить Ubuntu 11.10. Я запускаю 11.10 на 4-летнем Vio с процессором Centrino и 2 ГБ оперативной памяти, и он работает нормально.

6
задан 6 July 2012 в 11:50

18 ответов

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

Примечание: это работает только с 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 это важно - входной и выходной файлы должны быть указаны в самом конце)

11
ответ дан 25 July 2018 в 18: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
2
ответ дан 25 July 2018 в 18:50

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

Примечание: это работает только с 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 это важно - входной и выходной файлы должны быть указаны в самом конце)

11
ответ дан 31 July 2018 в 11:18

ПРИМЕЧАНИЕ: с последней версией 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
2
ответ дан 31 July 2018 в 11:18

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

Примечание: это работает только с 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 это важно - входной и выходной файлы должны быть указаны в самом конце)

11
ответ дан 31 July 2018 в 12:18

ПРИМЕЧАНИЕ: с последней версией 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
2
ответ дан 31 July 2018 в 12:18

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

Примечание: это работает только с 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 это важно - входной и выходной файлы должны быть указаны в самом конце)

11
ответ дан 2 August 2018 в 00:59

ПРИМЕЧАНИЕ: с последней версией 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
2
ответ дан 2 August 2018 в 00:59

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

Примечание: это работает только с 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 это важно - входной и выходной файлы должны быть указаны в самом конце)

11
ответ дан 4 August 2018 в 16:30

ПРИМЕЧАНИЕ: с последней версией 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
2
ответ дан 4 August 2018 в 16:30

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

Примечание: это работает только с 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 это важно - входной и выходной файлы должны быть указаны в самом конце)

11
ответ дан 6 August 2018 в 01:10

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

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

Примечание: это работает только с 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 это важно - входной и выходной файлы должны быть указаны в самом конце)

11
ответ дан 7 August 2018 в 18:36

ПРИМЕЧАНИЕ: с последней версией 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
2
ответ дан 7 August 2018 в 18:36

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

Примечание: это работает только с 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 это важно - входной и выходной файлы должны быть указаны в самом конце)

11
ответ дан 10 August 2018 в 07:16

ПРИМЕЧАНИЕ: с последней версией 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
2
ответ дан 10 August 2018 в 07:16

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

Примечание: это работает только с 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 это важно - входной и выходной файлы должны быть указаны в самом конце)

11
ответ дан 15 August 2018 в 19:16
  • 1
    Я получаю это , когда пытаюсь сделать то, что вы предложили. – John Baber-Lucero 20 May 2012 в 20:56
  • 2
    Это потому, что вы используете нестандартный ffmpeg git-2012-05-13-a927641, а не стандартный libav из официальных репозиториев. Моя версия 0.8.1-4:0.8.1-0ubuntu1 и отлично работает. – ish 21 May 2012 в 08:41
  • 3
    Ach. Это потому, что я следовал этим инструкциям , которые требовали последней версии ffmpeg. Я спрошу на мета, если этот вопрос должен быть удален из askubuntu, так как это невозможно с помощью ffmpeg в Ubuntu. – John Baber-Lucero 21 May 2012 в 19:14
  • 4
  • 5
    вы знаете, тогда вы можете лоббировать Ubuntu, чтобы переключиться на ffmpeg вместо libav. Мне хорошо известны проблемы, на которые вы указываете, НО этот синтаксис является единственным, который работает с (устаревшим) ffmpeg, включенным в libav Ubuntu . Наша цель в AskUbuntu - работать с любыми инструментами, которые Ubuntu делает доступными по умолчанию, а не помогать с неофициальными вилками или даже скомпилированными Git Pull или сторонними PPA. – ish 21 May 2012 в 19:44

ПРИМЕЧАНИЕ: с последней версией 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
2
ответ дан 15 August 2018 в 19:16

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

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