2015년 8월 15일 토요일

[KODI] 외부 플레이어 사용법

KODI에서 영상을 볼 때 외부 플레이어를 지정해서 볼 수 있습니다. 사양이 딸리는 안드로이드에서 외부플레이어를 이용하면 KODI의 플레이어보다 호환성 좋은 HW디코더를 쓸 수 있으며, 디바이스의 오버헤드를 줄여 줌으로써 미디어 환경의 질적향상을 보여 주게 됩니다.

자막있는 영상들의 멈칫거리는 현상이 해결 되고, tvheadend로 녹화 된 영상을 볼 때 심한 가로줄 현상도 해결됩니다. mysql로 라이브러리 관리할 때 이어보기가 안되는 버그가 있는데, 이어보기를 지원하는 외부 플레이어를 쓸 경우 이어보기도 가능해집니다.

외부 플레이어를 사용하는 방법은 "KODI WIKI"에 잘 설명 되어 있습니다.
안드로이드에서는 아래 내용을 userdata폴더에 playercorefactory.xml로 저장해서 넣으면 KODI에서 MX Player가 실행 됩니다.

<playercorefactory>
        <players>
                <player name="MXPlayerFree" type="ExternalPlayer" audio="false" video="true">
                        <filename>com.mxtech.videoplayer.ad</filename>
                        <hidexbmc>true</hidexbmc>
                        <playcountminimumtime>120</playcountminimumtime>
                </player>

                <player name="MXPlayerPro" type="ExternalPlayer" audio="false" video="true">
                        <filename>com.mxtech.videoplayer.pro</filename>
                        <hidexbmc>true</hidexbmc>
                        <playcountminimumtime>120</playcountminimumtime>
                </player>

                <player name="TPlayer" type="ExternalPlayer" audio="false" video="true">
                        <filename>com.tiantian.android.player.app</filename>
                        <hidexbmc>true</hidexbmc>
                        <playcountminimumtime>120</playcountminimumtime>
                </player>

                <player name="DicePlayerFree" type="ExternalPlayer" audio="false" video="true">
                        <filename>com.inisoft.mediaplayer.trial</filename>
                        <hidexbmc>true</hidexbmc>
                        <playcountminimumtime>120</playcountminimumtime>
                </player>

                <player name="VLCPlayer" type="ExternalPlayer" audio="false" video="true">
                        <filename>com.vlcforandroid.vlcdirectprofree</filename>
                        <hidexbmc>true</hidexbmc>
                        <playcountminimumtime>120</playcountminimumtime>
                </player>

                <player name="DicePlayerPaid" type="ExternalPlayer" audio="false" video="true">
                        <filename>com.inisoft.mediaplayer.a</filename>
                        <hidexbmc>true</hidexbmc>
                        <playcountminimumtime>120</playcountminimumtime>
                </player>

                <player name="RockPlayerLite" type="ExternalPlayer" audio="false" video="true">
                        <filename>com.redirectin.rockplayer.android.unified.lite</filename>
                        <hidexbmc>true</hidexbmc>
                        <playcountminimumtime>120</playcountminimumtime>
                </player>

                <player name="RockPlayer" type="ExternalPlayer" audio="false" video="true">
                        <filename>com.rockplayer</filename>
                        <hidexbmc>true</hidexbmc>
                        <playcountminimumtime>120</playcountminimumtime>
                </player>

                <player name="BSPlayerFree" type="ExternalPlayer" audio="false" video="true">
                        <filename>com.bsplayer.bspandroid.free</filename>
                        <hidexbmc>true</hidexbmc>
                        <playcountminimumtime>120</playcountminimumtime>
                </player>

                <player name="MoboplayerFree" type="ExternalPlayer" audio="false" video="true">
                        <filename>com.clov4r.android.nilz</filename>
                        <hidexbmc>true</hidexbmc>
                        <playcountminimumtime>120</playcountminimumtime>
                </player>

                <player name="mVideoplayerFree" type="ExternalPlayer" audio="false" video="true">
                        <filename>afzkl.development.mVideoPlayer</filename>
                        <hidexbmc>true</hidexbmc>
                        <playcountminimumtime>120</playcountminimumtime>
                </player>               

                <player name="Vplayer" type="ExternalPlayer" audio="false" video="true">
                        <filename>me.abitno.vplayer.t</filename>
                        <hidexbmc>true</hidexbmc>
                        <playcountminimumtime>120</playcountminimumtime>
                </player>

                <player name="WondersharePlayer" type="ExternalPlayer" audio="false" video="true">
                        <filename>com.wondershare.player</filename>
                        <hidexbmc>true</hidexbmc>
                        <playcountminimumtime>120</playcountminimumtime>
                </player>

                <player name="ArchosVideo" type="ExternalPlayer" audio="false" video="true">
                        <filename>com.archos.mediacenter.video</filename>
                        <hidexbmc>true</hidexbmc>
                        <playcountminimumtime>120</playcountminimumtime>
                </player>

                <player name="SopCast" type="ExternalPlayer" audio="false" video="true">
                        <filename>org.sopcast.android</filename>
                        <hidexbmc>true</hidexbmc>
                        <playcountminimumtime>120</playcountminimumtime>
                </player>

                <player name="DaroonPlayer" type="ExternalPlayer" audio="false" video="true">
                        <filename>com.daroonplayer.dsplayer</filename>
                        <hidexbmc>true</hidexbmc>
                        <playcountminimumtime>120</playcountminimumtime>
                </player>
        </players>
        <rules action="prepend">
<!---
**********                   **********
********** EDIT THIS SECTION **********
**********                   **********
-->
                <rule protocols="smb" player="MXPlayerFree" />
                <rule dvdimage="true" player="MXPlayerFree"/>
                <rule protocols="rtmp" player="MXPlayerFree"/>
                <rule protocols="rtsp" player="MXPlayerFree" />
                <rule protocols="sop" player="MXPlayerFree" />
                <rule internetstream="true" player="MXPlayerFree" />
                <rule video="true" player="MXPlayerFree"/> <!-- Default for anything else not listed -->
        </rules>
</playercorefactory>

MX Player외에 다른 플레이어를 쓰고 싶을 땐 105~111번까지의 player에 원하는 플레이어 명을 넣으시면 되겠습니다.

문제는 SAMBA, FTP, WebDAV 등 네트워크로 연결된 저장소의 영상을 볼 때 입니다.
로컬파일에 있는 영상의 경우 위 방법으로 잘 나오지만, 네트워크에 있는 영상을 볼 때는 해당 프로토콜을 지원하는 플레이어를 써야만 하는데, 대부분의 플레이어가 이를 지원하지 않는 듯 합니다.

안드로이드의 대표적인 플레이어 중 MX player, DICE, VLC 도 네트워크 영상은 플레이할 수가 없었는데, "XBMC/KODI Wrapper"라는 어플을 이용하니 가능해 지더군요. 기능은 단순히 http 프로토콜로 연결 되도록 파싱하는 겁니다만, 가뭄에 단 비 같은 어플입니다.

다만, 한글같은 2-byte 언어가 파일명에 들어가면 문제가 있었는데.. 제작자에게 요청하니 바로 수정을 해 주었습니다. 또한 제작자에게 webdav 지원을 요청하니 바로 업데이트 해 주었네요. 3.8.2 버전부터는 webdav까지 지원이 됩니다.

https://play.google.com/store/apps/details?id=hu.xmister.xbmcwrapper


사용법은 간단한데, 다운받고 실행해서 install playercorefactory.xml 터치 해서 설치 하고
하단 samba 탭으로 이동 후 samba Player에 원하는 플레이어 선택합니다.
하단에 samba user아 samba password 입력하고 other페이지로 이동합니다.
중간에 handle webDAV 옵션을 키시면 webDAV까지 지원 됩니다. 다시 메인으로 돌아와 install playercorefactory.xml 한번 더 터치 해 주고 종료 합니다.
이제 KODI에서 영상을 플레이 해 보시면 지정하신 플레이어가 실행 되는 것을 볼 수 있게 됩니다.


댓글 1개:

  1. 안녕하세요? freeSpirits님께서 가이드해주신대로 KODI 외부플레이어(MX)를 설정했습니다. 동영상 파일 재생시 MX player로 잘 플레이되는데, KODI TVHclient로 설정한 TV 채널은 플레이가 안됩니다. 혹시 원인을 알 수 있을까요? 채널을 눌러도 동작이 안됩니다 (아마 연결이 안되는듯..) 혹시 원인이 추정되시면 jskan@naver.com 로 회신부탁드립니다. 감사합니다.

    답글삭제