a.MOV
(iPhone에서)를 c.MOV
, ffmpeg는 비디오의 시간과 위치를 포함하여 많은 메타 데이터를 삭제합니다.
-metadata
를 시도했지만 ffmpeg가 여전히 정보를 삭제합니다 (ffmpeg가 Output #0
, 출력 파일의 메타 데이터를보기 위해 ffprobe를 사용할 때 삭제됩니다.)
ffmpeg가 이러한 메타 데이터를 보존하려면 어떻게해야합니까?
$ ffmpeg -i a.MOV -c copy c.MOV -y Input #0, mov,mp4,m4a,3gp,3g2,mj2, from "a.MOV": Metadata: major_brand : qt minor_version : 0 compatible_brands: qt creation_time : 2018-03-... com.apple.quicktime.location.ISO6709: .../ com.apple.quicktime.make: Apple com.apple.quicktime.model: iPhone ... com.apple.quicktime.software: 11.... com.apple.quicktime.creationdate: 2018-03-... Duration: 00:00:01.77, start: 0.000000, bitrate: 7868 kb/s Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709), 1280x720, 7707 kb/s, 30 fps, 30 tbr, 600 tbn, 1200 tbc (default) Metadata: creation_time : 2018-03-... handler_name : Core Media Data Handler encoder : H.264 Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, mono, fltp, 87 kb/s (default) Metadata: creation_time : 2018-03-... handler_name : Core Media Data Handler Stream #0:2(und): Data: none (mebx / 0x7862656D), 0 kb/s (default) Metadata: creation_time : 2018-03-... handler_name : Core Media Data Handler Stream #0:3(und): Data: none (mebx / 0x7862656D), 0 kb/s (default) Metadata: creation_time : 2018-03-... handler_name : Core Media Data Handler Output #0, mov, to "c.MOV": Metadata: major_brand : qt minor_version : 0 compatible_brands: qt com.apple.quicktime.creationdate: 2018-03-... com.apple.quicktime.location.ISO6709: .../ com.apple.quicktime.make: Apple com.apple.quicktime.model: iPhone ... com.apple.quicktime.software: 11.... encoder : Lavf57.71.100 Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709), 1280x720, q=2-31, 7707 kb/s, 30 fps, 30 tbr, 19200 tbn, 600 tbc (default) Metadata: creation_time : 2018-03-... handler_name : Core Media Data Handler encoder : H.264 Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, mono, fltp, 87 kb/s (default) Metadata: creation_time : 2018-03-... handler_name : Core Media Data Handler Stream mapping: Stream #0:0 -> #0:0 (copy) Stream #0:1 -> #0:1 (copy) Press [q] to stop, [?] for help frame= 23 fps=0.0 q=-1.0 Lsize= 732kB time=00:00:01.76 bitrate=7827.5kbits/s speed= 971x video:921kB audio:9kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.291216% $ ffprobe c.MOV Input #0, mov,mp4,m4a,3gp,3g2,mj2, from "c.MOV": Metadata: major_brand : qt minor_version : 512 compatible_brands: qt encoder : Lavf57.71.100 Duration: 00:00:00.77, start: 0.000000, bitrate: 7819 kb/s Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709), 1280x720, 7707 kb/s, 30 fps, 30 tbr, 19200 tbn, 38400 tbc (default) Metadata: handler_name : DataHandler encoder : H.264 Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, mono, fltp, 92 kb/s (default) Metadata: handler_name : DataHandler $
댓글
- 같은 문제가 있습니다. 위는 ‘ 작동하지 않습니다. ffmpeg 버전을 사용하고 있습니다. ffmpeg 버전 3.4.4-1 ~ 16.04.york0 Copyright (c) 2000-2018 FFmpeg 개발자와이 ffmpeg -i a.MOV -map_metadata 0 -c copy c.MOV로 인해 여전히 삭제됩니다. -라이브러리 작성 : Apple QuickTime com.apple.quicktime.make : Apple com.apple.quicktime.model : iPhone 5s com.apple.quicktime.software : 10.3.3 com.apple.quicktime.creationdate : 2018-06-06T01 : 15 : 37 + 0800 및 다음으로 대체 :-작성 애플리케이션 : Lavf57.83.100
답변
기타 여기서 답변은 사용자 정의 / 임의 메타 키의 경우 ” 알려진 ” 메타 키로 만 작동합니다. -map_metadata 0
만으로는 충분하지 않습니다.
제 트랜스 코더 프로젝트에서 많은 카메라 제작자는 MP4 / MOV 컨테이너에 사용자 정의 메타 키를 삽입하는 것을 좋아합니다. 트랜스 코딩 된 MP4 / MOV 파일. 머리를 많이 긁은 후에 ffmpeg는 이러한 목적으로 전환됩니다.
-movflags use_metadata_tags
크레딧은이 스레드와 Google의 작성자에게 있습니다.
https://superuser.com/questions/1208273/add-new-and-non-defined-metadata-to-a-mp4-file
댓글
- 좋은 정보-감사합니다. 내가 아이폰에 기록한 mov 파일을 변환했을 때 알아 차린 한 가지는 exif 데이터의 Rotation 태그가 180이라고 말한 것입니다. 기본적으로 ffmpeg는 비디오를 자동으로 회전하지만 mov 태그도 mp4로 복사하면 여전히 변환하는 동안 ffmpeg가 mp4를 자동으로 회전 했음에도 불구하고 플레이어에게 180도 회전하도록 지시합니다. 그래서 내 동영상을 재생했을 때 거꾸로되어있었습니다. :)-제 경우 해결 방법은 ffmpeg에게
-noautorotate
를 사용하여 자동 회전하지 않도록 지시하는 것이 었습니다. 빠른 해결 방법은 Exiftool을 사용하는 것입니다. 회전을 0으로 설정-exiftool -Rotation=0 file.mp4
답변
-metadata
옵션은 메타 데이터를 조작하기위한 것입니다. 입력 파일의 메타 데이터를 출력 파일로 복사하려면 -map_metadata
옵션을 사용해야합니다. :
ffmpeg -i a.MOV -map_metadata 0 -c copy c.MOV
파일 지정자는 인덱스가 0 인 숫자이므로 “0”은 첫 번째 입력 파일에서 메타 데이터를 가져옵니다.
댓글
-
concat
에서이 작업을 수행하는 방법을 아십니까? 예.ffmpeg -nostdin -f concat -safe 1 -i "${concatlist}" -map_metadata 0 -c copy "$outfile"
여기서$concatlist
는file 'filenamehere.mp3'
입니다.
ffmpeg -nostdin -i "${infile}" -f ffmetadata "${metadatafile}"
다음에 ffmpeg -nostdin -f concat -safe 1 -i "${concatlist}" -i "${metadatafile}" -map_metadata 1 -c copy "$outfile"
-map_metadata 0
또는 -map_metadata 1
? Answer
FFmpeg는 기본적으로 첫 번째 입력 파일의 모든 메타 데이터를 사용 가능하게 만듭니다. , 쓰기를 위해 출력 파일 muxer에. -map_metadata
를 사용하면 다른 입력을 가리 키거나 ffmpeg에 입력 전역 메타 데이터를 삭제하도록 지시하여이를 재정의 할 수 있습니다 (-1
의 값). .
그러나 사용 가능한 메타 데이터 중 출력 파일에 실제로 쓰여진 는 출력 muxer. QT / ISOBMFF muxer (MOV / MP4 / 3GP .. 용)는 주로 iTunes와 관련된 제한된 수의 태그 만 고려합니다. @JerryTian이 언급했듯이 -movflags use_metadata_tags
를 사용하면 다른 모든 태그가 파일에 기록됩니다. 그러나 이들은 틀에 얽매이지 않는 방식으로 작성됩니다. 특히 Quicktime은 이러한 추가 메타 데이터 항목을 인식하지 않습니다. 다른 ffmpeg 기반 s / w는 읽어야합니다. 또는 @JerryTian과 같이 사용자 정의 소프트웨어를 사용하는 사람은 누구나 자신의 소프트웨어를 사용하여 읽을 수 있습니다.
movflags는 QT muxer의 출력에만 적용됩니다. Matroska (MKV)는 다른 muxers는 다양합니다.
댓글
- 음악을 변환 할 때 메타 데이터를 유지하려고합니다. 사용자 지정 CATALOGID가 있지만 wav to flac. 필드는 보존되지 않습니다. ffmpeg -i bb.wav bb2.flac -movflags use_metadata_tags. 어떤 아이디어라도?
- 내가 올바르게 이해한다면 ‘ FFmpeg를 사용하여 .mkv로 인코딩하면 기본적으로 소스의 모든 메타 데이터를 보존해야한다고 말합니다. , 추가 옵션을 지정할 필요가 없습니까?
답변
ffmpeg를 사용할 수있는 방법을 찾지 못했습니다. 데이터를 보존합니다.하지만 필요에 따라 exif 메타 데이터가 필요했고 exiftool
는 편리한 솔루션입니다.
다음 동영상 파일간에 메타 데이터를 복사 할 수 있습니다. https://unix.stackexchange.com/a/492338/83370
-all:all>all:all
옵션을 사용하여 모든 메타 데이터를 복사하는 트릭이 있습니다. http://u88.n24.queensu.ca/exiftool/forum/index.php?topic=3440.0
exiftool -TagsFromFile a.MOV "-all:all>all:all" c.MOV
댓글
- 위의 모든 파일을 Canon 200D에서 시도했는데 이건 실제로 가장 유용합니다. 여전히 원본의 출력보다 훨씬 더 작은
exiftool c.MOV
를 만들지 만 실제 생성 날짜를 유지합니다 (-map_metadata
가 수행했습니다. 하지만-movflags
)와 카메라 이름은 아니지만 렌즈 정보는 여전히 사라졌습니다. - 좋아요.이게 사실 좋은 출발점이었습니다. 매핑 부분을 건너 뛰는 것입니다.
exiftool -TagsFromFile in.mp4 out.mp4
를 사용하는 것만으로도 성공했습니다!