[Çʵ¶] ÃÖ±Ù ffmpeg ´Ù¿î¹ÞÀ¸½Å ºÐµé ÀÖ´Ù¸é 2¿ù 13ÀÏ ÀÌÀü ¹öÀüÀ¸·Î ´Ù½Ã ¹ÞÀ¸¼Å¾ß ÇÕ´Ï´Ù.
cmm 을 2cpu 업로드 하고 설명을 하는김에
겸사겸사 저도 ffmpeg를 새로 다운로드 받았습니다.
그리고 이런저런 기능 테스트를 하다보니 예전에 정리된(move된)파일들은 문제가 없는데
오늘 업로드된 영상파일의 시간이 이상이 있다고 나오네요 ????
이상하다 잘 되던건데 도대체 왜 ???
라고하면서 분석에 들어갔는데 알고보니 최근 ffmpeg의 메타정보 복사기능이 오류가 있습니다.
ffmpeg 의 옵션중 "-map_metadata 0" 라는게 있는데 이것은 원본의 메타정보를 인코딩되는 파일에 그대로 복사하는 옵션인데요.
이 옵션을 주지 않으면 인코딩된 파일에는 "동영상 촬영일"에 대한 메타정보가 날라가므로 반드시 필요한 옵션이죠.
아무튼 이게 최신 ffmpeg는 시간을 변조해 버립니다;;;; 예전꺼는 괜찮고요.
그래서 도대체 어느 버전부터 발생한 오류인지 알아봤습니다.
https://ffmpeg.zeranoe.com/builds/win64/static/
여기에서 과거버전부터 최신까지 쭈욱 다운받아서
이런식으로 동일한 파일을 가지고 일괄로 인코딩을 해서 mediainfo 라는 유틸로 날짜를 확인해 봤더니.
2016년 2월 13일까지가 원본날짜인 "UTC 2016-03-27 10:42:01"로 정상적으로 메타정보가 복사가 되고
2016년 2월 16일 ffmpeg 에 메타정보의 날짜가 "UTC 2016-03-27 01:42:01"로 9시간이 줄어서 바뀌어 버리는 버그가 발생하여 그때부터
오늘의 최신버전(2016년 3월 26일)까지 오류가 그대로 입니다.
제 생각에 로컬 타임존을 반영하려고 하다가 잘못되는 것 같습니다. 어떤 관점에서 보면 오류가 아닐수도 있겠지요.
하지만 mediainfo 최신버전은 물론 각종 메타정보 분석 라이브러리들은 아직까지는 단지 시간이 바뀐것처럼 나올 뿐입니다.
그러므로 cmm 사용자 분들
또는 ffmpeg 사용시 메타정보를 그대로 복사하는 옵션 -map_metadata 0 을 사용하시는 분들은
2016년 2월 13일 ( ffmpeg-20160213-git-588e2e3-win64-static.7z ) 을 포함하여 그 이전 버전중에서 다운로드 하여 사용하셔야 합니다.
그 이후 버전은 처음 인코딩은 문제없으나 그 이후 cmm 응용편(은 아직 작성하지 않았지만....)에서 다르게 될
날짜 이상여부 확인 기능(-c checkdate)사용시 "날짜가 다름"표시가 발생하여 "파일이름 교정"기능(-c setfilename)등을 사용하시게 되면
날짜가 엉망이 되는 우울한 일이 발생합니다.
혹시 cmm을 다운받아서 이미 돌리신 분들은
2016년 2월 13일 이전의 ffmpeg 를 다시 다운받으시고
최근 인코딩 완료된 동영상들을 삭제하시고 백업된 원본영상들을 복원 후 다시 -c encmove 해주셔야 합니다.
완료된 동영상을 삭제하지 않으시면 (혹시모르니 이것도 다른곳에 백업) 중복체크 기능에 걸려서 -c encmove 해봤자 다시 작업 안합니다.
설마 ffmpeg에 오류가 있을줄은 생각도 못했네요. 것 참..
빨리 받아서 돌리신 분들 죄송합니다!
|
|