Vista용 DreamScene 화면 수작업으로 만들기

0. 만들기에 들어가기 전에

Vista Ultimate의 가장 쓸모 없는(?) 기능 중 하나는 DreamScene입니다.
솔직히 Vista 쓸 정도면 시스템 스펙이 좀 된다고 볼 수 있겠지만,
아까운 CPU 클럭을 단지 움직이는 바탕화면에 낭비하다니요...


어쨌거나, 이 DreamScene은 최근 정식버전이 배포되기 시작했는데,
베타버전 때에 비해 상대적으로 CPU 점유율이 내려갔기 때문에
지금은 그래도 조금은 쓸만한 기능인 것 같습니다.

DreamScene의 컨텐츠는 wmv나 mpg(MPEG2) 파일로 되어있으며,
기본 폴더는 c:\windows\web\Windows DreamScene 입니다.
(물론 c:\windows\ 폴더는 설치 위치에 따라 달라질 수 있습니다)

즉, 적절한 동영상을(가능한 오디오가 없는 것으로) 해당 폴더에 저장하고 나서
바탕화면 설정에 가면 바로 화면에 띄울 수 있는 것이죠.

영화 Casino Royale (MKV / H.264 / 1280x528) 일부를 DreamScene 배경으로 만드는
과정을 설명하겠습니다.

1. 필요한 도구 준비

KMPlayer : 다운로드(홈페이지) , 연속된 프레임을 bmp 파일로 켭쳐하기 위해 사용
AVISynth : 다운로드(홈페이지) , 프레임 서버, 약간의 효과 추가 가능
HC Encoder : 다운로드(홈페이지) , freeware MPEG2 인코더, 전혀 상용 S/W에 밀리지 않음
1280x528

원하는 동영상 : 알아서... 가급적 HD 영상...


2. 동영상 캡쳐

사실, 꼭 동영상을 캡쳐할 필요는 없습니다. CR의 일부를 변환하는 과정에서 연속된 프레임을
캡쳐하는 것이 가장 효율적일 것이라 생각해서 캡쳐를 생각한 것일 뿐입니다.
Ctrl+G
Casino Royale에서 첫 살인(!!)을 할 때 초짜 요원 James Bond가 총쏘는 장면을 대상으로 작업합니다. (007 영화중 Gun Barrel Sequence가 처음에 들어가지 않은 최초의 영화죠)
캡쳐할 때 포맷은 BMP, JPG, PNG 중에 선택할 수 있습니다.
JPG는 이미지에 왜곡이 생기므로 BMP를 사용했습니다. (PNG는 저장 속도가 다소 느리므로 패스)
Ctrl+G를 누르거나 메뉴에서 캡처제어-고급캡처 를 선택하면 설정 화면이 나옵니다.
매 프레임을 캡쳐하도록 하며 시간은 20초 정도 설정하면 되고, 불필요한 프레임은 버리면 됩니다.

여기서는, 캡쳐된 파일중 사용할 파일은 casino.royale.dvd9.720p.bluray.x264.mkv0108.bmp ~ casino.royale.dvd9.720p.bluray.x264.mkv0214.bmp 의 107장입니다.
(당연히 앞뒤의 사용하지 않을 파일들은 삭제했습니다)

읽기는 AVISynth를 이용할 것이므로 파일명은 가급적이면 연속적인 것이 좋습니다. 그렇지 않으면 AVISynth 스크립트를 복잡하게 기술해야 합니다.

3. AVISynth 스크립트 작성

AVISynth는 virtualdub, HC Enc 외에도 수많은 동영상 변환 프로그램에서 지원하는 강력한 frame server입니다.
스크립트에 들어갈 내용은 아래와 같습니다.
- 크기의 적절한 변환
- 처음과 끝에 fade 효과 (이게 있어야 그럴싸합니다)
- YV12로 color space 변환 (HC Enc 요구사항)

일단, 107장의 bmp 파일을 읽어들이는 스크립트를 작성해야 합니다.
ImageSource("casino.royale.dvd9.720p.bluray.x264.mkv%04d.bmp", 108, 214, 23.976)
위의 단 한 줄이면 됩니다. "%04d" 라는 구문은 C언어를 생각하시면 됩니다.
위 스크립트를 캡쳐된 파일들과 같은 폴더에 넣고, virtualdub 등으로 읽어들이면 23.976fps의 4.5초짜리 동영상 파일과 동일하게 처리합니다.

그런데, 동영상의 가로세로 비율이 제 모니터의 비율(1600x1200 - 4:3)과 맞지 않군요.
원본이 1280x528인데, 4:3이 되려면 1280x960이 되어야 하므로 위아래에 216 씩을 추가하면 되겠습니다. (528+216x2 = 960)
AddBorders(0,216,0,216)

네. 이 한 줄이면 됩니다. AVISynth는 저렇게 편리합니다.
그런데, 연속해서 저런 동영상을 띄우려면 그냥 보는 것보다, 앞부분에 fade-in, 뒷부분에 fade-out 효과를 주는 것이 자연스럽습니다.
앞뒤에 14 프레임씩 fade 효과를 주고, 빈 프레임(검은색)을 2개 추가하도록 하겠습니다.
FadeIO2(14)

Fade 계열 함수는 여러개가 있습니다. fade-in만, out만 되는 것도 있고, 빈 프레임을 추가하지 않는 것도 있습니다. 이번 경우에는 2 프레임을 추가하는 것이 자연스럽습니다.

마지막으로 color space를 변환해야 됩니다.
ConvertToYV12()
위의 4 가지 스크립트 코드를 각 줄에 따로 기술해도 되지만, 보통 아래와 같이 만듭니다.
ImageSource("casino.royale.dvd9.720p.bluray.x264.mkv%04d.bmp", 108, 214, 23.976)
FadeIO2(14).AddBorders(0,216,0,216).ConvertToYV12()
이제 저 파일을 *.avs 확장자를 붙여 저장하면 끝입니다

4. 인코딩

사용자 삽입 이미지
구슬이 서말이라도 꿰어야 보배라고, 실컷 avs 만들어도 MPEG2 파일 안 만들면 소용 없습니다.
HCgui_022.exe를 실행하면 오른쪽과 같은 창이 뜹니다.
input: 버튼을 클릭해서 앞에서 작성한 avs 파일을 지정하고, ouput: 버튼을 클릭해서 만들어질 mpeg 파일명을 지정합니다.
고해상도이므로 bitrate는 average 10,000kbps, max 18,000kbps 정도를 지정하면 됩니다.
MS에서 제공하는 mpeg 파일은 8,000kbps나 15,000kbps로 만들어져 있습니다.
사용자 삽입 이미지
profile
Best, dc precision11, AR4:3으로 지정합니다. (dc precision은 10만 해도 괜찮습니다)
물론, AR은 화면과 소스 비율에 맞게 적절하게 지정하면 됩니다.
마지막으로 맨 아래의 encode 버튼을 클릭하면 2-passes 모드로 인코딩합니다.

왼쪽과 같은 화면으로 바뀌면서 프로그레스 바가 올라갑니다.
화면에 뜨는 내용은 사실 별로 중요하지 않습니다. 그냥 심심하면 읽어보든가, 딴 일을 하면 됩니다.

5. 저장 및 설정

만들어진 파일은 .mpg가 아니라 .m2v 의 확장자를 갖고 있습니다.
물론, mpeg-2 video 파일이라는 뜻입니다. 그리고, 이 파일은 그냥 확장자만 .mpg로 바꿔주면 됩니다.
사용자 삽입 이미지

확장자를 바꾼 뒤 만들어진 파일을 DreamScene 데이터 폴더(c:\windows\web\Windows DreamScene)에 복사한 뒤에 제어판 → 모양 및 개인 설정 → 개인 설정 → 바탕 화면 배경 으로 이동하고 위치를 "Windows DreamScene 콘텐츠"로 지정하면 만들어진 동영상을 바탕화면으로 지정할 수 있습니다.

오른쪽에 있는 화면은 실제로 적용해서 띄운 화면입니다.
이제 각자 집어넣고 싶은 동영상을 집어넣어 보시기 바랍니다.

사랑하는 사람을 찍은 동영상을 바탕화면으로 사용하면 사랑이 더욱 깊어지지 않을까요?

뱀다리

  1. 아주 복잡하게 적었지만, 사실, 상용 동영상 편집 프로그램에서 소스 파일 읽어들이고, 잘라낸 뒤에 mpeg2 파일로 비디오만 기록하면 됩니다.
    차이가 있다면 이건 몽땅 수작업이라는 것과, 사용된 프로그램이 몽땅 freeware 라는 것 뿐이죠 ^^;;
  2. WMV 파일로 만들어도 똑같이 사용할 수 있습니다. 하지만, AVISynth 스크립트를 Windows Media Encoder에서 읽을 수 없으므로 다른 방안을 강구해야 합니다.