rokkonet

PC・Androidソフトウェア・アプリの開発・使い方に関するメモ

Mirakurun : コマンドラインでのTV番組のストリーミング再生、TV番組録画

2025 Nov. 02.
2025 May 04.
2025 Feb. 22.
2025 Jan. 11.

MirakurunのAPI解説

mirakc/docs/web-api.md at main · mirakc/mirakc · GitHub
ストリーミングの書式:GET /api/channels/{channel_type}/{channel}/services/{sid}/stream

Mirakurunのチャンネル設定情報取得

http://MIRAKURUN-SERVER:40772/api/channelsにアクセスする。
MIRAKURUN-SERVER:mirakurunのDockerコンテナ内では、"localhost"とする。"192..."のIPアドレスではアクセスできない。

ストリーミング再生

VLCメディアプレーヤーで再生するなら、「ネットワークストリームを開く」メニューにURLを指定する。

地上波22チャンネル
http://MIRAKURUN-SERVER:40772/api/channels/GR/22/services/43008/stream

NHK BS101チャンネル
http://MIRAKURUN-SERVER:40772/api/channels/BS/BS15_0/services/101/stream

GR/22、43008、BS/BS15_0、101の部分をチャンネルに応じたものにする。
channels/GR/22/services/43008、channels/BS/BS15_0/services/101は、mirakurunのStatusページのServices画面で各チャンネルにマウスを置くとポップアップされるChannel、SID。

ファイルへの出力

コマンドラインにてcurlコマンドからhttpアクセスする。

Ctrl-Cで終了する方法
$ curl http://MIRAKURUN-SERVER:40772/api/channels/GR/26/services/43056/stream > OUTFILE


録画時間(30秒間)を指定する方法
生TSを録画
$ timout 30 curl http://MIRAKURUN-SERVER:40772/api/channels/GR/26/services/43056/stream > OUTFILE
あるいは
$ curl --max-time 30 http://MIRAKURUN-SERVER:40772/api/channels/GR/26/services/43056/stream > OUTFILE

ffmpegでの正規化を入れてTS録画
$ timout 30 bash -c "curl http://MIRAKURUN-SERVER:40772/api/channels/GR/26/services/43056/stream | ffmpeg ‐i - -c copy OUTFILE"
あるいは
$ curl -s --max-time 40 "http://MIRAKURUN-SERVER:40772/api/channels/GR/26/services/43056/stream" | ffmpeg -i pipe: -c copy -t 30 OUTFILE
"--max-time 40"は、ffmpegが30秒間で終了した後、curlを最大40秒間で確実に終了させるためのもの。


TS形式で録画せず、直接H.264形式で録画するには音声ストリーム形式に応じてffmpegのオプションを変更する必要がある。
参考ページ : Mirakurun:放送局・録画時間を指定して録画するスクリプト - rokkonet の「dual_mode型音声を主音声(左音声)のみにする録画スクリプト」の「直接H.264で録画するシェルスクリプト」