Language:EN / NE / AE / DE / IT

U5PVR TVHeadend 사용하기

KOREAN/리눅스 매뉴얼 2018. 9. 1. 07:54

최종 수정 : 2018-06-24


안녕하세요. 이번에는 TVHeadend 사용법에 대해서 알아보도록 하겠습니다.


먼저 U5PVR 에는 원하는 기능을 모두 지원하기 위해서 TVHeadend 를 2개 내장하고 있습니다.


1. TVH

http://U5PVR아이피:19981/


2. TVH

http://U5PVR아이피:9981/

아이디 : admin

비밀번호 : androidoverlinux


1번은 내장 TVHeadend 이고 안전성과 기능성을 구비하기 위해서 커스텀 된 3.6버전을 사용하고 있습니다. 이 버전은 이온TV 에 최적화 되어 있기 때문에 기능이 제한적입니다. 


이 문제를 해결하기 위해서 리눅스 펌웨어에 TVHeadend 4.1 버전을 내장하고 있습니다. 4.1 버전에서 지원하는 내용은 아래와 같습니다.


1. HD 홈런 연동 지원

2. EPG (internal & external 지원)

3. 파이프 FFMPEG 지원


민감한 내용이기 때문에 상세한 가이드는 작성하지 않도록 하겠습니다.


이 글에서 주로 다루는 내용은 TVH 1 서버의 방송을 TVH 2 에 붙이는 것입니다.


그럼 시작합니다.


1. 접근 하기 및 superuser 계정 수정하기


아래 위치의 파일을 수정하여 계정을 바꿉니다.


root@u5pvr-debian:~# nano /home/hts/.hts/tvheadend/superuser


{

"username": "admin",    <-- 아이디 입력

"password": "androidoverlinux"    <-- 비밀번호 입력

}



그 후 tvheadend 를 재시작합니다.


root@u5pvr-debian:~# service tvheadend restart

[ ok ] Restarting Tvheadend: tvheadend.

root@u5pvr-debian:~#


그 후 변경된 아이디와 비밀번호가 바뀌었음을 알 수 있습니다.


게시글 초기의 정보대로 접근을 해 보면 아래와 같습니다.





2. TVH #1 -> TVH #2 연동하기


먼저 아래의 내용으로 스크립트 하나를 만듭니다.


root@u5pvr-debian:~# nano /usr/bin/pipe


#!/bin/bash

ffmpeg -loglevel fatal -i $1 -vcodec copy -acodec copy -fflags nobuffer -f mpegts -tune zerolatency pipe:1


다음으로 pipe 파일에 실행 권한을 주기 위해서 아래의 명령을 입력합니다.


root@u5pvr-debian:~# chmod a+x /usr/bin/pipe


이온TV 앱을 실행하여 채널 스캔을 돌립니다. (스캔이 이미 되어 있다면 하실 필요가 없습니다.)


ATV 런처에서 라이브 TV 앱을 실행합니다.



리모컨의 메뉴 버튼을 눌러서 기본설정으로 진입합니다.



맞게 설정하시고 리모컨의 빨간색 버튼으로 스캔을 합니다.



스캔이 끝나고 채널이 아래와 같이 생성되었습니다.



다음으로 TVH #1 웹 UI 로 접근하여 채널 탭에 채널이 정상적으로 생겼는지 확인합니다.


아래와 같이 정상적으로 공중파 6개의 채널이 보임을 알 수 있습니다.



플레이 버튼을 누르면 아래의 아래의 창이 뜨는데 채널을 선택해 주시고 Direct URL 을 복사합니다.


저같은 경우 각 채널마다 주소는 아래와 같이 됩니다.

(스캔한 경우마다 다릅니다. 직접 확인하셔야 합니다.)


http://192.168.0.122:19981/stream/channelid/1    MBC

http://192.168.0.122:19981/stream/channelid/2    KBS1

http://192.168.0.122:19981/stream/channelid/3    SBS

http://192.168.0.122:19981/stream/channelid/4    KBS2

http://192.168.0.122:19981/stream/channelid/5    EBS1

http://192.168.0.122:19981/stream/channelid/6    EBS2


위를 보시면 채널 아이디가 채널 갯수만큼 생성됨을 알 수 있으며 편하게는 아래처럼 플레이 버튼에 마우스를 가져다 대면 채널 아이디가 무엇인지 파악이 편하게 가능합니다.



이렇게 설정이 되어 있는 상태에서 원활이 재생을 하려면 먹스를 지정해 줘야 합니다.


그리고 TVH #1 과 TVH #2 는 동일한 장비에 있음으로 127.0.0.1 로 주소를 수정해 줍니다.


채널 수가 작으면 문제가 없으나 많으면 notepadd++ 같은 프로그램을 이용하여 일괄 수정하시면 편리합니다.


http://127.0.0.1:19981/stream/channelid/1&mux=pass    MBC

http://127.0.0.1:19981/stream/channelid/2&mux=pass    KBS1

http://127.0.0.1:19981/stream/channelid/3&mux=pass    SBS

http://127.0.0.1:19981/stream/channelid/4&mux=pass    KBS2

http://127.0.0.1:19981/stream/channelid/5&mux=pass    EBS1

http://127.0.0.1:19981/stream/channelid/6&mux=pass    EBS2


다음으로 TVH #2 에 IPTV 네트워크를 생성하여 채널을 등록해 보겠습니다.


Configuration -> DVB inputs -> Networks 로 이동하여 IPTV 네트워크를 하나 생성합니다.


이온 TV 와 충돌이 생기지 않기 위해서는 Maximum # input streams 를 1로 설정하셔야 합니다. 

U5PVR 은 튜너가 2개 있기 때문에 최대 2로 설정이 가능합니다.



다음 Muxes 로 이동하여 Add 를 하여 네트워크를 선택하시고 채널을 추가해 줍니다.



주소는 아래꼴로 넣으시면 됩니다.


pipe://pipe http://127.0.0.1:19981/stream/channelid/5&mux=pass


그 다음 먹스 이름과 서비스 이름을 넣습니다.



아래처럼 먹스를 등록하였고 스캔 결과도 양호합니다.



스캔이 정상적으로 되었다면 서비스탭에도 자동적으로 등록이 됩니다.



서비스를 모두 선택하여 Map selected services 를 눌러 채널에 맵핑합니다.




채널에 아래처럼 맵핑이 되었습니다.



매핑된 채널을 재생해 보도록 하겠습니다.


아래처럼 팟플레이어에 연동하여 재생을 해 보았는데 재생이 잘 됩니다.





3. EPG 연동하기


EPG 는 튜너에서 들어오는 데이터로는 받을 수가 없습니다. 알려진 EPG Grabber 를 통해서 설정해 주시길 바랍니다.


저는 아래의 EPG Grabber 를 사용하였고 상세한 방법은 기술하지 않습니다.


https://github.com/wonipapa/epg2xml


# internal grabber

/usr/bin/tv_grab_XXXX 


# external grabber

/home/tvheadend/epggrab/xmltv.sock


그 다음 기본적으로 EPG 그래버가 활성화 되어 있지 않기 때문에 아래처럼 활성화를 해 주셔야합니다.



정상적으로 작업을 하였다면 아래와 같이 EPG 목록이 뜹니다.



채널과 EPG 를 매핑해 줍니다.



그 후 정상적으로 EPG 가 올라옵니다.



이에 따라 정기적으로 EPG 를 업데이트 하려고 한다면 아래처럼 cron 을 사용해 주시면 됩니다.


저는 nano 를 사용하기 때문에 nano 를 선택하였고 4시 정각에 EPG 를 업데이트 한다면 아래처럼 입력해 주시면 됩니다.


root@u5pvr-debian:~# crontab -e

no crontab for root - using an empty one


/usr/bin/select-editor: 1: /usr/bin/select-editor: gett                                                         ext: not found

 'select-editor'.

/usr/bin/select-editor: 1: /usr/bin/select-editor: gett                                                         ext: not found

  1. /bin/nano        <----

  2. /usr/bin/vim.tiny


/usr/bin/select-editor: 32: /usr/bin/select-editor: get                                                         text: not found

 1-2 [1]: 1



0 4 * * * /usr/bin/python /home/epg/epg2xml.py -i SK -s /home/tvheadend/epggrab/xmltv.sock



4. 녹화 디렉터리 지정하기


Configuration -> Recording 으로 이동합니다.


이동하여 아래처럼 설정을 진행합니다. 스트림 프로파일을 지정합니다.



다음으로 녹화 위치를 지정하고 퍼미션을 0777로 줍니다. 언어셋의 경우 한글 깨짐을 방지하기 위해서 UTF 8 로 설정을 합니다.



서브 디렉터리도 0777 로 설정을 합니다.



이외 기타 설정은 원하시는 대로 설정하시며 됩니다.


테스트로 녹화를 한번 해 보도록 하겠습니다.


정상적으로 녹화가 잘 됩니다.




5. 다른 기기와 연동하기


연동 부분은 KODI / 라이브 채널 모두 정상적으로 잘 됩니다.


이번에는 안드로이드의 TVHClient 와 연동해 보도록 하겠습니다.


포트포워딩의 경우 9981 과 9982 TCP 포트를 열어 주시면 됩니다. ㅎㅎ


https://play.google.com/store/apps/details?id=org.tvheadend.tvhclient&hl=ko


아래처럼 연결을 만듭니다.



정상적으로 연결이 되어 아래의 정보가 뜹니다.


채널 리스트를 본 화면입니다. 설정해준 EPG 가 정상적으로 뜹니다.



재생테스트를 해 보았습니다. 잘 되네요 ㅎㅎ



채널별 EPG 화면 입니다.



녹화를 한번 해 보았습니다.





녹화물을 재생해 보았습니다.



잘 재생이 됩니다.




이렇게 TVHeadend 사용 방법에 대해서 글을 마칩니다.


감사합니다.