Skip to content

Tvstreamrecord 소개

sjva 덕분에 다시 녹화를 할 수 있게 되었다. VOD가 제공되지 않는 일부 드라마를 녹화하는 용도로 tvheadend를 동원했는데 2주일 동안 단 한 번도 성공하지 못했다. 중간에 끊어지거나, 최종 영상의 인덱싱이 엉망이어서 앞뒤가 뒤섞여 재생되는 등 처참한 실패를 맛봤다. 그래서 찾다가 발견한 녀석이, 이 파이썬 기반의 iptv 녹화 프래그램이다.

Tvstreamrecord by Pavion

도커 설치

docqube/tvstreamrecord – Docker Hub

docker run \
  --name=tvstreamrecord \
  -p 8030:8030 \
  -e TIMEZONE=Asia/Seoul \
  -v /etc/localtime:/etc/localtime:ro \
  -v /srv/dev-disk-by-label-sata/share/tv/rec:/volume1/common \
  --restart unless-stopped \
  docqube/tvstreamrecord

2년이나 된 녀석이니 가능하면 네이티브 설치로 최신 버전을 사용하자.

네이티브 설치

apt update
apt upgrade

## ffmpeg 설치
# 참고 : https://www.vultr.com/docs/how-to-install-ffmpeg-on-debian-8-or-9

cd /opt
git clone https://github.com/Pavion/tvstreamrecord.git
cd tvstreamrecord

## systemd 파일
# cat /lib/systemd/system/tvstreamrecord.service 
[Unit]
Description=TV Stream Record Service
After=multi-user.target

[Service]
Type=simple
WorkingDirectory=/opt/tvstreamrecord
ExecStart=/usr/bin/python3 /opt/tvstreamrecord/tvstreamrecord.py
StandardInput=tty-force

[Install]
WantedBy=multi-user.target

접속 주소: http://\<ip-address>:8030

서비스 등록 방법

먼저 채널을 올린다. Channels 탭에서 Import 단추를 클릭하면 나타나는 대화 상자에서 [파일 선택] 단추를 클릭한 다음 열기 대화 상자의 파일 이름 입력란에 sjva의 Custom 채널에 대한 M3U 주소를 입력하고 파일을 받도록 잠시 기다린 후 Upload하면 채널이 올라간다.

그런 다음 Config의 EPG 탭에서 Initial path for an XMLTV import 입력란에 sjva의 일반 EPG 주소를 입력하고 Submit Change를 한 다음 EPG Chart나 EPG List에서 Import를 하면 된다.

녹화 예약은 EPG 화면에서 녹화할 방송을 클릭하면 된다. 직관적이어서 따로 설명할 필요가 없다.

다만, http, https 프로토콜의 경우 내부적으로 저장하는 루틴이 있는 모양인데, 잘 작동하지 않았다.

Config > FFMPEG support의 Stream types, which should be forwarded to ffmpeg (space separated) 입력란에 httphttps 프로토콜을 추가하여 ffmpeg로 녹화하도록 해야 문제가 없었다. 아마 내부 로직이 sjva의 m3u8 파일을 잘 해석하지 못하는 것 같다.

일주일 동안 몇 개 녹화해 봤는데 잘 된다. 일주일만 일찍 알았어도 파트너 7화를 놓치지 않는 것인데 ㅜㅜ

업데이트

tvheadend 녹화가 실패한 이유는 sjva의 tvheadend용 m3u8이 pipe를 이용하는 방식으로 구현되어 있었기 때문인 것 같다. 오디오 코덱 때문일 거라고 짐작하지만, 일반 m3u8을 사용하자 녹화 실패가 없어졌다. tvheadend의 녹화 지정이 비교할 수 없이 유연하고 mkv 컨테이너까지 입혀주기 때문에 다시 tvheadend로 돌아갔다.

Published intips

Be First to Comment

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다