tvheadend EPG 등록 및 설정 - 우분투 NAS ④

구형 노트북에 우분투 리눅스를 이용한 TV 스트리밍 서버 구축 - tvheadend EPG 등록 및 설정

지난 시간에 우분투에 tvheadend를 설치하고 스트리밍을 위한 m3u를 이용해 TV채널 등록을 해보았습니다.



이번 시간에는 tvheadend에서 EPG정보를 설정하기 위해 필요한 모듈 설치와 tvheadend에서 EPG정보 가져오고 내부(internal) epg grabber을 이용한 업데이트, 자동 업데이트 주기 설정 등에 대해 알아보겠습니다.

이 부분은 어느 정도 리눅스 시스템에 대한 이해가 필요하지만 필자의 시스템과 비슷한 환경이라면 그냥 따라 하기만 하면 성공(?) 할 수 있도록 간략히 절차만 설명하겠습니다.

TV EPG grabber에 필요한 python(파이썬) 설정 및 모듈 설치하기

먼저 python 셋업 툴을 설치합니다.

$sudo apt-get install python-setuptools

python으로 컴파일 시 필요한 pip 및 여러 라이브러리를 설치합니다.

$sudo apt-get install python-pip python-dev build-essential
$sudo pip install --upgrade pip
$sudo pip install --upgrade virtualenv

epg2xml.py 컴파일 시 필요한 모듈을 설치 합니다.

$sudo pip install beautifulsoup
$sudo pip install beautifulsoup4
$sudo pip install lxml
$sudo pip install requests

epg2xml-master 다운로드

다음의 epg2xml-master 파일을 다운로드 받습니다.

epg2xml-master.zip

본인의 /home/계정명/에 압축을 풉니다. 우분투에서는 윈도우 탐색기처럼 사용 가능한 파일 매니저가 있으니 폴더 생성, 복사, 압출 풀기 등은 쉽게 할 수 있습니다.

압축된 파일을 /home/mypc/epg2xml-master 라는 폴더에 풀었다고 가정하고 작업하겠습니다.

$cd /home/mypc/epg2xml-master

실행 가능한 권한을 줍니다.

$chmod 775 epg2xml.py
$chmod 775 epg2xml.php

epg2xml.json파일과 tv_grab_file파일 수정하기

epg2xml.json파일을 수정합니다.

$nano epg2xml.json

'MyISP'에는 자신이 사용하는 iptv통신사를 넣어 줍니다. 'MyChannels'에 EPG 정보를 표시할 모든 채널(tgv ID, epg ID)을 입력합니다. 여기에 포함되지 않은 채널은 TV 관련 플레이어(코디 등)에서 EPG정보가 뜨지 않습니다. 'output'은 화면 출력, 즉 d를 넣습니다.

나머지 부분은 그냥 두셔도 되나 소켓을 사용한 외부 XMLTV 사용과 웹서버를 운영 할 것이라면 최종 XML파일이 생성될 경로를 잡아줍니다. 해당 사항이 없으면 그냥 디폴트로 놔둡니다. nano 에디터에서 저장은 'Ctrl + o', 엔터, 'Ctrl + x'로 하면 됩니다.

tv_grab_file파일을 수정합니다.

$nano tv_grab_file

위 흰 블럭 친 부분에 자신의 /home/본인계정/epg2xml-master와 바로 아래 라인에 위와 같이 /usr/bin/python epg2xml.py 즉, 파이썬 경로와 실행할 epg2xml.py소스 파일을 지정해 줍니다.

tv_grab_file을 실행 폴더에 복사하고 권한주기

tv_grab_file을 /usr/bin 폴더로 복사합니다.

$sudo cp tv_grab_file /usr/bin

tv_grab_file에 실행 가능한 권한을 줍니다.

$sudo chmod 755 /usr/bin/tv_grab_file

tvheadend 관리자 모드로 설정하기

tvheadend 관리자 계정으로 로그인 합니다. (예, https://localhost:9981)

/usr/bin/폴더에 tv_grab_file 파일이 제대로 복사되었고 실행 권한을 줬다면 Internal: XMLTV: My custom grabber가 보입니다. 혹시 보이지 않는다면 tvheadend 재 시작해 줍니다.

$sudo service tvheadend restart

위의 그림과 같이 Enabled에 체크한 후 Save를 눌러줍니다.

위와 똑같이 설정할 필요는 없으나 한가한 시간대에 Grabber가 작동하게 설정해 놓았으니 같은 설정을 쓰셔도 됩니다. Internal Grabber는 매일 오전 4시와 12시에 업데이트를 합니다. 아래의 경우는 새벽 2시 4분에 업데이트합니다.

'Bouquets'탭에 자신이 등록한 채널의 네트워크 이름을 확인하고 Enabled에 체크해 줍니다. 저는 네트워크가 두개라 둘다 체크해 주었습니다. 보통은 네트워크 하나를 등록했을 겁니다.

tv_grab_file(internal XTML) 실행하기

다시 콘솔 터미널 돌아와 아래의 작업을 진행합니다.

$sudo /usr/bin/tv_grab_file

위처럼 epg정보가 쭉 내려질 겁니다. 제법 시간이 걸리니 느긋하게 기다립니다.

tvheadend 관리자 모드에서 EPG 정보 확인하기

다시 tvheadend 관리자 모드로 돌아와서 나머지 사항을 확인합니다.

'EPG Grabber Channels'탭에 모듈 항목에 위와 같이 XMLTV: My custom grabber가 활성화 되었는지 확인합니다.

'Channels'탭에도 XMLTV: My custom grabber가 맵핑(mapping) 되는지 확인합니다.

마지막으로 'Electronic Program Guide'탭에서 epg정보가 최종 올라왔는지 확인합니다. 보통 tv_grab_file실행 후 빠르게는 5분이나 10분 후면 위의 정보가 확인됩니다. 많이 늦으면 30분 정도 걸리니 위의 작업 등을 정확하게 진행했다면 여유 있게 기다립니다.

최종 확인은 코디(kodi)에서 등록한 계정으로 접속해 제대로 TV채널과 EPG정보가 올라 올라오는지, 정확하게 매칭되는지 확인합니다.

이상입니다. 다음 포스트는 우분투에 웹 서버(Apache, 아파치)와 PHP를 설치하고 외부에서 접근 가능한 EGP url(주소)를 생성해 보겠습니다.


※   저작권 관련 안내
본 블로그의 모든 글과 사진 및 영상은저작권 보호를 받는 게시물 입니다. 본 블로그의 내용을 링크 및 인용 할 때에는 꼭 출처를 밝혀주세요. 게시자 허락없는 무단도용은 당신을 불행하게 만들 수도 있습니다.

탑이슈

IT정보, 제품 리뷰, 소프트웨어

    이미지 맵

    이전 글

    다음 글

    리눅스&우분투 다른 글

    댓글 25

      • tv_grab_file 파일을 usr/bin 파일로 복사해서 옮길려고하는데 winscp에서 옮기거나 폴더에서 복사해서 직접 옮겨도
        파일을 여는중 오류:허가오류 이렇게 복사가안됩니다 ㅜㅜ.. 어렵게 이까지 왔는데...터미널에서 명령어로 해도 마찬가지구요
        뭐가 잘못된걸까요?

      • root 계정 설정은 하셨나요? 터미널에서
        sudo cp tv_grab_file /usr/bin
        sudo가 붙는 명령을 주면 암호입력하고 나와야 정상이고 암호임력후 복사가됩니다. root 계정설정은 연재2에 설명돼 있어요. https://topis.me/72
        이 문제가 아니라면 현재 본인의 경로가 epg2xml-master로 이동해 있는지 살펴보세요.
        cd /home/자신의계정/epg2xml-master

      • sudo/usr/bin/tv_grab_file
        bash: sudo/usr/bin/tv_grab_file: 그런 파일이나 디렉터리가 없습니다

      • 뛰어 쓰기 공백 등 잘확인하세요. 그리고
        sudo/usr/bin/tv_grab_file 은 공백도 없고 cp 명령도 들어가 있지 않아요. 분명히
        sudo cp tv_grab_file /usr/bin 이라고 위에 설명 드렸습니다.

      • tv_grab_file(internal XTML) 실행하기

        다시 콘솔 터미널 돌아와 아래의 작업을 진행합니다.
        $sudo /usr/bin/tv_grab_file
        이단계까지 왔습니다. 이단계에서
        $sudo/usr/bin/tv_grab_file
        bash: sudo/usr/bin/tv_grab_file: 그런 파일이나 디렉터리가 없습니다
        이렇게 나옵니다....ㅜ


      • 이런씩의 질문은 곤란합니다. 난독증 있으세요? cp 명령이 없잖아요. 제대로 확인 안하고 계속 이렇게 질문 주시면 이제부턴 답변 드리기 어렵겠네요.

      • tv_grab_file(internal XTML) 실행하기

        다시 콘솔 터미널 돌아와 아래의 작업을 진행합니다.
        $sudo /usr/bin/tv_grab_file

        이부분이 grab_file은 bin쪽으로 옮긴상황이구요
        tvh에서 위그림나온대로 설정하고
        epg 불러오기 단계에 설명하신 명령어가
        $sudo /usr/bin/tv_grab_file
        이걸로나오븐 부분을 이야기한겁니다. ㅜ


      • 첨음엔 복사가 안된다고 질문 줬기 때문에 위에 답을 드린거고...
        sudo /usr/bin/tv_grab_file 했는데
        'bash: sudo/usr/bin/tv_grab_file: 그런 파일이나 디렉터리가 없습니다'
        말 그대로 tv_grab_file 파일이 /usr/bin/ 폴더에 없기 때문입니다. 제대로 복사 됐는지 확인하하고 실행 권한도 줘야합니다.
        ls -l /usr/bin/tv_grab_file
        위 명령으로 파일을 확인해 보세요.

      • pi@raspberrypi:~ $ ls -l /usr/bin/tv_grab_file
        -rwxr-xr-x 1 root root 281 10월 26 20:06 /usr/bin/tv_grab_file
        안에 파일이 있습니다...

        그런데 pi@raspberrypi:~ $ sudo /usr/bin/tv_grab_file
        Error : lxml 모듈이 설치되지 않았습니다.
        이렇게 나옵니다.

        $sudo pip install lxml 요렇게 명령어를 치면 이렇게 끝네 애러가 납니다
        Command "/usr/bin/python -u -c "import setuptools, tokenize;__file__='/tmp/pip-install-_vae1C/lxml/setup.py';f=getattr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record /tmp/pip-record-S5dXuy/install-record.txt --single-version-externally-managed --compile" failed with error code 1 in /tmp/pip-install-_vae1C/lxml/

        아 귀찮게 해드려 죄송합니다. ㅜㅜ....



      • 나중에 pc접속하면 답드릴께요. 그러고 보니 라즈베리 환경이었군요. 라즈는 데비안 계열 리눅스 입니다. 첨부터 말씀하시지...ㅠㅠ 웬지 수상했어요. 우분투라면 그냥 복사 붙여넣기만 하면 진행되게 포스팅 했거던요.

      • sudo apt-get install libxml2-dev libxslt-dev python-dev
        sudo apt-get install python3-lxml python-lxml
        한 다음 진행해보세요, 님 덕분에 pc켰네요. 그리고 질문 자주 하실 거면 티스토리 계정 하나 만드세요. 그래야 바로 확인되거던요.

      • 다음 새 패키지를 설치할 것입니다:
        python-bs4 python-html5lib python-lxml python-webencodings python3-bs4
        python3-html5lib python3-lxml python3-webencodings
        0개 업그레이드, 8개 새로 설치, 0개 제거 및 0개 업그레이드 안 함.
        1,954 k바이트 아카이브를 받아야 합니다.
        이 작업 후 8,187 k바이트의 디스크 공간을 더 사용하게 됩니다.
        계속 하시겠습니까? [Y/n] y
        중단.
        y를 눌러도 중단으로 안돼네요 아무래도 64기가 sd라서 용량이 부족해서 설치가 안돼는거같습니다^^
        신경써주셔서 감사하구요 용량을 큰걸로 사용해서 한번다시 도전해봐야겠습니다...
        시놀로지 사기엔 부담스러워서 라즈베리파이 구매했는데 재미는 있는거같아요
        제일처음 도전하는게tvh epg 녹화라서요... 감사할따름입니다^^

      • 저도 리눅스를 다시 공부하고 있는 입장이라.. 용량문제 라면 이미 설치된 파일일 경우 다운로드 받은(.zip 등) 삭제해 보세요. 또 설치하다만 찌꺼기 파일들도 처리할 수 있는데...
        sudo dpkg -l | grep ^rc | awk '{ print $2; }' | xargs sudo dpkg --purge
        sudo apt-get autoremove
        sudo apt-get clean
        등의 명령으로 용량을 확보 할 수도 있어요.
        그리고 라즈베리환경보다는 구형이라도 넷북이나 노트북 pc들이 훨씬 성능이 좋습니다. 혹시 구매 계획이 있으면 중고 노트북이 오히려 낳을수 있어요.

      • 여기에서 더이상 진도가 안나갑니다 ㅜ ㅜ 죄송합니다 귀찮게 해드려서...

        pi@raspberrypi:~ $ sudo apt-get install python3-lxml python-lxml
        패키지 목록을 읽는 중입니다... 완료
        의존성 트리를 만드는 중입니다
        상태 정보를 읽는 중입니다... 완료
        The following additional packages will be installed:
        python-bs4 python-html5lib python-webencodings python3-bs4 python3-html5lib python3-webencodings
        제안하는 패키지:
        python-genshi python-lxml-dbg python-lxml-doc python3-genshi python3-lxml-dbg
        다음 새 패키지를 설치할 것입니다:
        python-bs4 python-html5lib python-lxml python-webencodings python3-bs4 python3-html5lib python3-lxml python3-webencodings
        0개 업그레이드, 8개 새로 설치, 0개 제거 및 0개 업그레이드 안 함.
        1,954 k바이트 아카이브를 받아야 합니다.
        이 작업 후 8,187 k바이트의 디스크 공간을 더 사용하게 됩니다.
        계속 하시겠습니까? [Y/n] y
        중단.
        이렇게 나옵니다.. 분명 확인해보니 여유공간은 충분하거든요......

      • 특별히 중단될 이유가 없습니다. 용량 문제 인것 같습니다. 물론 sd카드에 용량은 여유가 있을 줄 압니다. 라이즈베리 파이 환경에서 파티션 설정을 어떻게 했는지는 모르겠으나 시스템 마운트(/) 파티션이 처음 설정한 값이 적용되어 물리적인 공간(sd 카드)은 있지만 결과 적으로 실제 사용한 공간은 없는걸로 판단됩니다. 시스템 마운트의 용량을 확보해 주셔야 합니다. 제가 도움 드릴수 있는 부분은 여기 까지입니다. 더 많은 도움을 받고자 한다면 https://topis.me/89 참고해서 후원 하시기 바랍니다.

      • 혹시 제가 안되는 부분이 epg부분부터 안됩니다. 라즈베리구요... 혹시 후원1만원할테니 리모트로 해주시면 안돼실까요?
        아무리 해볼려고 검색해봐도 .. 시간지정으로 해봤는데 그 거는 잘됩니다만.. 효율이 너무 떨어져서...

      • 오늘은 너무 늦었고 내일 봐 드릴께요. 그리고 검색 하셔서 텔넷 이나 vnc(원격 접속, vnc는 제 블로그에도 내용 있음)은 열어 놔야 제가 봐 드릴 수 있습니다.

      • 아죄송 해요... 나스로 녹화 잘됐는데 재부팅해도 이번에는 재부팅했더니 나스로 안돼고 라즈베리sd카드로
        녹화돼네요...아이피나 모든것은 설정그 대로거든요...
        어떻게 명령어를 쳐야 다시 나스쪽으로 녹화가됄까요?

      • ls -la /media/pvr 해보세요. 내용이 나스에 있는 파일들이 아니라면 마운트가 안됬거나 풀린것 같네요. 뭘 건드리신 건지.. ㅋㅋ 재부팅도 해보시고 오늘은 늦었으니 안되면 내일 문자 주세요,

    *

    *

    해외에서 한국 실시간 방송(TV)를 보기 위해서 이 페이지를 방문했다면 바로아래 링크를 이용하세요. 간단한 설정으로 고화질 TV서비스를 받을 수 있습니다.

    코디(kodi)로 해외→한국(TV) 실시간 방송 보기

    새롭게 시작하는 코디(kodi) 실시간 TV 이용 안내

    IPTV 코디(kodi) 한국 실시간 방송 테스트 종료와 함께 국내 이용자는 더 이상 코디 tvheadend PVR, HTSP 클라이언트를 이용할 수 없게 됩니다.

    국내 이용자를 위한 고화질 실시간 방송이 새로운 방식으로 서비스됩니다. 이 방식은 코디(kodi)의 애드온인'PVR IPTV Simple Client'설정으로 사용 가능하며 탑이슈에서 제공하는 공개(외부) EPG url 등록을 통해 EPG정보까지 완벽 구현됩니다. 자세한 정보는 새롭게 시작하는 코디(kodi) 실시간TV 이용 안내와 아래 동영상을 참고하십시오.

    위의 내용과 별개로 기존 자료실(이 페이지)은 계속 운영됩니다.


    코디(kodi) m3u등록 및 외부EPG설정 / 탑이슈제공 영상

    새롭게 시작하는 코디(kodi) 실시간TV 이용 안내

    한국 IPTV - kodi(코디), 팟플레이어, tvheadend(티비헤드엔드) 자료실

    본 자료실에는 KT 올레(olleh)TV, LG 유플러스(U+)TV, SK B(broadband)TV에서 시청 가능한 m3u dpl 파일 등이 제공 됩니다.

    본 자료실에 접근 가능한 권한을 얻기 위해서는 PC에서 TV보기 포스트 본문의 하단 '마치면서...' 부분을 살펴 주십시오.


    PC로 TV보기! 무료시청 (실시간, HD, UHD, 케이블, 유료채널) / 탑이슈제공 영상


    TV셋톱박스(KT 올레TV, LG 유플러스TV, SK BTV)에서 유료 채널 무료로 보기 / 탑이슈제공 영상

    PC로 TV보기! 무료 (HD, 케이블, 유료채널, 해외→한국)

    2018.10.22 - KT 방송 신호가 암호화 방식으로 바뀌어 전송되어 일부 종편을 포함한 채널이 시청 불가 하다고 합니다. 여기 공용 채널(153ch)도 영향을 받아 몇몇 채널이 나오지 않고 있습니다. 지속 가능한 채널 확보를 위해 노력해보겠습니다.

    2018.10.04 - 해외 거주 한국 동포 및 거주자를 위한 한국 실시간 방송 테스트 중입니다. 31일 종료 예정

    2018.09.01 - 각 통신사 구분없이 해외에서 한국 실시간 HD방송을 바로 볼 수 있는 153개 의 채널이 등록 되었습니다. 물론 국내 이용자도 시청 할 수 있습니다.

    2018.09.01 - 세계 주요 방송 128채널이 등록되었습니다.

    해외에서 한국 실시간 방송(TV)를 보기 위해서 이 페이지를 방문했다면 바로아래 링크를 이용하세요. 간단한 설정으로 고화질 TV서비스를 받을 수 있습니다.

    코디(kodi)로 해외→한국(TV) 실시간 방송 보기

    새롭게 시작하는 코디(kodi) 실시간 TV 이용 안내

    국내 이용자를 위한 고화질 실시간 방송 구현에 대해 다 방면으로 생각해본 결과 tvheadend PVR, HTSP 방식은 개인 네트워크로는 많은 수의 접속자 트랙픽을 감당 할 수 없고 안정적인 서비스를 지속적으로 유지 할 수 없다는 결론입니다. 따라서 각 통신사에서 직접 송출하는 신호를 이용한 m3u를 코디(kodi)의 애드온인 'PVR IPTV Simple Client'에 등록해서 사용하는 방식을 택했습니다. 이 방식은 각 통신사의 고품질 네트워크(회선)을 사용함으로 UHD포함 고화질.고음질의 TV시청이 가능해 지며 각 통신사의 판매되는 IPTV 상품과 구현되는 원리도 똑같습니다. 즉, 본인의 인터넷 환경만 좋다면 버퍼링 없는 영상으로 TV시청이 가능합니다.

    외부 접속 및 모바일 환경에서 LTE 데이터 등 무선접속 시 TV시청이 어려운 점을 감안, 외부 접속시 사용할 수 있는 공용(http방식, TCP 프로토콜) m3u가 따로 제공됩니다. 이 m3u 경우 하루 2, 3개 정도는 항시 연결가능한 상태로 유지될 수 있도록 제가 꾸준히 업데이트 합니다. 이 파일은 통산사 구분을 하지 않으며 유/무선 인터넷 연결가능한 상태이면 원할한 TV시청이 가능합니다.

    아울러 탑이슈에서 공개(외부) EPG url 등록을 통해 EPG정보까지 완벽 구현됩니다. 이를 위해 본 자료실의 제공되고 있는 통신 3사 m3u의 대대적인 작업이 있었으며 코디(kodi)등의 플레이어를 통해 각 통신사 IPTV 상품을 이용하듯 사용 가능합니다.

    EPG기능은 코디(kodi)는 물론이고 m3u 재생 가능한 관련 플레이어에서 EPG정보를 지원하는 경우 해당 플레이어에 EPG정보도 표시됩니다.

    현재 통신 3사 KT(70ch), LG(190ch), SK(180ch) 업데이트된 m3u와 외부 EPG 접속을 위한 url이 제공되고 있습니다.

    특히 kt의 경우 일부 종편 및 몇몇 채널이 시청이 불가하나 타 통신사 TV채널로 대체하여 서비스 되고 있는점 참고바랍니다.


    코디(kodi) m3u등록 및 외부EPG설정 / 탑이슈제공 영상

    이 서비스는 여러분의 후원을 통해 이루어집니다.

    이 서비스는 일정금액 후원 후 이용 할 수 있습니다. 후원은 최소 5천 원부터 가능하며, 후원금은 장비 업그레이드와 유지 비용으로 사용됩니다. 후원은 절때 강제 사항이 아니며 보다 안정적인이고 지속가능한 서비스 유지를 위한 방안이니 늘리 이해해 주시기 바랍니다.

    SC제일은행 : 77720390237
    카카오뱅크 : 3333063200547

    예금주 : 서승종


    자료실 미리보기


    현재 운영 중인 자료실 캡처 화면

    현재 운영 되고 있는 페이지 일부분을 캡처한 화면입니다. 기본적으로 IPTV를 시청하기 위한 m3u파일을 제공하며 여러 멤버들과의 이 주제의 다양한 의견 교환과 정보 공유도 할 수 있습니다.

    또한 tvheadend 스트리밍 서버에 관심이 있고 구축을 계획하고 있다면 이에 필요한 여러 사항들도 자문해 드리고 도울 수 있는 범위 내에서 도와 드립니다.

    이 서비스는 한번 후원으로 기간 제한 없이 이용 할 수 있습니다.

    후원 후 hots01@daum.net으로 입금자 성함, 후원금액, 사용 중인 통신사를 기제, 메일 주시면 자세한 설명과 이용 방법을 제공합니다.