KMPlayer에서 CyberLink PowerDVD코덱을 이용해 동영상을 DXVA로 재생하기

Go down

KMPlayer에서 CyberLink PowerDVD코덱을 이용해 동영상을 DXVA로 재생하기 Empty KMPlayer에서 CyberLink PowerDVD코덱을 이용해 동영상을 DXVA로 재생하기

올리기  Admin 2012-07-18, 11:06 pm

KMPlayer에서 CyberLink PowerDVD코덱을 이용 H.264/AVC 동영상 DXVA로 재생하기

kmp_2.9.3.1428 버전과 CyberLink PowerDVD12 Codec
NavFilter / VideoFilter
NavFilter->CLDemuxer2.ax
VideoFilter->CLCvd.ax
-----------------------------
TS, TP파일 경우 PDVD 코덱을 이용해 DXVA를 사용할 수 있습니다만, CoreAVC 코덱에는 DXVA기능이 없으므로 하드웨어 가속이 불가능합니다. 물론 CoreAVC에도 하드웨어 가속이 있습니다만 CUDA가속화 기능은 nVidia 계열의 VGA만 지원을 하니 ATi계열의 VGA는 불가능합니다. 따라서 H264영상도 CoreAVC를 사용하는 대신 PDVD을 사용하면 DXVA를 사용할 수 있습니다.

개인적으로 테스트 해본 결과 KMPlayer에서 CoreAVC코덱으로 CUDA를 사용하는 것보다 CyberLink PowerDVD코덱으로 DXVA를 사용하는 것이 보다 나은 성능(CPU 점유율에서 많은 차이)을 보입니다. DXVA 하드웨어 가속를 사용하여 H.264/AVC 영상을 재생하면 CPU 점유율을 크게 낮출 수 있습니다.
KMPlayer의 내장 코덱은 DXVA를 지원하지 않지만, 외부 CyberLink PowerDVD 코덱을 적용하면 KMPlayer에서도 DXVA를 사용할 수 있습니다.
그런데, 대부분의 Windows Vista/7 컴퓨터에서 DXVA2 지원 그래픽카드 DXVA를 사용하여 H.264/AVC 영상을 재생하려면 반드시 EVR (Enhanced Video Renderer) 계열의 렌더러가 필요합니다. 그런데 KMPlayer의 EVR은 문제가 좀 있습니다.
EVR은 시스템이 제공하는 순수한 EVR과 동영상 플레이어가 부가적인 처리를 하는 EVR Renderless (플레이어에 따라 EVR CP, EVR (C/A),등 다양하게 표기) 의 2가지가 있는데, EVR Renderless는 기능이 많은 대신 아직 불안해서 초고화질 영상에서 간헐적인 화면 버벅임이나 싱크 어긋남 등의 여러 문제가 발생합니다. ("MPC-HC"의 EVR CP는 상당히 안정화되었습니다.)

하여튼 순수한 EVR을 쓰는게 기능은 적더라도 안정적인데 KMPlayer 1435 버전부터는 순수한 EVR이 없습니다.
설정에 Enhanced Video Renderer가 있기는 합니다만 이름만 EVR이고 실제적으로는 Enhanced Video Renderer(C/A)와 마찬가지로 EVR Renderless입니다.그에 비해 KMPlayer 1434 버전까지는 Enhanced Video Renderer가 순수한 EVR이었습니다. 하지만 이 EVR은 곰플레이어의 EVR과 마찬가지로 자막을 출력하지 못하는 단점을 가지고 있습니다.

즉 KMPlayer는 최신버전을 쓰든 구버전을 쓰든, 자막이 지원되면서도 순수하고 안정적인 EVR을 사용할 수 없다는 뜻입니다. KMPlayer의 EVRRenderless가 안정적이라면 별 문제가 아니겠지만, 위에 언급했듯이 KMPlayer의 EVR Renderless는 불안합니다.

----Test----
Windows Vista/7에서 kmp_2.9.3.1428 와 CyberLink PowerDVD12 Codec 코덱을 이용해 H.264/AVC 동영상을 DXVA로 재생결과

1. Enhanced Video Renderer 사용 재생결과 CPU 점유율이 낮고 화질은 깨끗하게 나왔지만 자막이 출력되지 않았습니다.
2. Enhanced Video Renderer(C/A)를 사용하니 자막이 제대로 출력이 되었습니다. 하지만 Enhanced Video Renderer사용시보다 화질은 만족스럽지 못했습니다.
KMPlayer에서 CoreAVC 코덱의 CUDA 하드웨어 가속 기능을 사용하는 것도 나쁘지 않습니다. CUDA를 쓰면 DXVA에 근접하는 CPU 점유율 감소 효과를 볼 수 있습니다. 단, CUDA 하드웨어 가속 기능은 NVDIA 그래픽카드에서만 사용할 수 있습니다.(CUDA 지원 여부 확인)
------------------------------

KMPlayer로 TS, TP와 Mkv MP4등 DXVA를 사용하여 H.264/AVC 영상을 재생하는 방법을 설명하겠습니다.

DXVA를 사용하려면
1.그래픽카드가 H.264/AVC 코덱의 DXVA를 지원하는지 확인.
2.H.264/AVC 영상의 DXVA를 지원하는 외부코덱을 설치.

H.264/AVC 영상의 DXVA를 지원하는 코덱은 Microsoft DTV-DVD Decoder(Windows 7 전용), CyberLink Video Decoder, ArcSoft Video Decoder, MPC Video Decoder 등이 있습니다.
여기서는 CyberLink Video Decoder를 예로 설명을 해보겠습니다. CyberLink Video Decoder는 PowerDVD의 최신 버전에 포함되어 있는 코덱으로 MPEG2와 H.264/AVC의 DXVA를 지원합니다.

KMPlayer의 환경 설정...(F2)로 들어가서...
내장 비디오 코덱의 기본 코덱 탭에서 H.264와 AVC1,WVC1/VC1의 체크를 해제합니다.
외부 비디오 코덱에서 외부 코덱 사용자 정의 버튼을 클릭하세요.
외부 코텍 추가 버튼을 클릭합니다. PowerDVD12 Codec 저장 폴더로 들어가서

NavFilter->CLDemuxer2.ax , VideoFilter->CLCvd.ax 코덱을 추가 합니다.

외부 코덱/필터 관리 화면에 사용하려는 외부코덱 CyberLink Video Decoder(PVD12),CyberLink Demuxer2.0 표시.

"Demuxer2.0" 항목을 클릭하고 우측 사용할 코텍/필터에서 MPEG2(PS) Splitter,MPEG2(TS) Splitter,MPEG4/QT Splitter항목을 체크.
다시 좌측 코덱 목록에 "CyberLink Video Decoder (PDVD12)" 항목을 클릭하고 우측 사용할 코텍/필터에서 "MPEG1 Video,MPEG2 Video와 H.264와 AVC1, WVC1/VC1"항목을 체크 확인. 확인 버튼을 클릭합니다.

외부 비디오 코덱에서 MPEG1 Video와 MPEG2 Video에서 CyberLink Video Decoder(PVD12)로
마찬가지로 H.264와 AVC1, WVC1/VC1 사용하려는 CyberLink Video Decoder(PVD12)으로 바꾸어 주면 됩니다.

그리고 옆에 있는 ... 버튼을 클릭하면 CyberLink Video Decoder의 설정창이 뜹니다.
Miscellaneous의 DXVA를 체크하고 확인 버튼을 클릭합니다. CyberLink Video Decoder의 설정창을 다시열면 원래 SW 설정으로 돌아갑니다.
다시 DXVA를 체크를 해야 합니다. 코덱마다 DXVA 설정 부분이 조금씩 다르며, Microsoft DTV-DVD Decoder처럼 설정이 아예 없는 코덱도 있습니다.

다음 Splitter필터 설정으로 대개 H264영상의 컨테이너는 AVI, MKV, MP4정도로 볼 수 있습니다. 따라서 해당 컨테이너에 맞는 스플리터를 찾아야 합니다.이 Splitter필터 문제가 무척 까다롭습니다.
Matroska Splitter에서는 CyberLink Matroska Splitter CLMKVSplter.ax보다 내장 Gabest Matroska Splitter를 사용. PDVD의 mkv스플리터는 싱크밀림 현상이 잦으니 mkv같은 경우에는 haali스플리터나 Gabest Matroska Splitter를 사용하시는 것을 추천합니다.CPU의 점유율에서 내장 스플리터를 사용하시는 것이 좋을 것 같습니다.

MPEG2(PS) Splitter에서는 CyberLink Demuxer2.0
MPEG2(TS) Splitter에서는 CyberLink Demuxer2.0
MPEG4/QT Splitter에서는 CyberLink MPEG-4 Splitter clm4splt.ax보다 CLDemuxer2.ax Splitter를 사용하는게 낫습니다.

영상 처리에서 영상 처리 필터 탭에서 아래의 조건이라면 사용하지 않음을 선택하고 FOURCC에 체크를 해서 H.264/AVC 영상 재생시 영상 처리 필터가 작동하지 못하게 합니다.

마지막으로 영상 처리의 영상 출력 장치 탭에서 출력 장치를 설정해야 합니다.
우선 DXVA Checker를 통해 그래픽카드가 MPEG2 코덱의 DXVA1을 지원하는지, DXVA2를 지원하는지 확인해보세요.

(1) Windows Vista/7 + DXVA2 지원 그래픽카드 (대부분의 Windows Vista/7 컴퓨터)
무조건 Enhanced Video Renderer나 Enhanced Video Renderer(C/A)를 선택해야 합니다. 다만 이 글의 처음 주의사항에 언급했듯이 KMPlayer의 EVR 계열은 전반적으로 불안해서 개선이 필요합니다.

(2) Windows Vista/7 + DXVA1 지원 그래픽카드
Overlay Mixer와 VMR9 - Renderless mode가 비교적 무난합니다. 나머지 렌더러들도 테스트 해보세요. Overlay Mixer를 사용하면 에어로 기능이 꺼져버리니 참고하세요.

(3) Windows XP
Overlay Mixer와 VMR9 - Renderless mode가 비교적 무난합니다. 나머지 렌더러들도 테스트 해보세요.

이렇게 4가지 조건에 맞추어 모든 설정을 끝냈다면 H.264/AVC 영상을 재생시켜 보세요.
DXVA가 제대로 적용되었는지 확인해 보시려면 Tab 키를 누르시면 됩니다.

비디오 정보의 코덱이 우리가 설정한 외부 코덱(Cyberlink Video Decoder)이 맞고, VideoInfo2가 dxva나 NV12라고 표기되었다면 DXVA가 올바르게 적용된 것입니다. (확실한 확인 방법 CPU 점유율의 감소 정도를 체크) 이렇게 DXVA가 제대로 적용되었다면 DXVA 적용 전에 비해 CPU 점유율이 떨어지는 것을 확인할 수 있을 겁니다. 만약 CPU 점유율이 별 차이가 없다면 DXVA가 적용되지 않은 겁니다. 다시 한번 체크해보세요.

KMPlayer 내장 코덱과 CyberLink Video Decoder(SW 가속)처럼 소프트웨어 가속 코덱을 사용할 때는 CPU 점유율이 30~50% 정도로 높게 나왔지만, DXVA를 사용하면 5% 이하로 낮게 나왔습니다.
다만 KMPlayer의 영상 출력 방식 중 Windows Vista/7에서 선택해야 하는 Enhanced Video Renderer 계열은 문제가 많습니다. 720p 30프레임급의 일반적인 H.264/AVC 영상은 그런대로 무난하게 재생하지만 그 이상의 초고화질 영상에서는 화면 버벅임이나 싱크 어긋남 등의 문제가 발생할 가능성이 높습니다. 그러니 DXVA 사용을 위해서 Windows Vista/7 유저들은 KMPlayer와 MPC-HC와 겸용해서 사용하시는게 낫습니다.

이제 CoreAVC와 Haali Splitter를 사용하지 않고서도 PDVD Codec의 DXVA를 사용해 좋은 화질로 영상을 감상하는 것이 가능해졌습니다. 이 글은 Windows 7을 기준으로 작성됐습니다.

왜 MKV나 MP4역시 PDVD 전용 스플리터 파일 사용하지 않는가? 라는 의문을 가지신 분들도 계시리라 생각합니다. 이유는 호환성 때문입니다. 물론 MKV나 MP4역시 PDVD 전용 스플리터 파일로 설정하는 것은 어렵지 않습니다만, 특정 파일의 경우 오류가 잦았습니다. 특히 MP4는 그 빈도가 더욱 잦았기 때문에 CyberLink Demuxer 2.0 스플리터를 사용하는 것이 더 낫겠다 싶었습니다.

---------------------------------
추가
1.사이버링크 코덱을 설정했는데도, 적용이 안되는 경우
사이버링크 코덱과 스플리터를 설정하고 플레이어로 동영상을 보면 당연히 사이버링크 코덱이 적용되어 나옵니다. 하지만 일부의 경우 적용된 필터를
확인해 보면 "CyberLink Demuxer 2.0" 스플리터가 적용되지 않는 경우가 있습니다.
보통 tp나 ts의 확장자를 갖는 파일은 MPEG2 코덱을 사용하고 있습니다. 앞서 언급한 것처럼 사이버링크 코덱을 설정하면 "Demuxer 2.0"이 먼저 음성과 영상을 분리해 각각의 코덱에 전달해 주어 재생이 되는 매커니즘입니다.
MPEG2 에는 "MPEG2-PS"와 "MPEG2-TS"가 있습니다. 이것은 코덱설정창에서도 확인하실 수 있을 겁니다. 대부분의 HD영상은 "MPEG-TS"인데, "Demuxer 2.0" 대신 "MPEG Parser"로 재생되는 파일은 "MPEG2-PS"입니다. "Demuxer 2.0" 스플리터가 "MPEG2-PS"를 읽어들이지 못할 경우가 일어나는 현상이 있습니다. 이것을 해결하기 위해서는 "MPEG2-PS"의 경우 다른 스플리터를 사용해 불러들여와야 합니다.

예전에 백업해 두었던 CyberLink 관련 파일을 불러와야 합니다. "NavFilter"폴더에서 "CLSplter.ax"파일을 선택해 불러옵니다.
좌측의 코덱목록에 "CyberLink MPEG Splitter"항목이 생긴 것을 확인할 수 있습니다. 이 항목을 선택하고 우측 사용할 코텍/필터에서 "MPEG2 PS"항목을 체크합니다. 그리고 확인을 눌러 관리창을 닫습니다.
다시 스플리터 설정창으로 돌아가 "MPEG2 PS"의 항목을 "CyberLink MPEG Splitter"로 설정해주면 됩니다.
아까전 "MPEG Parser"이 사용되던 파일을 다시 재생시켜 보면 "CyberLink MPEG Splitter"이 정상적으로 작동됨을 알 수 있습니다.

2, H264 코덱에 Haali Splitter가 적용되지 않는 경우
코덱이 H264임에도 필터목록을 확인해 보면 스플리터가 "Haali"가 아닌 "AVI Source"가 사용되는 경우를 확인할 수 있습니다. 이것은 스플리터가 확장자를 기준으로 작동되기 때문입니다.
설정창의 [코덱/필터] - [Source/Splitter] 항목에 들어가보면 AVI의 스플리터가 "내장 AVI Source/Splitter"로 설정되어 있음을 확인하실 수 있습니다. 정확히 말하자면 확장자가 아니라 컨테이너를 기준으로 작동하는 것이지만 일단 AVI의 경우 확장자로 이해하셔도 무리가 없을 듯 합니다.
H264코덱을 사용한 AVI파일의 경우에도 Haali Splitter가 적용되기를 원하신다면, "필터/코덱 관리" 창을 엽니다.
좌측의 목록에서 "Haali Media Splitter"를 선택하고 "Source/Splitter"항목에서 "AVI"를 체크해 줍니다.
그리고 "정상적인 AVI"항목을 "Haali Media Splitter"로 설정해면 됩니다.
해당 파일을 다시 재생해보면 Haali Media Splitter가 사용됨을 알 수 있습니다.

여기에는 몇가지 단점이 있습니다.
우선 H264코덱을 사용하지 않은 AVI의 경우에도 스플리터는 "Haali Media Splitter"가 사용됩니다. 사실 내장 스플리터보다 "Haali"가 나쁘지 않기 때문에, 이것은 그다지 문제가 되지 않을 수 있습니다. (내장 스플리터가 훨씬 안좋지도 않습니다.)
하지만 다른 부분에서 치명적인 문제가 발생합니다. 원인은 알 수 없으나 일부의 경우, H264코덱을 사용한 AVI파일을 "Haali" 스플리터를 사용해 재생하는 경우 음성과 영상의 싱크가 안맞는 경우가 발생합니다. 이 경우 다시 내장 스플리터를 설정해 주니 정상으로 돌아왔습니다.
따라서 문제가 발생할 경우만 내장 스플리터로 변경해 사용하고, 평소에는 Haali Splitter를 사용하고자 하는 분만 적용하시기 바랍니다. 제 생각에는 내장스플리터가 그렇게 까지 안좋지는 않기 때문에 AVI파일만큼은 그냥 내장 스플리터를 사용하시는 게 어떨까 생각됩니다.


Admin
Admin

게시물 갯수 : 184
Join date : 2011-12-11

https://hyora.forumkorean.com

위로 Go down

위로

- Similar topics

 
Permissions in this forum:
답글을 올릴 수 없습니다