PCからテレビを見る環境 2025
普段アニメを見るときはdアニメストアやAnimeFestaを使っているが、ときどきテレビの放送をリアルタイムに見たいときがある。 テレビを買えば済む話だが、アニメを見るときはSNSに感想を書きながらなことが多いのでPCで直接テレビを見たい。
これは普通に可能で、「パソコンでテレビを見る」とかでWeb検索してみると情報を得られる。今ならLLMに聞いてみてもいいかもしれない。 方法は色々あるが、TVチューナーでテレビ放送を取り込んで、B-CASカードをカードリーダー経由で読み込ませスクランブルを解除し、何らかのソフトウェアで再生可能な動画を取得する方法があり、今回はそれをメインに見ていく。
TVサーバー構築記録
ちょうど昔買ったPT3(TVチューナー)と2017年に組んだPCのケースが余っていたのでそれを使ってTV視聴用サーバーを作ることにした。 以下のような構成となる。
- ケース: PC-Q21
- チューナー: PT3
- マザーボード+CPU: N100DC-ITX
- カードリーダー: SCR3310-NTTCom
- ソフトウェア (1): recisdb
- ソフトウェア (2): mirakc
この構成のポイントは、N100DC-ITXで省電力かつCPUファンも電源ユニットも必要ないコンパクトなPCにできていること。
ケースにN100DC-ITXを入れたときの写真。CPUファンと電源ユニットがないのでスカスカ。
また、映像を取り出すソフトウェアとしてrecisdbを使っている。 recisdbにはB-CASカードのスクランブル解除に必要なライブラリも含まれていてかつ、インストール手順が簡単なので良さげだった。
recisdbから取り出したテレビの映像をLAN内のメインPCから視聴するために、mirakcも導入した。 これはMirakurunというソフトウェアと同等の機能を持ちながらリソース使用量を抑えたもので、別にMirakurunでも良かったのだが新しいものを使うと面白そうなので採用した。
このTVサーバーのOSにはArch Linuxを導入したが、これは趣味で特段理由はない。 recisdbとmirakcはDockerコンテナで動かすので、ホストのOSはUbuntuでもArchでも大して変わりはないはずだ。
recisdbとmirakcが両方入ったちょうどいいDocker Imageは見当たらなかったのでmirakcのイメージをベースとして recisdbが入ったものを作った。pcscd を起動しないとB-CASカードの読み取りができないのでそこだけ注意点だった。
# syntax=docker/dockerfile:1.4.1
FROM mirakc/mirakc:3.4.7-debian
ARG ARCH=amd64
ENV DEBIAN_FRONTEND=noninteractive
RUN <<EOT
apt-get update
apt-get install -y ca-certificates pcscd pcsc-tools usbutils
curl -sL https://github.com/kazuki0824/recisdb-rs/releases/download/1.2.3/recisdb_1.2.3-1_${ARCH}.deb -o recisdb.deb
apt install -y ./recisdb.deb
rm ./recisdb.deb
apt-get clean
rm -rf /var/lib/apt/lists/*
EOT
ENTRYPOINT pcscd && mirakc
mirakcの設定ファイル config.yaml
は以下の通り。 深夜アニメだけ見れたらいいかとチャンネルはTOKYO MX, TBS, テレビ朝日だけになった。 PT3のデバイスファイルは /dev/dvb/adapter[1-4]
のようで、1,3
が地上波、2,4
がBS/CSのようだ。
# config.yaml
epg:
cache-dir: /var/lib/mirakc/epg
server:
addrs:
- http: 0.0.0.0:40772
channels:
- name: TOKYO MX
type: GR
channel: T20
- name: TBS
type: GR
channel: T22
- name: TV Asahi
type: GR
channel: T24
tuners:
- name: 'GR-1'
types: [GR]
command: recisdb tune --exit-on-card-error --device /dev/dvb/adapter1/frontend0 --channel {{{channel}}} -
以上のDockerfileとconfig.yamlと同じ場所に compose.yaml を作り、Docker Compose でmirakcを起動する。 カードリーダーへのアクセスのため /dev/bus
をコンテナ内に共有し、PT3へのアクセスのため /dev/dvb
を同様に共有している。
# compose.yaml
services:
mirakc:
build: .
restart: always
devices:
- /dev/dvb
- /dev/bus
ports:
- 40772:40772
volumes:
- mirakc-epg:/var/lib/mirakc/epg
- ./config.yaml:/etc/mirakc/config.yml:ro
environment:
TZ: Asia/Tokyo
RUST_LOG: info
volumes:
mirakc-epg:
name: mirakc_epg
driver: local
.
├── compose.yaml
├── config.yaml
└── Dockerfile
docker compose up -d
これで同じLAN内からであれば https://<TV ServerのIP>:40772
でmirakcにアクセスできる。 IPアドレス直接だと覚えづらいので、mDNSで tv.local
という名前をつけている。
> curl -s http://tv.local:40772/api/version | jq
{
"current": "3.4.7",
"latest": "3.4.7"
}
たとえばTOKYO MX(T20)の映像データを取得するなら次のように
curl -s http://tv.local:40772/api/channels/GR/T20/stream --output -
すると生の映像バイナリが流れ込んでくる!
ターミナルに直接バイナリを流しても解読不能だが、何かがすごい勢いで流れてくるのは感じられる
あとはMirakurunまたはmirakcからの映像を表示できるソフトウェアに渡せばよい。
VLC Player、TVTest、EPGStation、MirakTest、KonomiTV、Meruru など多くの視聴ソフトがあるので好みで選ぶ。私はメインPCがmacOSなのでMeruruを使っている。
そのうち録画もできたらいいなとは思いつつ、直近ではリアルタイムで放送を見ることしかしてない(後から見る場合は配信サービスを使う)ので、後の宿題としている。
なぜこんな手間をかけてまで…?
ここまで書いてて自分でも思ったが、手間がものすごくかかる上に複雑すぎる。 アニメを見ることが目的であれば、素直にテレビを買うか多くの映像配信サービスに課金するほうがはるかに楽だろう。 ではなぜ、ここまでしてチューナーから直接映像を取り出す環境を構築するのか?
一つはこのブログ頻出の「持続可能なインターネット計画」と同じ理由だ。 手元に録画した映像データを保持しておけば配信サービスなどのラインナップから消えることに怯える必要もなくなる。 SNSも、データの保管先も、アニメの視聴方法も複数持っておくに越したことはない!
二つ目は、こう色々な物を組み合わせて俺の最強TV視聴環境を構築するぞ! という行為そのものがオタク(マニア?)らしくて面白いということだ。 たとえばMirakurun, mirakc, recisdb, PT3などの単語を織り交ぜて少しWeb検索するだけで、以下のようにテレビ視聴サーバーの構築記事がたくさん出てくる。
- 【メモ】ミニPCをテレビ視聴用のサーバにする方法 - なんしょうちゃん.com
- アニメキャプチャ大学実況学部キャプチャ学科 - ほわむんびより
- 【2023年10月】Ubuntu + Mirakurun + EDCB-Wine + KonomiTV (px4_drv + recisdb + ISDBScanner) でパパッと Linux 録画鯖構築の手引き | つくみ島だより
- mirakc+Amatsukaze+juicefsの組み合わせでテレビ録画を見る - mat2uken-blog
どれもテレビの電波をチューナーで取り込み映像データとして取り出して視聴したり録画している点は共通だが、 使っているPCのパーツやOS、使っているソフトウェア……どの記事も少しずつ違っていて、録画や録画データの管理方法まで書いてある記事もあって大変おもしろい。 こうやって複雑な物事に対して皆で知識を共有し合ったり、自慢したりしてDTVコミュニティ(?)が形成されているのは自分が求めるインターネット像に近く素晴らしいなと思った。 思ったので、この長い記事を最後まで書き切ろうと思えたわけでもある。