LG의 Xcanvas의 특징 중 대표적인 것이 타임머신 기능이다. 흔히 PVR(Personal Video Recording)이라 불리는 기능으로, 방송을 하드디스크에 편리하게 녹화해서 볼 수 있게 해준다. LG가 이 기능에 타임머신이란 브랜드를 붙인 이유는 단순히 녹화하고 재생하는데서 끝나지 않고 실시간으로 지나간 방송을 되돌려서 볼 수 있도록 해주기 때문이다.
Xcanvas의 타임머신 기능이 나온지도 벌써 몇 년이 지나서 지금은 3세대에 와 있다. 3세대에서는 녹화된 컨텐트를 편집할 수 있는 기능은 빠진 대신에 외부USB HDD를 붙여서 내장HDD의 용량 한계를 극복해서 백업을 받을 수도 있고, 외장 USB HDD로 부터 직접 재생도 가능하도록 하는 기능이 추가되었다. 편집 기능이 빠진 것은 매우 아쉬운 점이지만 외장 HDD사용을 가능하게 한 것은 매우 환영할만한 발전으로, HD방송의 경우 10시간 남짓한 분량만 내장HDD에 기록 가능하기 때문에 기존에는 보존하고 싶은 녹화물 때문에 점점 내장 HDD가 차버리고 언젠가는 1~2시간 분량의 공간으로 녹화하고 지우는 것을 반복해야 하는 사태에 직면하던 아쉬움을 말끔히 해소해 준다고 할 수 있다. 실제로 PC에서 HDD용량을 늘려도 늘려도 동영상을 채우다 보면 늘 용량 부족에 시달리게 된다는 점을 생각하면 합리적인 선택이라고 생각된다.
게다가 (잘 알려져 있는 기능은 아니지만) 외장HDD에 복사된 컨텐츠는 PC로 가져가서 볼 수도 있다. 그냥 가능한 것은 아니고, LG에서 제공하는 전용 재생프로그램(Windows용 Xcanvas player)을 사용하면 된다. PC에서 곰플레이어나 KMPlayer같은 일반적인 동영상 플레이어를 사용할 수 없는 이유는 TV에서 녹화용으로 사용하는 HDD는 file system을 Linux의 EXT3를 사용하기 때문에 그냥은 PC에서는 인식조차 되지 않기 때문이다. 참고로 Xcanvas에서 처음 USB HDD를 연결하면 자체 file system으로 완전히 새로 formatting해버리는 과정이 실행되어 Xcanvas전용 HDD로 만들어 버린다. 따라서 Xcanvas용 HDD는 PC에서는 인식되지도 않고 그냥은 사용할 수도 없는 것이다.
그러나 앞서 언급된대로 file system을 뭘 사용하는지가 알려져 있다면 얼마든지 PC에서 이를 추출하는 것도 가능하다. 이런 가능성을 내가 처음 알게 된 것은 "[[사용기]] LG 3세대 타임머신 녹화영상 PC 에서 시청 및 편집방법" 이란 글을 발견하면서였다. 여기서 이 글의 일부를 인용한다.
"Xcanvas player 설명서에서 뭔가 크게 손을 댄 것처럼 거창하게 읊고는 있지만, LG 타임머신은 리눅스 Ext3 파일시스템을 쓰고 있고, 이 시스템이 오픈소스지만 상당한 리눅스 프로그래머가 아니면 개조하기가 좀 어렵다는 것입니다. 단지 리눅스 ext3 파일 시스템을 읽을 수만 있다면 윈도 시스템에서도 쉽게 인식할 수 있을 것이라고 봤습니다. 그리고 그 예상은 정확히 일치했습니다. 예상은 했지만 너무 단순하네요. "
이제 PC에서 파일을 추출할 방법은 찾았으니 변환은 시간문제 ^^.
이 글에서는 Xcanvas에서 내장 HDD에 녹화한 프로그램을 최종적으로 Windows PC에서 볼 수 있는 AVI파일로 변환하는 과정을 다음과 같이 단계별로 설명하고자 한다.
STEP 1 TV에서 프로그램을 녹화한다.
STEP 2 내장 HDD에 저장된 녹화물을 외장 HDD로 복사한다. 참고로 외장HDD는 40GB이상을 사용해야 한다. 최초 연결시 TV에서 자체 포맷(Linux EXT3)으로 포맷된다. 일단 포맷이 되면 그 담부터 자동으로 인식해서 연결했다 뗐다 자유롭게 사용할 수 있다.
STEP 3 PC에 EXT3파일 시스템 디스크를 읽을 수 있는 프로그램을 설치한다. Explore2fs란 프로그램인데 http://linuxer.pe.kr/88 에서 다운받을 수 있다.
잠깐! Vista 사용자에게는 너무나 중요한 주의사항
지금부터 설명되는 모든 소프트웨어는 반드시 관리자 권한으로 실행해야 합니다. 로그인을 관리자 권한으로 했더라도 실행때마다 아래의 예와 같이 실행파일을 right click해서 관리자 권한 실행을 해줘야 합니다.
그 이유는 여기서 사용되는 프로그램들은 정식으로 설치된 것이 아니므로 Vista의 보안 메카니즘에 의해 그냥 실행하면 관리자권한이 부여되지 않기 때문입니다. 그래서 관리자 권한이 아닌 상태에서 실행된 프로그램은 아래에서 설명된 것 처럼 동작하지 않습니다. 매우 중요한 사항이니 명심하세요.
Explore2fs를 구동하고, TV에서 복사된 컨텐츠를 담고 있는 HDD를 USB포트에 연결하면 이 HDD의 내부를 들여다 볼 수 있다. 저장된 영상물 각각이 별도의 폴더에 담겨 있는걸 볼 수 있다. 어차피 지금부터는 무슨 폴더가 무슨 방송녹화물이었는지는 알 수 없으므로 STEP2에서 외장HDD로 복사할때 저장된 프로그램의 순서를 메모하거나 잘 외워둘 필요가 있다. 가장 최근 녹화물이 가장 높은 숫자의 폴더에 들어있다.
내가 원하는 컨텐츠가 담긴 폴더에 들어가면 아래와 같이 여러 개의 이름모를 파일들이 존재함을 볼 수 있는데, 이 중에서 마지막이 STR로 끝나는 파일이 동영상 파일이다.
- 00000003PIF
- 0000000300000000DAT
- 0000000300000001IDX
- 0000000300000001STR
- 0000000300000001THM
확장자는 없지만 MPEG2+AC3 bit-stream이 담긴 동영상 파일이므로 이를 PC로 복사한다. 확장자는 임의로 지정하거나 없어도 된다. 어차피 이 후의 변환 과정에서 사용하는데는 아무 문제없다.
STEP 3 나중에 동영상을 PC friendly하게 변환하는데는 유명한 VirtualDubMod란 프로그램을 사용할 예정인데, VirtualDubMod가 지금 복사된 MPEG2파일을 (확장자와 상관없이) 바로 인식을 하지 못하므로 중간에 약간의 변환 과정이 필요하게 되는데, 이때 일차로 필요한 프로그램이 DGIndex란 것이다. DGIndex가 뭘하는 넘인가 궁금한 분들을 위해 소개글을 그대로 인용하자면;
DGIndex, part of the DGMPGDec package, is primarily designed to create an index of an MPEG video stream, containing the location of each frame in the input stream, and some additional information about each frame. This index, or project file, is used by the companion Avisynth filter DGDecode to provide frame-accurate serving of the video via an Avisynth script. DGIndex is able to decode and index most MPEG1/2 streams including elementary streams, program streams, VOBs, VCDs, SVCDs, PVA files, and transport streams. Additional features include: video demuxing (m1v/m2v), audio demuxing (ac3, dts, aac, mpa, and lpcm), optimized iDCTs, luminance filtering, cropping, and more.
라고 되어 있는데 한마디로 나중의 비디오 처리의 선결작업으로 MPEG비디오 stream에 index란걸 만들어 주고 오디오는 demux시켜 주는 넘 되시겠다. 더 쉽게 말하자면 비디오와 오디오를 분리해서 정리해 준다 정도로만 이해하면 되겠다.
hdtv-rip.zip
STEP3~5에서 사용되는 프로그램들 (DGIndex, VFAPIConv, VirtualDubMod)
DGIndex를 실행시키고 아까 저장해논 MPEG파일을 Open하면 이런 에러가 뜨는데 무시해 버린다.
다음 과정으로 Stream 메뉴에서 Detect PIDs : RAW를 선택한다.
Detect PIDs:Raw 메뉴를 실행하면 다음과 같은 창이 뜨고, 여기서 어떤 비디오와 오디오
블록을 사용할지를 각각 지정한다. PID란 Program ID의 약자이고, 어떤 정보가 담겨 있는지에 대한 목록같은 거라고 할 수 있다. 프로그램에 따라서는 비디오나 오디오 외에 다른 스트림도 담겨 있을 수 있고, 비디오/오디오도 여러개가 담겨 있을 수 있으므로 각각을 지정해서 분리해 주는 작업이다. 0x11: MPEG Video를 선택한 후 Set Video를 클릭하고, 같은 방법으로 0x14: Private Stream 1 (AC3/DTS Audio)를 선택한 후 Set Audio를 클릭한 다음, 마지막으로 Done을 클릭한다. 나오는 항목의 표시내용은 컨텐츠에 따라 조금씩 다를 수 있으나 비디오는 비디오로 set하고 오디오는 audio로 set하면 된다. 많은 경우, 오디오가 2개가 나오는 경우도 있다. 이 경우는 대개 메인에 해당하는 것을 선택하면 된다.
최종적으로 File메뉴에서 Save Project로 작업을 완료하면 d2v와 ac3 확장자를 가진 파일이 생성된다. D2v에는 video에 관한 정보가 담기고, ac3에는 audio stream이 담기게 된다.
STEP 4 다음 스텝은 준비된 비디오 인덱스정보를 이용하여 VirtualDubMod가 인식할 수 있는 형태로 변환해 주는 과정이다. 이를 위해 VFAPIConv라는 프로그램이 동원된다. 이 프로그램은 앞단계에서 저장한 d2v파일을 이용해 가상의 AVI 파일을 만든다. 동작은 간단하다. 메뉴에서 Add file을 선택해서 step3에서 만든 d2v파일을 열고 Convert 명령만 주면 끝이다.
이 작업은 순식간에 이루어지며, 실제로 만들어진 AVI파일은 매우 작은 사이즈이다. 왜냐하면 실제 데이터는 최초의 TS파일이 그대로 가지고 있고, 이 AVI파일은 VirtualDubMod가 작업을 처리하기 위한 매개체, 즉 AVI포맷 인식 용도로만 작동할 뿐이기 때문이다.이미 오디오 데이터는 이미 추출되어 있으므로 이 과정에서는 오디오에 대해서는 아무런 조치를 하지 않는다.
STEP 5 마지막으로 다소 길지만 VirtualDubMod을 사용해서 AVI동영상을 제작하는 과정을 살펴보자.
동영상을 새로 압축하는 과정을 인코딩이라고 부르는데, 만약 인코딩을 하지 않으면 엄청난 사이즈의 파일을 그대로 사용해야 하기 때문에 대부분의 경우에 적당한 코덱을 사용해서 인코딩하게 된다. 코덱은 VirtualDubMod와는 별개이므로 알아서 설치해야 한다. 다양한 코덱을 모아 놓은 K-Lite Codec Pack을 미리 설치해 놓으면 좋다. 물론 자신이 원하는 codec이 별도로 있다면 그 코덱을 구해서 설치하면 된다. 여기서는 높은 압축률과 낮은 시스템 점유율 때문에 가장 보편적으로 사용되는 압축코덱(인코더)인 XviD MPEG-4를 사용하기로 한다. 따라서 VirtualDubMod를 실행하기 전에 XviD를 설치해 놓는다. K-Lite Codec Pack에는 XviD 코덱이 포함되어 있다.
또한 VFAPIConv로 만든 가상의 AVI를 해석할 코덱이 미리 설치되어 있어야 한다. VFAPIConv 폴더에는 vifpset.bat 란 배치파일이 있는데 이 BAT파일을 바로 실행을 하면 DOS창이 뜨면서 해당 코덱이 설치가 된다. Cmd명령으로 DOS창을 띄워서 커맨드라인 명령으로 실행해도 된다.
VirtualDubMod에서 2단계에서 만들어진 AVI 파일을 연다.
이때 다음과 같은 경고창이 뜬다면 VFAPIConv로 만든 AVI를 해석할 코덱이 설치되지 않아서 그런 것이므로 위의 vifpset.bat 을 실행해주고 오면 된다.
VirtualDubMod에서 AVI 파일을 불러오면 다음과 같이 동영상 화면이 나타난다. 동영상의 크기가 HDTV의 표준 해상도인 1920x1080인데 아래의 스크린샷은 right 클릭을 해서 사이즈를 보기 편하게 조절해준 것이다. 왼쪽은 원본 동영상 그리고 오른쪽은 인코딩된 출력 동영상이 표시된다.
1920x1080은 PC에서 보기에는 너무 크고 파일 사이즈도 커지므로 PC용으로 적절한 사이즈로 줄이기 위해 동영상의 해상도를 줄이기 위한 설정을 해준다. VirtualDubMod는 비디오에 대한 여러가지 처리를 해주는 모듈을 보유하고 있는데 이를 필터라 부른다. VirtualDubMod가 제공하는 필터의 예를 몇가지만 들자면 resize, de-interlace, flip, sharpen, blur등등이 있다. 여기서는 영상을 원하는 사이즈로 줄이는 resize 필터와 de-interlace 필터 두가지를 적용할 것이다. Video 메뉴에서 Filters를 선택하고 여기서 다시 Add버튼을 선택하면 다음과 같은 창이 뜬다. 사용 가능한 다양한 필터들의 리스트를 볼 수 있다.
여기서 Resize를 선택하면 다음과 같은 설정창이 나타난다. 여기서 원하는 가로(width)와 세로(height)의 pixel값을 입력하고 mode는 Lanczos3를 선택한다. 아래의 스샷예에서는 가로 세로 모두 절반(Height : 1920->960, Width 1080->540)으로 줄여 보았다.
마찬가지로 deinterlace필터를 선택해준다. 방송 데이터는 interlace이지만 AVI는 progressive포맷이므로 해줘야 하는 작업이다. Deinterlace필터는 기본값으로 그냥 설정해준다.
두가지 필터가 선택되고 난 최종 상태는 다음과 같다.
OK를 누르고 나오면 필터 설정은 완료 되었다.
마지막으로 압축률이 낮아 무지막지한 파일사이즈를 자랑하는 MPEG2로 되어 있는 원본 데이터를 XviD로 새로 압축하도록 설정하는 부분이 남아 있다. 마찬가지로 Video 메뉴에서 Compression을 선택하면 다음과 같은 화면을 볼 수 있다. 여기서 XviD MPEG-4 Codec를 선택한 후 Confiture버튼을 누르면 세부설정창이 뜬다. 별다른 특기사항이 없다면 세부설정은 하지 않아도 된다.
이제 비디오에 대한 설정은 끝났다. 오디오는 이미 추출해 놓았으므로 일반적인 경우는 다른 변환이 필요없고 그대로 재압축된 영상에 입혀 주기만 하면 된다. 오디오를 덧입히는 작업지시는 Streams메뉴에서 잡아준다. Stream list를 선택하고 Add를 눌러서 아까 추출해 놓은 AC3 파일을 불러온 결과가 다음의 스샷이다.
이 모든 설정이 완료되면 최종적으로 메인메뉴의 File -> Save As 를 선택해서 최종적인 avi파일명을 입력하고 저장시킨다. 저장명령과 동시에 인코딩과정이 시작된다. 인코딩 중에는 다음과 같은 Status창이 뜨면서 한참동안 인코딩 및 저장 작업이 이루어진다.
이상으로 변환의 모든 작업을 마쳤다. 조금은 복잡해 보이지만 공중파에서 방영되는 좋은 HD컨텐츠, 특히 다큐멘터리나 EBS프로그램들을 그냥 스쳐 보내지 않고, 보존하해 나중에도 꺼내 볼 수 있게 된다면 충분히 시간과 노력을 들일 가치가 있는 작업이라 사료된다.
여러분도 꼭 성공하시길 바라면 긴글을 마칩니다.
참고문헌
[1] Xcanvas 블로그 (http://www.xcanvasblog.com/) Xcanvas로 할 수 있는 여러가지 기능에 대한 설명을 모아 놓은 곳입니다. 타임머신 Xcanvas를 가지고 있는 분들에게는 많은 도움이 될 듯.
[2] cy71이란 분이 쓴 "LG 3세대 타임머신 녹화영상 PC 에서 시청 및 편집방법" (원저자 사이트는 알 수 없고 여기를 가면 볼 수 있음)
[3] MoonChild's weBlog "HD 디지털방송 소스 TP를 AVI 동영상으로 인코딩하는 방법" (http://moonchild.kr/57)