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 줄로 줄어 듭니다. 모든 메타 데이터를 단순히 제거 할 수는 없으며 일부 내용은 그대로 유지됩니다. 그러나 생성 날짜를 변경하지 못했습니다. 우분투 버전에서 작동하는 것처럼 보였으므로 이상합니다.

나는 FFmpeg 메일 링리스트 에 글을 올리 거나 업데이트가 있었는지 물었다. 그들이 무엇을 말해야하는지 보자.


2
에서 mov또는 mp4파일 생성 날짜 (1904 년 이후 초로 표현됨) 무비 헤더 트랙 헤더 필드의 정수이다. 0 또는 다른 고정 값으로 설정할 수는 있지만 제거 mov하거나 유효한 mp4파일 이나 파일을 보유 할 방법이 없습니다 .
mark4o

나는 그것을 완전히 제거 할 수는 없지만 어떤 이유로 든 변화가 불가능하다는 것을 알고 있습니다.
slhck December

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 등은 많은 유용한 정보를 포함하고 있기 때문에 매우 유용합니다.
shevy dec

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
다른 RIFF 기반 파일 (예 : AVI)과 같은 WAVE 파일은 실제로 "INFO"목록 청크를 사용하여 메타 데이터 태그를 포함 할 수 있습니다. 자주 사용되지는 않습니다.
blerontin
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.