주절주절

바다붐을 가지고 놀아보자 ( 8600GT )

crazyits 2008. 12. 5. 10:00
반응형
바다붐이란?
그래픽카드는 화면 표시를 위한 역할만 하고 있었다.
Nvidia 처음으로 GPU를 개발하였고 3차원 애플리케이션등에서 광원 효과, 객체 변형등 여러가지 수학적인 계산을 CPU가 아닌 GPU에서 처리하게 되었다.
이러한 것을 한층 발전시켜 다른 애플리케이션에 적용하는 것들이 많아지고 있습니다.
바다붐은 그중 한가지로 영상을 빠른 속도로 변환하고자 하는 프로그램이다.

바다붐 요구사항은 바다붐 메뉴얼을 보면 다음과 같이 표시되어 있다.

인코딩을 할수 있는 포멧은 다음에 해당하는 것만 할수 있습니다.
해상도는 최대 1920x1080까지 인식이 가능하고 파일 포멧도 아래와 같은 것만 인코딩을 할수 있습니다.
다른 인코딩 프로그램에 비해 지원하는 포멧이 조금 밖에 없습니다.


인코딩후 생성되는 파일은 다음과 같이 표기되어 있으며 최대해상도 1280x720까지만 가능합니다.



이제 실제로 바다붐을 동작시켜 보도록 하겠습니다.


바다붐 트라이얼 버전을 사용하고 있으니 구매를 위해서 광고가 나옵니다.
이것을 지나가면 아래와 같은 화면이 나오게 됩니다.


간단한 인터페이스를 가지고 있어 사용하기 편하도록 되어 있습니다.
우측에 보이는 것은 시스템이 가지고 있는 CD/DVD에 어떤 미디어가 들어있는지 표시를 합니다.
3개 드라이브에 아무런 미디어도 들어있지 않는 것을 볼수 있습니다.
그 아래쪽 폴더모양은 DVD가 있는 폴더를 찾아서 그 디렉토리를 지정할때 사용하는 것이고
우측 맨아래 보이는 것은 인코딩하고자 하는 단일파일을 선택하게 합니다.
중앙에는 선택한 미디어 기기에 관한 것이 표시되고 상단의 슬라이드는 인코딩 비트레이트를 설정할수 있습니다.
좌측은 인코딩해서 사용할 기기들에 관해서 기본적인 프리셋이 지정되어 있어
단순하게 클릭만 하면 해당하는 기기에 적당한 인코딩으로 설정이 됩니다.

사용자 설정을 하기 위해서는 우측에 있는 ADVANCED 버튼을 누르면 됩니다.
아래와 같은 형태로 나옵니다.




최대해상도, 종횡비변경, 프로필설정, 퀄리티, 오디오 비트레이스등에 관한 설정을 가지고 있습니다.
다른 프로그램들에 비해서 빈약한 설정입니다.

실제로 인코딩을 해보도록 하겠습니다.
사용된 시스템은 다음과 같습니다.
CPU : Core 2 Duo E6420(2.13Ghz)
Mainboard : Foxconn Digital ELA
RAM : DDR2 4GB(2G x 2)
VGA : XFX 8600GT Fatal1ty
다른 인코딩 프로그램은 팟인코더를 사용하였습니다.

대략 400MB정도 되는 파일을 인코딩해보겠습니다.
1920x1080의 해상도를 가진 HDTV 캡쳐된 파일을 사용하였습니다.
생성되는 파일은 480x320 ipod touch용으로 만들었습니다.
인코딩을 시작하면 초당 수행하는 프레임, 남아있는 시간, 파일 저장 정보등을 중앙에 표시합니다.
우측에는 인코딩 종료후 생성될 파일의 용량이 얼마나 되는지 알려줍니다.


인코딩을 수행하는 중 CPU 사용률입니다.
30~60% 사이를 유지합니다.

인코딩이 종료되면 초당처리한 프레임수와 걸린시간을 표시합니다.
초당 53.7프레임을 처리하였고 1분 44초라는 시간이 걸렸습니다.


좀 용량이 큰 파일을 인코딩해보겠습니다.(6GB)
역시 HDTV 캡쳐 파일을 사용해서 수행해보겠습니다.



팟인코더에 동일한 설정을 하고 인코딩을 수행해보았습니다.
바다붐에서는 21분 47초에 걸쳐 인코딩이 끝난 것이 26분이 걸렸습니다.


무려 5분이나 빠른 속도를 보여주고 있습니다.
휴대기기에 사용할 파일을 만드는 것은 다른 인코더를 사용하는 것보다 빠르게 변환이 됩니다.
바다붐의 역할이 잘 드러난다고 볼수 있습니다.

이제 해상도를 조금 올려 1280x720으로 해보도록 하겠습니다.

해상도를 올리게 되면 다른 인코더에 비해서 처리하는 프레임수가 급격하게 떨어지고 있습니다.
동일한 세팅을 하여 팟인코더를 사용하여 인코딩을 하였으나 스크린샷은 못찍었습니다.
그래서 다른 스크린샷에 있는 일부를 가져왔습니다.
0.9x의 속도를 보여주고 있습니다. 약 초당 27프레임을 처리하고 있습니다. 시간은 50분정도가 걸렸습니다.



조금 다른 색다른(?) 것을 해보았습니다.
팟인코더와 바다붐 모두 1280x720해상도를 가지는 파일을 만들도록 세팅을 하고 동작을 시켜보았습니다.
듀얼코어와 GPU를 모두 활용하여 인코딩을 하고 있습니다.
(팟인코더 1280x720, 바다붐 480x320 세팅으로도 동작시켜 보았는데 단일로 동작시켰을때와 비슷한 성능을 보여주었습니다.)
단일로 돌렸을때와 비슷한 속도로 인코딩을 합니다.
쿼드코어가 부럽지 않습니다.. (사실 부럽습니다 ㅡㅡ;;;)

지금까지 보아온 결과에 의하면 기존의 CPU인코딩에 비해서 조금 빠른 결과를 보여주고 있습니다.
이제 화질이나 다른 것을 비교해야 합니다. 그러나.....
바다붐의 이점은 GPU를 이용한 인코딩으로 빠른 속도를 보여준다는 것이므로
화질 비교는 하지 않겠습니다. 화질을 비교할려면 여러가지 비트레이트로 해봐야 되고
정작 중요한 문제는 제눈이 막눈입니다.

정작 인코딩세팅이 간단하게 되어 있는 것은 좋지만 우리나라의 현실에 맞는 기기는 없습니다.
그렇지만 이것은 간단하게 해결을 할 수 있습니다.
바다붐이 설치된 폴더에 보면 Settings.xml, Defaults.xml 등이 있습니다.
먼저 Settings.xml 
outputs 필드를 보면 기본적으로 어떠한 것이 세팅되어 있는지 나와 있습니다.
여기에 필요한 부분을 추가하면 될 것 같습니다.


다음으로 Defaults.xml 파일입니다.
위쪽에서 설정된 output에 관련된 것이 더욱 자세하게 설정되어 있습니다.
프로그램의 수행시 사용되는 아이콘이라던가 비디오, 오디오 관련된 비트레이트, 화면 사이즈등등...
여기에 필요한 것을 추가하면 프리셋을 만들수 있는 것 같습니다.
물론 필요한 그림 파일도 해당하는 폴더에 넣어주어야 합니다.

바다붐 홈페이지에 보니 Zune과 YouTube 예제가 있군요.(http://www.badaboomit.com/?q=node/148)

바다붐을 테스트 하면서 본 문제점들 입니다.
팟인코더는 생성될 파일의 크기를 예측한것이 거의 정확하게 맞습니다.
바다붐은...생성파일 예측크기가 정확하지 않습니다.

 생성될 파일 크기  실제 파일 크기
 29.4MB  49.5MB
 94.8MB  173MB
 579.9MB  852MB

CPU 사용량이 좀 높습니다. GPU를 사용한다면 CPU의 자원은 거의 소모하지 않아야 하는데
바다붐을 사용시 30~60%정도 사이의 CPU를 사용합니다.
다른곳에서 본 사용기에서는 CPU를 거의 사용하지 않던데 사용된 파일에 따라서 틀린 것 같습니다.


이제 결론을 내려보도록 하겠습니다.

장점
1. GPU를 활용하여 빠른 인코딩을 할수 있다.
(단 약간의 제약조건이 있다. 최소 8600GT 이상을 가지고 있어야 하고 사용하고자 하는 기기가 변환되어 나오는 파일을 지원해야 됨)
2. 간단한 인터페이스를 가지고 있고 프리셋이 설정되어 있어 클릭만으로 손쉬운 변환이 가능

단점
1. 바다붐의 진정한 성능(?)을 느끼기 위해서는 8800이상급의 GPU를 사용해야만 한다.
2. 국내 휴대기기에 대한 프리셋이 없다.
3. 우측에 표시되는 파일크기와 실제 생성되는 파일크기가 다르다.
4. 코덱의 부족과 적용되는 코덱에 따른 CPU 점유율문제





지금까지 매우 난잡한 글을 읽어주셔서 감사합니다.

라고 끝마치고 싶었습니다...만...

"그렇게는 못하겠습니다"
(아마 이게 강메에 버전이죠?)























이것으로 끝나면 재미가 없습니다.

그래서 이제부터 좀 까도록 하겠습니다.


1. 메뉴얼에 보니보니 LGPL을 따르는 FFMPEG, FAAC등을 가져다 사용했습니다.
FFMPEG는 GPL과 LGPL의 두가지 라이센스가 있고 FAAC는 LGPL만 있습니다.
어느정도까지 사용했는지는 위 내용만 보고는 알수가 없습니다만..
이것으로 인해 라이센스에 관해서 문제가 생길 소지가 보입니다.
(기글하드웨어의 레드팍스님 감사합니다. LGPL이라고 알려주셔서 수정)




2. 프로그램은 트라이얼로 제공되고 있습니다. 그것도 인코딩 30회라는 제한을 걸어서 말이죠.
인코딩 프로그램은 같은 파일이라도 인코딩을 여러번 해보아서 자신이 원하는 영상을 뽑아내야 됩니다.
그런데 30회라는 제한으로 인하여 1개의 파일만 인코딩하고 더 이상 프로그램을 사용하지 못하게 될수도 있습니다.
과연 누가 이것을 30$이나 주고 구매를 하겠습니까?
다른 프로그램들처럼 일정기간을 사용할수 있게 하거나 특정한 기능을 사용할수 없도록 해서 배포를 하는 것이 좋을 것 같습니다.
아니면 기본적인 것은 무료로 풀고 추가적인 확장에 대해서만 유료의 정책을 취하는 것도 좋은 방법이라 생각합니다.(이전에 비해서 많이 풀어진 것이라고는 하지만 아직 부족하다고 생각합니다.)


3. 프로그램을 살펴보면 Visual Studio 2005로 제작된 것 같습니다.
이유는 Badaboom이 설치된 폴더를 보면 Microsoft.VC80.CRT라는 폴더가 있습니다.
2바이트 문자에 대한 지원을 하지 않는 것인지 의문입니다.
약간의 작업만 하면 구현이 가능한 것입니다.


4. 몇가지 프리셋이 설정되어 있습니다.
바다붐의 성능을 고려하면 휴대용기기용 영상을 빠른 속도로 만드는 것이라 생각합니다.
국내에 적합한 프리셋이 없습니다. 그래서 찾아보았습니다.
바다붐이 설치된 폴더를 보면 Default.xml, Settings.xml 등에 세팅정보가 들어 있습니다.
파일 관련된 처리와 인터페이스 조금 만들어 주면 사용자가 한결 편하게 설정을 할수 있습니다.


3번과 4번을 생각하면 좀 과격한 표현이지만 이런 말을 해주고 싶습니다.

"프로그래머가 발로 코딩했나요?"


개인적인 생각으로 흥분하고 과격한 비난을 날려 사용기가 아닌 비난기가 되었지만
이것으로 인하여 바다붐과 Nvidia의 많은 발전을 바라며 이 글을 마칩니다.

지금까지 읽어주신 모든 분들에게 행운이 함께 하시길 기원합니다.

반응형