본문 바로가기

MMD 관련 (블렌더 제외)

MikuMikuDance x64, 윈도우 10 64비트에서 인코딩하기

무명P님의 블로그(http://mmdguide.tistory.com/796)에도 훌륭한 가이드가 있지만, 윈도우7을 사용할 것을 권장하고 있습니다.

ffdshow를 사용하는 방법인데, 윈도우10에서는 64비트 인코더 설정프로그램이 동작을 안하거든요.


그래서 저 방법을 윈도우10에서 삽질하면서 따라하다가 나온 어느정도의 결론입니다.

...종결자는 절대 아니라고 생각하며 레지스트리를 만지기 때문에 상당히 지저분한 방법입니다.

물론 만졌던 레지스트리는 폴더 분리가 확실하기 때문에 삭제하거나 되돌릴 때에는 깔끔하긴 합니다.


우선 코덱은 Xvid를 사용하지 않고 최신 ffdshow에서 권장하는(?) MJPEG(손실압축), HuffYUV(무손실압축)을 사용합니다.

ffdshow에서 색공간 설정이 제한적이긴 한데, 제가 몇가지 시도해본 바로는, 신기하게도(?) 출력된 영상파일을 편집하기 전에 그냥 RGB로 전환하는 것만으로 원본으로 그대로 되는거 같더군요. 하기전에도 원본같은데?? 색공간 변환할 필요없는거 아니야??(?!)

색공간 데이터에 대해서 제가 지식이 얕은 편이고, 제가 막눈이라 출력물 구분을 못할 수도 있습니다만 이점은 주의 깊게 비교하여 보시기 바랍니다.


64비트 : https://sourceforge.net/projects/ffdshow-tryout/files/SVN%20builds%20by%20clsid/64-bit%20builds/
32비트 : https://sourceforge.net/projects/ffdshow-tryout/files/SVN%20builds%20by%20clsid/generic%20builds/


최신버전을 사용하리라 마음먹었으니까 들어가서 최신버전!(현재 4533)을 다운받습니다.

64비트는 다운받으시고, 32비트는 64비트 버전의 ffmpeg나 virtualdub등으로 인코딩할 것이라면 설정내역을 복사해서 64비트에 붙여넣어야 하므로 필요하다면 32비트를 같이 설치합니다.


둘다 설치한다면, 설치순서는 전혀 상관없습니다.


64비트 MMD에서 최대한 화질열화없이 최소한의 용량으로 뽑으려면 MJPEG코덱의 화질을 100으로 설정해줘야합니다.
그러나 64비트 vfw설정 프로그램 만드는걸 포기했는지(?) 깔아도 동작하지 않으며, 최신버전은 아예 안깔립니다.

레지스트리를 만져서 수동으로 설정해줍니다.
아무것도 안만지고 사용하면 기본값으로 MJPEG에 화질 85로 인코딩될겁니다.


64enc_klir.zip

아래 내역은 위 파일에 담아두었습니다.


MJPEG코덱을 사용하면서 화질을 100으로 설정하려면,


[ 64enc MJPEG(Q100) ON.reg ]
Windows Registry Editor Version 5.00


[HKEY_CURRENT_USER\SOFTWARE\GNU\ffdshow64_enc]
"qual"=dword:00000064
"fourcc"=dword:47504a4d
"codecId"=dword:0000001a



HuffYUV(Loseless) 코덱을 사용하려면 아래 레지스트리를 등록합니다.


[ 64enc HuffYUV ON.reg ]

Windows Registry Editor Version 5.00


[HKEY_CURRENT_USER\SOFTWARE\GNU\ffdshow64_enc]
"qual"=-
"fourcc"=dword:48564646
"codecId"=dword:00000022



변경점을 초기화하려면


[ 64enc Reset.reg ]

Windows Registry Editor Version 5.00


[HKEY_CURRENT_USER\SOFTWARE\GNU\ffdshow64_enc]
"qual"=-
"fourcc"=-
"codecId"=-



큰 파일용량이 부담스럽다면 화질100의 MJPEG를 사용해서 저장하면 됩니다.

저는 막눈이라서 둘이 차이를 모르겠습니다... 결국 MJPEG를 주로 쓰게 되더군요. HuffYUV가 저장하는 속도는 빠르긴 빠르던데. 용량이 MJPG의 10배라서...

Raw AVI는 MJPG의 50배(?)가 넘는거 같더군요. 헉헉


어쨌든 설정하고나면, 다음은 아시는 것처럼 MMD로 저장하면됩니다.

이렇게. 해상도에 리미트따위... 있을수도 있습니다만. 한계가 어느정도인지는 저도 잘모릅니다.

유튜브의 360도 파노라마 영상은 최대 해상도가 8192x4096이라는데, 그것도 되는거 보니까 현재로써는 리미트 무제한인걸로.

참고로 MMD에는 360도 파노라마로 만들어주는 MME 플러그인도 있습니다. 그런거 쓰실 때 해보시면 될 듯.

16:9 4K UHD라고 부르는 해상도. 360도를 제외하고 유튜브에서 소화할 수 있는 맥시멈입니다.

그 위로 4096x2160라고 4K DCI가 존재. Wallpaper Engine인가? 움직이는 바탕화면 만들 때 쓰면 요긴할 듯.

고해상도로 뽑을 땐, edge-line width를 2배정도로 해야될 것 같군요.




저장한 결과물을 ffmpeg_x64, virtualdub_x64, avisynth+_x64, 기타 외부 64비트 인코더 불러와서 동작하는 64비트 인코딩 프로그램 등으로 인코딩하는 경우에는 vfw설정을 통해서 디코더를 쓸 수 있게 해줘야합니다.

정확히는 인코딩했던 MJPEG 또는 HuffYUV를 64비트로 디코딩할 수 있게 해줘야 되는거죠.


근데 64비트 vfw설정이 동작을 안하므로 수동으로 32비트의 데이터를 복붙합니다.

32비트 인코딩 프로그램이나 단독으로 동작하는 다른 64비트 인코더를 사용하는 경우는 아래 작업을 할 필요가 없습니다.



32비트 vfw설정을 열고 인코더 설정의 Decoder의 코덱에서 MJPEG와 HuffYUV의 디코더를 libavcodec으로 바꿔줍니다.
그리고 하단의 "적용"을 누른 다음에, "모든 세팅 저장"을 눌러서 reg파일로 내보냅니다.
해당 reg파일을 메모장으로 열어서 수정합니다.


[HKEY_LOCAL_MACHINE\Software\GNU\ffdshow]
[HKEY_CURRENT_USER\Software\GNU\ffdshow\default]
[HKEY_CURRENT_USER\Software\GNU\ffdshow]
[HKEY_CURRENT_USER\Software\GNU\ffdshow_audio\default]
[HKEY_CURRENT_USER\Software\GNU\ffdshow_audio]
[HKEY_LOCAL_MACHINE\Software\GNU\ffdshow_audio]
[HKEY_CURRENT_USER\Software\GNU\ffdshow_enc]


키들 및 이하 값들이 적힌 라인들을 삭제
지우고 나서 총 라인 갯수를 세어보면 약 753라인이 될겁니다.



그리고 나서,


[HKEY_CURRENT_USER\Software\GNU\ffdshow_vfw\default]
[HKEY_CURRENT_USER\Software\GNU\ffdshow_vfw]
[HKEY_LOCAL_MACHINE\Software\GNU\ffdshow_vfw]


남은 위 키들을


[HKEY_CURRENT_USER\Software\GNU\ffdshow64_vfw\default]
[HKEY_CURRENT_USER\Software\GNU\ffdshow64_vfw]
[HKEY_LOCAL_MACHINE\Software\GNU\ffdshow64_vfw]


이렇게 64를 적어넣고 저장.

저장한 reg파일을 실행시켜서 레지스트리에 등록합니다.


귀찮으신 분들을 위해 제 컴퓨터에 설치한 ffdshow설정파일을 올려드립니다.

4533버전 설치 직후에 위 작업만 한 것인데, 혹시 다를 수도 있으니 직접하시는 것을 권장합니다.

64vfw_klir.zip


혹시 MJPG와 HuffYUV의 디코딩을 켜지않고 저장한 경우에는


[ 64vfw MJPG,Huff ON.reg ]
Windows Registry Editor Version 5.00


[HKEY_CURRENT_USER\Software\GNU\ffdshow64_vfw]
"mjpg"=dword:00000001
"hfyu"=dword:00000001


이것만 변경합니다.

변경점을 초기화하려면


[ 64vfw Reset!!!.reg ]
Windows Registry Editor Version 5.00


[-HKEY_LOCAL_MACHINE\Software\GNU\ffdshow64_vfw]
[-HKEY_CURRENT_USER\Software\GNU\ffdshow64_vfw]


이렇게 해서 삭제하면됩니다. 애시당초 설치했을 때부터 존재하지 않았던 키이기 때문에 하위키를 싹 날려버리면 초기화가 됩니다.

덤으로

[-HKEY_CURRENT_USER\SOFTWARE\GNU\ffdshow64_enc]

이 라인까지 추가해서 날려버리시면 제가 언급한 부분들이 모두 초기화가 됩니다. 공장초기화(?)...

만약 ffdshow를 지우실거라면, ffdshow 언인스톨 하기 전에는 덤까지 날리신 다음에 언인스톨하세요. 반대로 언인스톨 먼저하고 해도 아무런 문제는 없겠지만 레지스트리에 폴더 남을 수도 있으니까 좀... 그렇겠네요?