어제 쓰려다가 머리가 아파서 못 썼는데 오늘 말끔해졌어
동영상파일이란건 연속되는 이미지와, 소리로 구성되어있는데
소리는 보통 mp3파일이거나 aac거나 하는데 ㄹㅇ 추출하면 mp3파일이나옴. 간단하지
동영상은추출하면 24프레임 영상이면 이렇게 1초분량 24개의 이미지가 나오곤 함.
보면 누구씨동생이 오른쪽으로 슬슬 조금씩 이동하지
FFMPEG 라는 그룹같은곳에서 연속된 이미지들을 압축해서 동영상파일로 만들어주는걸 하고
mp4 파일이라 쳐도 내부에선 h264 mpeg-4 라던가 여러 압축 방식이 있음.
유투브는 VP9인가 자체개발이려나를 해서 또 하고있는듯함.
이게 1초당 24프레임씩 이미지가 바뀌는거면
10447이면 10447/24 = 435.29166.. 이니 대충 435초 7분 25초쯤의 지점이겠네
식으로 시간하고 매칭이 되고 그래서 소리랑도 매칭이 되는것임
손상된 파일은 이미지를 추출해보면 이미지가 없어서 그냥 이전의 그나마 살아있던녀석
으로 추출되고말더라.
즉, 손상된 파일은, 이전이미지와 변화가 없다는것이지.
따라서 전체 픽셀의 차이를 비교했는데 차이가 없으면, 손상된거라고 간주하는게 가능하다
라고 생각해서 뛰어들게되었고
그 결과가 이것. 매 프레임마다 직전프레임과의 차이점을 비교해서 그래프로 띄워서
눈으로 보려고했다. 다행히도 손상된 구간은 이렇게 매우 선명하게 나 손상되었소 하고 자기주장이 강해서
아하 여기구나 하고 보기 쉬웠음.
쭉 네모가 아니고 격자무늬처럼 반복된건, 키프레임 때문이야.
24프레임/초면 24프레임마다 하나쯤은 제대로된 이미지 넣도록 되어있거든.
애석하게도 근데 중간에 광고타임 카드바뀌는 장면이라던가
애니화면 자체가 정지해있는 구간에서도 이렇게 검출이 되곤 했음.
대체로 근데 다행히도 광고타임때는 주변에 손상된 구간이 있어야 검출이 되었고
정지화면이지만 동영상 압축원리상 미묘하게 지직대는 움직임이 존재해서 괜찮은게 대부분이었고
정확히 더는 모르겠지만 그냥 무시하고 넘어가면 될거같아서 넘어갔음.후후후.
원래는 낱장파일 전부 보게했는데 파악이 너무어려워서
17044-17060 식으로 같은장면은 구간으로 모아서 저장하게했는데 넘 좋았다.
그래서 손상 구간을 파악했으니,
이제 구간을 시간초로 변환해서 x초-y초 까지의 구간이 있다 치면
1.깨진동영상에서 해당구간 전후를 자르기
2.안 깨진 동영상에서 해당구간 자르기
3. 자른것을 모아서 큰 동영상으로 만들면된다!
였는데,
동영상 자를때 소리까지 같이 잘려서 첨에 좋다고했다가 소리끊겨서 슬퍼했고
소리는 따로 안 자르고 동영상만 잘라모을수있어서 해결함.
사소하지만 큰 문제는, 동영상파일마다 미묘하게 시작시점이라던가 그런게 다르니까
그거 동기화를 해줘야했는데
그걸위해 동영상의 프레임 번호를 보는 프로그램도 만들어서 진행했음.
이런식으로 구간을 나눈뒤에
1,2번파일보면 1464-1549 간격이 비어있는데 그 구간을 이제 안깨진 동영상에서 채우는거임
근데 타이밍을 정확히 맞춰야해서 안맞추면 아래처럼
모모점프시 처럼 끊기곤 해서 역시 기왕 하는거 제대로 해야지 하고 방식 바꾸게 됨.
이거 다시 보는데 지금 머리가 물리적으로 아파온다 뭔가 잘못될거같애 그래서 대충쓰고말아야지
이후 뭘했냐
그래서 이젠 png로 파일들 4만개정도를 죄다 추출해버림.
..은 용량만 사진한장 2메가인데 4만개라 80기가 나오더라;
그래서 깨진 동영상에서 평소엔 동영상에서 사진 추출하고
깨진 프레임 번호에선 추출해둔 안전한 이미지를 로드해서 바꿔치기 하는방법을 구상함.
문제는 동영상의 fps가 달랐어. 29.97프레임과 23.97 프레임으로
방영용 그게다르더라. 아마 한국은 29고 일본은 23인듯.
애니 생산되는규격 자체가 23.97이거나 24거나 그래서뭐.
그래서
정신나갈거같은 지점을 처음 맞이했고 이게 작업 착수 1주차였던거같애
그래서
1234 1234 1234 1234 1234 1234
이렇게 총 4*6 24개 프레임을
12344 12344 12344 12344 12344 12344
5*6=30 30개로 바꾸는 걸 시도해봤거든??
잘 맞더라고??
근데 400프레임정도하니 슬슬 1-3개씩 막 더나와!
24프레임이 아니라 23.97이라서 그래!
24000/1001 하면 23.97나오는데, 1000이아니라 1001로 미묘하게 나눠서 나오는 값이었음.
즉 1000개마다 1개씩 더해줘야한다이거야 무슨 음력달력도아니고;
근데 이러면 이렇게 더해주다보면 10분짜리 통째로 날아가고 그런 구간에선 막 1초까지 차이날 위험이 있었음
그래서 이쯤에서 ㄹㅇ 정신이 붕괴되어서 2일정도 드러누워있었던것같다.
..이때도 왠지 1주차였던거같은데
...
그러다가 그렇다면 그냥 화질 손해 좀 감수하고 23.97짜리를 29.97로 변환해버리자!
라는 결론으로 이어짐. 차분히 내려놓고보니 이 선택으로 가게 되었는데
생각보다 화질 손실도 딱히 안 보여서 정말 잘 된 일이었어. 이러면 되게 모든게 편해지거든.
기술 대기업들도 뭐 하는거보면 좀 손실이 있더라도 간단하게 하곤 하던데 이런느낌이구나 싶다.
괜히 한다고 덤볐다가는 일 자체가 무너질 위험이 있는거야.
그래서 팟플레이어로 29.97로 변환해서 파일을 준비하고..
이제 또 한국방영판 파일은 교체용 720p 자체 화질이 너무 떨어지는 경우가 있더라고.
그래서 일본판 파일을 사용하기로했는데
또 일본판은 미묘하게 아이캐치 구간 지나면 프레임 수가 달라지고
뭣보다 오프닝이 포함되어있어서 한국판이랑 맞지가 않음.
..그래서 여기서 결국 진작에 하려고하다가 말았던 동영상플레이어 제작을 하게 됨.
3d하던거도 있어서 마침 할 필요 있긴 했는데 정작 하니 넘 재밌게 잘했음.진작할걸어휴;
그렇게 2일 우여곡절끝에 합성에 성공하고
동영상을 이제 프로그램 안에서 틀어서 오류구간으로 이동한 후에
해당 구간의 특정 지점을 잡고
일본판에서도 동일구간을 찾은뒤에
둘 사이의 프레임 차이를 체크해서 기록.
이걸 한 동영상마다 2-5회 수행해줬다. 대체로 1파일 다 하면 10분 안걸리더라.
그러고 전에했던대로 깨진파일은 추출한 이미지로 교체하고..
png로했더니 80기가였는데 jpg로하니 의외로 더 빠르면서 3기가밖에안되어서 그걸로 바꾸기도하고..
720p는 이미지를 1080p로 확대하는거 하기도하고..
등등 여러 배울게많았고 잘 했음
막 이미지 비교한다고 opencv 하려다가 이쪽은 나랑 좀 안맞는거같애서 때려쳤는데 현명했군싶다.
처음엔 3일만에 다른할거많으니 얼른하고치우자 였는데
정작 하면서 이것 저것 결국 배웠어야할걸 잔뜩 다 배워버려서
이런것도 나쁘지 않구나 싶었고 매우 만족함.
막 얼른 해야한다면서 스스로 몰아세우는건 괴로움의 원인이 되는구나 싶어.
초기작업상황.많이도만들었네
처음엔 한 10파일이면 될줄알았더니
여긴 무슨 화물창고같은 느낌이 되어버렸어
최종단계에서 하던 세팅.
1-7단계를 거치는거야!
이게 한번하는게아니고 20번정도하는거라서
이런 일련의 공정 을 구축하는것이 필요했었는데 되게 재밌었다.
현실에서 공장 같은거 만드는 느낌이었어
1 파일 29.97로 바꾸고
2 손상구간만 추출하고
3 동영상 2개열어서 비교하고 오프셋 적고
4 파일로 열어서 확인후에
5 720p는 리사이즈
6 리사이즈된걸 동영상으로
7 동영상에소리첨가
인거지..
작업은 실제로 이런식으로 진행된것이야!
한 2일지나니 다시 의욕 만만해져서 3d 하러 다시 감..
댓글 영역
획득법
① NFT 발행
작성한 게시물을 NFT로 발행하면 일주일 동안 사용할 수 있습니다. (최초 1회)
② NFT 구매
다른 이용자의 NFT를 구매하면 한 달 동안 사용할 수 있습니다. (구매 시마다 갱신)
사용법
디시콘에서지갑연결시 바로 사용 가능합니다.