Jak mogę usunąć wszystkie metadane ze wszystkich formatów za pomocą FFmpeg?
Mogę ustawić specjalne metadane dla każdego formatu dla każdego ffmpeg człowieka . Jakaś opcja lub metoda, aby usunąć wszystkie metadane i usunąć media ze wszystkich metadanych dostępnych na 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
mov
lubmp4
plikach data utworzenia jest polem całkowitym w nagłówku filmu i nagłówkach ścieżek (wyrażonych w sekundach od 1904 r.). Chociaż można ustawić wartość 0 lub inną stałą wartość, nie ma sposobu, aby ją usunąć i nadal mieć poprawnymov
lubmp4
plik.-metadata creation_time=2012-12-17T21:30:00
(UTC).-metadata title="Some Value"
. Lub, dla pliku, coś takiego dla pliku MP4:ffmpeg -i "$file" -map_metadata -1 -c copy -metadata title="$file" "${file%%*.mp4}-new.mp4
Moje rozwiązanie do usuwania metadanych, rozdziałów, zmiany czasu utworzenia i tytułu. W ten sposób dowolny metakontent powinien różnić się od oryginalnego pliku:
źródło
UWAGA: Od tego czasu zaktualizowałem
ffmpeg
(wcześniej miałem nieaktualną wersjęavconv
z repozytoriów Ubuntu).Teraz @ slhck
-map_metadata -1
działa idealnie.Polecam rozwiązanie @ slhck, ponieważ jest mniej typowe i aktualne. Zostawiam to tutaj każdemu, kto używa przestarzałej wersji.
Najłatwiej to zrobić,
-map_metadata
używając jednego ze strumieni wejściowych zamiast globalnych metadanych. W 99% przypadków powinno to działać. UWAGA: Używam avconv, ponieważ jest to w repozytoriach Ubuntu 12.04; prawdopodobnie będzie to drop-in kompatybilne z ffmpeg, ponieważ ich składnia zawsze jest moim doświadczeniem.Spowoduje to pobranie metadanych z pierwszego strumienia danych (zwykle strumienia wideo) i wykorzystanie go do zastąpienia globalnych metadanych pliku kontenera. Działa to, ponieważ przez większość czasu strumienie danych nie mają zapisanych znaczących metadanych; czasem jednak tak się dzieje i chcesz całkowicie pozbyć się tych metadanych. Niestety, jedynym sposobem na zrobienie tego jest użycie potoku i dwóch procesów avconv.
Wykorzystuje to fakt, że pliki WAV nie mogą zawierać metadanych (ponieważ format został utworzony przed istnieniem znaczników metadanych).
Obie te metody wyczyściły wszystkie metadane w pliku, na którym właśnie je przetestowałem - wszystko, co
exiftool
zgłoszono, to informacje o kodeku, a avprobe nie zgłosił mi żadnych metadanych. Używanie do tego rurki jest dość brzydkie, a pierwsza metoda zadziała w 99% przypadków, więc należy ją preferować.źródło