안녕하세요 평소 Megui를 사용하여 가끔 인코딩을 해왔습니다
한동안 인코딩을 안하며 지내다 이번에 인코딩을 해야할 상황이 생겨서 평상시 사용하던 메구이를 이용하여 비디오를 crf설정으로 인코딩을 해주었습니다
그리고 오디오는 작업을 안하고 원본 오디오를 인코딩본에 먹싱하였습니다
그런데 싱크가 틀어지는 문제가 발생합니다
문제는 -1초 +1 초 이렇게 일정하게 틀어지는게 아니라 어떤 부분은 싱크가 맞고 어떤 부분은 싱크가 벌어지는 현상이 발생합니다
mkv, mp4 둘다 먹싱을해도 똑같습니다
그래서 먹싱을 메구이를 거치지 않고 따로 mp4box나 mkvmerge를 사용해도 싱크에 오류가 생깁니다
우선 원본영상이 기본 30f의 영상이 아닙니다 오캠 화면캡처 방식으로 캡처를 했는데 설정 미스로 21f 정도로 영상이 캡처가 되었습니다
원본의 싱크는 이상이 없습니다 다만 이걸 메구이를 통해서 비디오를 인코딩을 거치고 먹싱하면 싱크가 맞지 않는 현상이 생기네요
그런데 샤나인코더로 테스트를 해보니 이 프로그램을 인코딩 결과물의 싱크가 전혀 문제가 없더군요....
일단 샤나는 한번도 써본적이 없는 인코더라.. 가급적 메구이를 이용하여 인코딩을 하려 합니다
그냥 단순하게 디인터나 리사이즈, 기타 다른 필터도 전혀 없이 단순히 영상의 비트만 좀 낮춰서 용량을 좀 줄여보려는 목적입니다
먹싱에서 문제가 생길거라고는 전혀 생각하지 못해서.. 어떤 방법이 있을지 조언을 구해봅니다
제 경험에 의하면, MeGUI나 StaxRip, Hybrid 같은 스트립트(AviSynth or VapourSynth) 기반 툴들은 비디오와 오디오 스트림을 따로 디먹싱한 후 각각 작업하고 추후에 먹싱하는 방식이라 본문에서 언급하신 것 같은 비정규 프레임 레이트 동영상의 경우 오디오 싱크가 어긋나는 경우가 자주 있습니다.
이런 경우 AviSynth/VapourSynth의 소스 필터(디코더)들을 어떤 걸 써도 이 문제가 해결이 안 되는 경우가 많더군요. (ffms2, LWLibav, L-Smash 등등)
AssumeFPS나 ChangeFPS, ConvertFPS 같은 프레임 레이트 변환 필터들도 도움이 안 될 경우가 대부분입니다.
저도 많은 시행착오를 거쳐서 고민을 했었는데, 두 가지 방법이 유용하더군요.
1) ffmpeg에서 yuv4mpegpipe 포맷으로 소스 프레임 레이트에 맞춰 piping -> x265, NVEncC 같은 인코더로 받아서 인코딩
2) 파이핑 없이 ffmpeg로 바로 작업 (또는 샤나인코더 같은 ffmpeg 계열 앱 사용)
이때 원본의 프레임 레이트를 -r 옵션으로 명시해야 합니다.
물론 이렇게 하면 AviSynth/VapourSynth의 풍부한 비디오 필터들은 사용할 수가 없다는 또 다른 문제가 있습니다만, 어쩔 수 없는 것 같습니다.
필터 처리 없이 단순 용량 절약 차원이시라면 그냥 2)번의 방법을 권하고 싶군요.