Table of Contents
TV 서버가 필요한 이유
일본은 지상파 TV 채널이 크게 발달해있습니다. 우리 나라는 유선 방송을 돈 내고 보는 사람이 많은 것과 크게 다릅니다.
지상파 TV, 위성 BS, 프리미엄 위성 CS로 크게 세 가지 채널로 양분되며, 지역 동축 케이블 TV와 인터넷 TV는 크게 힘을 못 쓰는 구조로 알려져 있습니다.
그래서 화제를 노리고 나오는 신작 애니메이션이나 외화들은 지역마다 있는 지상파 TV에 나오기 위해 애를 쓰는 것이죠.
볼만한 건 심야에만 있다
하지만 한국에 소개되는 청소년 이상 일반 성인을 대상으로 한 애니메이션은 상당히 늦은 시각에 방송되고 있다는 것을 뒤늦게 알게 됩니다.
즉, 낮이나 저녁에 TV를 틀었는데 왜 일본 생활에서 생각했던 덕질을 못하냐는 의문이 드는 것이죠.
하고 있는 것은 앵무새 같은 시사 프로, 광고, 이른 시간이나 낮에는 어린이용 애니메이션이 대부분입니다.
편성표를 보면 신작 애니메이션의 경우 심야에 한 번 방송하고, 재방송조차 없는 게 대부분입니다.
일본인들은 심야 본방 사수가 어렵다 싶으면 TV에 하드를 연결하거나, 블루레이 레코더를 활용하여 어쩔 수 없이 예약 녹화를 하는 경우가 많습니다.
일반 재생기 녹화 기능은 저작권법에 따라 제한이 걸려 있다
그러면 그냥 그렇게 보면 되지 않냐고 생각하시겠지만, 녹화된 파일은 녹화된 장치에서만 유효합니다.
파일의 전송권을 크게 제약하는 것이죠. TV가 아닌 PC나 휴대기기에서 보고 싶다고 복사를 할 수가 없는 것입니다.
전용 기기에서 녹화한 파일은 암호화되어 있습니다.
TS 따기라고 부르는, MPEG 데이터만을 순수하게 담은 TS 파일을 추출할 수만 있다면, 컴퓨터에는 팟플레이어 등의 재생기로, 휴대 기기에서는 인코딩하여 보거나 최신 스마트폰에서는 역시 재생기 앱만으로 볼 수 있게 됩니다.
어디서나 라이브를 볼 수 있다
Chinachu 서버가 웹 서비스를 제공하므로, 호환되는 클라이언트나 브라우저로 접속해서 시청할 수 있습니다.
수신기에 내장된 튜너 하나가 동시에 채널 하나를 수신할 수 있으니, 튜너 독점에 주의해야 합니다. 자세한 내용은 후술합니다.
법적 제약 주의
신작 애니메이션의 방송 서두에 항상 하단에 나오는 인터넷 무단 전송에 대한 경고를 생각해보면, 이렇게 녹화한 것을 함부로 남에게 전송해서는 안 된다는 것을 쉽게 알 수 있습니다.
일반 PC는 안 되는가?
사실 우리가 사용할 소프트웨어는 오픈 소스이면서 리눅스 계열에서 큰 문제 없이 돌아갑니다. 즉, 여러분의 일반 PC로도 충분히 가능합니다.
다만, 다음과 같은 이유로 별도 장치를 활용하길 권합니다.
- 전원을 계속 켜두고 예약 녹화 장비로 쓰기엔 전기료가 과합니다.
- 윈도우 유저는 멀티부팅을 해야 해서 번거롭습니다.
- Windows 10의 WSL Bash로 Ubuntu 등을 내부에 깔아서 쓴다고 해도 제약이 있습니다.
- 바로 USB 장비를 인식하지 못한다는 것입니다. 우리가 아래에 준비할 준비물을 전혀 쓰지 못하므로 조건을 만족하지 못합니다.
- Opera Virtual PC 무료 버전에 플러스팩을 깔아주면 USB 호환을 시킬 수 있습니다만, 매 번 부팅시마다 다시 연결해줘야 하며 꼭 장치 하나씩 말썽을 일으키니 추천하지 않습니다.
준비물
PC 역할을 할 Raspberry Pi 3+ Model B
라즈베리파이가 구동하려면 SD 카드도 필요합니다.
모든 것이 갖춰진 패키지도 판매중이니, 적당한 가격의 물건을 물색해봅시다.
다만, OS는 직접 설치해야할 가능성이 높습니다.
USB 지상파 TV 튜너
PX-S1UD라는 작은 기기가 가격이 그나마 저렴하고, 리눅스용 드라이버도 호환되어서 널리 쓰이는 듯 합니다.
널리 쓰이는 기기가 문제를 덜 일으키니 믿고 씁시다.
끝부분은 안테나 단자에 꼭 잘 연결합시다.
IC 카드 리더
SCR3310
IC 카드 리더기는 아래 B-CAS 카드를 읽을 수 있는 수단입니다.
B-CAS 카드
B-CAS 카드는 스크램블(암호화)된 일본의 방송 신호를 해석하기 위해 필수적인 물건입니다.
구하는 방법이 궁합니다. 원래 수상기에 같이 딸려 나오는 식으로 신품 구입시 손에 들어옵니다. 그러나 카드 슬롯 없는 제품도 있고, 중고로 팔 때 없는 경우가 많으며, 그냥 별다른 이유 없이 신품인데도 안 주기도 합니다.
별도로 정식으로 방송협회에 주문하면 약 3천엔이 날아갑니다.
아마존을 뒤져서 중고로 500엔에 구해봅시다.
빨간색과 파란색으로 나뉩니다.
- 빨간색: 다기능. 위성 BS와 지상파 모두 디스크램블이 가능합니다.
- 파란색: 지상파만 디스크램블 할 수 있습니다.
500GB 이상급의 하드디스크
녹화한 TS 파일은 압축되지 않은, 실시간 수신 내용 그대로를 담습니다. 비트레이트라고 불리는 초당 용량이 그대로 누적되는 것입니다.
FullHD 1080p 수신에 약 15Mbps1 남짓으로 방송 한 프로에 6기가바이트 하는 건 흔한 일입니다.
충분한 용량을 준비하되, 일정 주기로 인코딩하여 화질과 용량의 균형을 맞춰서 작게 만들면 더 많이 저장할 수 있습니다.
시작
Raspberry 운영체제 설치
이에 관해서는 관련 정보를 활용해보세요. NOOBS OS 설치로 충분합니다.
Pi에서 인터넷에 연결되는 것을 확인하고 SSH나 실제 Bash 콘솔에서 시작합니다.
사전 준비
이제 위에 있는 USB 장비는 죄다 라즈베리파이에 연결합니다.
이하 박스에 있는 내용은 bash 콘솔에 쳐야할 내용입니다.
sudo apt-get install -y pcscd libpcsclite1 libpcsclite-dev libccid pcsc-tools
sudo apt-get install -y autoconf build-essential git-core libssl-dev libtool libboost-all-dev pkg-config yasm pkg-config
설치
PX-S1UD_driver_Ver.1.0.1.zip 백업본
cd ~/PX-S1UD
wget http://plex-net.co.jp/plex/px-s1ud/PX-S1UD_driver_Ver.1.0.1.zip
unzip PX-S1UD_driver_Ver.1.0.1.zip
sudo cp PX-S1UD_driver_Ver.1.0.1/x64/amd64/isdbt_rio.inp /lib/firmware/
여기서 Japanese Chijou Digital B-CAS Card라는 문구를 확인할 수 있어야 합니다.
mkdir ~/tmp
cd ~/tmp
wget http://hg.honeyplanet.jp/pt1/archive/c44e16dbb0e2.zip
unzip c44e16dbb0e2.zip
cd pt1-c44e16dbb0e2/arib25
make clean && make
make install
arib25는 B-CAS 카드 표준에 맞게 읽을 수 있는 라이브러리로 추정됩니다.
mkdir ~/recdvb
cd ~/recdvb
wget http://www13.plala.or.jp/sat/recdvb/recdvb-1.3.1.tgz
tar xvzf recdvb-1.3.1.tgz
cd recdvb-1.3.1
./autogen.sh
./configure –enable-b25
make
make install
npm cache clean
npm install n -g
apt-get purge -y nodejs npm
apt-get -y autoremove
현재 chinachu 버전업으로 인해 npm 8 버전을 써야 하는 것으로 기억하는데, 오류 메시지가 떴을 때 최소 요구 사항을 확인하고 버전을 맞추면 됩니다.
버전이 잘 표시되어야 합니다.
Mirakurun 설치
Mirakurun은 제조사 드라이버를 통해 튜너를 제어하는 소프트웨어입니다.
sudo npm install mirakurun -g –unsafe –production
sudo npm install rivarun -g
sudo npm install arib-b25-stream-test -g –unsafe
숫자로 PID가 잘 표시되면 OK입니다.
여기 내용으로 다음과 같이 붙여넣습니다.
types:
– GR
command: recdvb –b25 –dev 0 – –
– name: PX-S1UD-2
types:
– GR
command: recdvb –b25 –dev 1 – –
갖고 있는 튜너는 하나지만 둘 다 넣어야 성공하였습니다. 원글은 분배기를 통해 두 개 튜너를 연결했습니다.
채널 설정
채널 수동 설정을 하고 싶으면 다음과 같이 입력하면 됩니다.
그러나 무엇이 잡히는지도 모르기 때문에 우리는 자동 설정을 할 것입니다. 안테나가 정상적으로 연결되고 튜너가 인식되어야 가능합니다. 아래 명령을 친 다음, 채널을 찾았는지 바로 명령 결과로 각각 뜨기 때문에 지켜보면 됩니다. 채널이 있을 법한 구간에서 오류가 지속적으로 난다면, 튜너를 재연결하고 재부팅해보세요.
40772 포트는 Mirakurun 서버에 연결할 수 있습니다. 연결에 실패하면 Mirakurun의 재설치가 필요합니다. npm으로 설치했으니 node부터 올바르게 설치되었는지 필히 확인하세요.
모든 변경사항을 적용하기 위해 재시작합니다.
EPG 수신에 대략 10분 정도 기다려준 다음에,
이것을 입력하여 EPG 내용이 올바르게 받아지는지 확인합니다.
sudo nano /etc/logrotate.d/mirakurun
/usr/local/var/log/mirakurun.stderr.log
/{
daily
compress
rotate 7
missingok
notifempty
}
Chinachu 설치
Chinachu는 녹화 스케쥴 관리, 실시간 방송 스트리밍이 가능한 PVR 매니저입니다.
su – chinachu
git clone git://github.com/kanreisa/Chinachu.git ~/chinachu
cd /home/chinachu/chinachu
./chinachu installer
여기서 설치 방법을 물어볼텐데, 1을 입력하고 엔터를 눌러서 1) Auto (Full)을 선택합니다.
시간이 매우 오래 걸리므로 대기합니다.
환경 설정
cp config.sample.json config.json
nano config.json
“recordedDir” : “./recorded/”,
“wuiOpenPort”: 10772,
uid에는 우리가 지금 만든 계정 이름을 넣어주시고 (여기서는 chinachu), recordedDir는 녹화 파일이 저장될 디렉토리입니다. 폴더 소유자 및 권한에 주의하세요.
포트는 웹에서 접속 가능한 곳을 지정하며 별도의 인증 기능이 빠져있으니 외부 접속에 유의해야 합니다.
chinachu의 로그 로테이트 설정
nano /etc/logrotate.d/chinachu
/usr/local/var/log/chinachu-operator.stdout.log
/usr/local/var/log/chinachu-wui.stderr.log
/usr/local/var/log/chinachu-wui.stdout.log
{
weekly
compress
rotate 4
missingok
notifempty
}
동작 확인
cd ~/chinachu
./chinachu service wui execute
cd /home/chinachu/chinachu
pm2 start processes.json
프로세스 시작 후 10초 정도 대기한 다음 다음 명령을 입력합니다.
향후 config.json의 수정을 한 다음에 할 일
/usr/local/var/log/chinachu-operator.stdout.log
/usr/local/var/log/chinachu-wui.stderr.log
/usr/local/var/log/chinachu-wui.stdout.log
cd ~/chinachu
./chinachu update
이제 브라우저에 chinachu 화면이 정상적으로 뜨는 것을 확인할 수 있습니다.
좋은 포스팅 감사합니다. 인코딩 관련해서도 팁이 있으면 더 좋겠네요 ㅎ
대시 같은 일부 글자 자동 치환 문제가 있어서 다듬은 글을 다시 내놓도록 하겠습니다.
혹시 epg 공유해주실수 있으신가요? 다 되는데 epg가 않되서ㅠ