追記・修正 2020/02/29
- 衆議院インターネット審議中継の仕様変更に対応。
- @yumetodo さま、ご指摘頂きありがとうございます。
0、国会中継をダウンロードして楽しみたい
政府が用意している国会中継サイトから動画をダウンロードする方法をご紹介します。
皆さんはパソコンで仕事をするとき、どんなBGMをかけながら作業していますか?私はだいたい国会中継を聴きながらパチパチキーボードを打っています。昔はラジカセで音楽をかけっぱなしにしていたのですが、好きな音楽がかかるとついつい目の前の課題から気持ちが離れてしまうので困りものでした。
国会中継は聞き流すのにちょうどいいコンテンツです。音楽やラジオほどは気が散らず、それでいて音だけで聴く与野党の攻防はほどほどにおもしろいものなので、作業用のBGMにはうってつけです。しかも会期中はほぼ毎日新しいコンテンツが無料で1追加されるので飽きは来ません。なので国会中継は私の生活に欠かせないものとなりつつあります。
しかし、この国会中継配信サイトには使い勝手の悪さがあります。たとえば、配信のスタイルがYouTubeとおなじようにストリーミング配信であるため、インターネット接続がない環境では視聴することができません。スマフォやタブレットのようなモバイル環境があったとしても、私は格安SIMを使っているので、仕事中ずっと流しっぱなしにしておくような使い方には適していません。
そこで、このインターネット中継を一旦ローカルに保存して、SDカードなどで持ち歩いていつでもどこでも見られるようにしたいな、と考えました。
ではやっていきましょう。
1、準備した環境
- Ubuntu 18.04.1 LTS
- ffmpeg 3.4.4
ffmpegがインストールされていない場合はapt-getなどを使ってインストールしておきましょう。
sudo apt install ffmpeg
2、衆議院インターネット審議中継( http://www.shugiintv.go.jp/ )を攻略する
ビデオライブラリからは過去に収録された審議中継の模様を閲覧することができます。
キーワードを入れて検索をし、目当ての審議中継を見つけたら発言者(議員)の名前をクリックすると動画の再生が始まります。
-
閲覧したい委員会のページを開く
-
F12を押し開発ツールを表示
-
コンソールを開き、下記を入力
ブラウザのコンソールで実行document.getElementById("vtag_src_base_vod").type = "text";
-
すると、プレイリストへのリンクが書かれたフォームが出現するのでそれの内容をコピー
-
ターミナルで下記を実行
シェル上で実行ffmpeg -i "http://hlsvod.shugiintv.go.jp/vod/_definst_/amlst:%Y/%Y-%m%d-%H%M-*/playlist.m3u8" output.mp4
ですが、その前に配信方法を選択するために配信方法設定画面にアクセスします。衆議院インターネット中継ではAdobeFlashとWindowsMediaPlayerの二つの選べるのですが、今回は後者を用います。また、できることなら高画質で保存をしておきたいので「Windows Media Player」の「高速回線用」を選択します。この画面は「設定」ボタンを押して閉じておきましょう2。
<ASX version="3.0">
<title>安全保障委員会</title>
<author>Shugiin</author>
<copyright>(c) 2018 Shugiin</copyright>
<Entry>
<TITLE>安全保障委員会(開会~散会)</TITLE>
<ref HREF="mms://wmtvod.shugiintv.go.jp/vod/2018-0413-1300-3b.wmv"/>
<STARTTIME VALUE="01:01:45.1"/>
<duration value ="01:21:08.8"/>
</Entry>
</ASX>
たとえばこの場合ではwmtvod.shugiintv.go.jpというサーバーのvod/ディレクトリに2018-0413-1300-3b.wmvというファイル名で存在していることが分かります。これがストリーミングファイルの本体です。WindowsMadiaPlayerはwmpdyna.asxに書かれたこうした情報をもとに wmtvod.shugiintv.go.jp/vod/2018-0413-1300-3b.wmv にアクセスして動画を取得しているわけです。つまり、我々もここにアクセスすればいいということです。
ただ、直接ここ(wmtvod.shugiintv.go.jp/vod/2018-0413-1300-3b.wmv)にhttpプロトコルで通信を仕掛けても動画をダウンロードすることはできません。というのは2018-0413-1300-3b.wmvというファイルはやはりストリーミング形式の動画ファイルだからです。ストリーミング配信専用のプロトコルでアクセスしないと映像を受信することはできません。
ここではmmsというプロトコル4を使います。
ではストリーミングファイルの本体の在処をつかめたところで、ここにmmsプロトコルでアクセスし、普通の動画ファイル形式に変換しローカルに保存することを考えましょう。このような作業が得意なツールがはじめに用意したffmpeg
というコマンドラインツールです。
ffmpeg
の基本構文は次の通りです。
ffmpeg -i [入力] [出力]
引数-i
はinputの略で、この直後に入力元の動画のパス(URL)を入力します。また、第二変数には出力ファイルの名前を置きます。
たとえばこの場合では、次のようにコマンドを打つとwmtvod.shugiintv.go.jp/vod/2018-0413-1300-3b.wmvを2018-0413-1300-3b.wmvという名前でローカルに保存することができます。
ffmpeg -i mmsh://wmtvod.shugiintv.go.jp/vod/2018-0413-1300-3b.wmv 2018-0413-1300-3b.wmv # mmshでwmtvod.shugiintv.go.jp/vod/2018-0413-1300-3b.wmvにアクセスし、2018-0413-1300-3b.wmvという名前で動画をカレントディレクトリに保存する
(参考) https://kamae-norihiro.blogspot.com/2013/12/ffmpeg-mms.html
ダウンロードにはかなりの時間がかかります。気長に待ちましょう。
3、参議院インターネット審議中継( http://www.webtv.sangiin.go.jp/ )を攻略する
同じにしてくれれば楽なのに、どういうわけか衆議院と参議院ではサイトの仕組みが違うようです。なので、こちらはこちらで別にしくみを調べてやる必要があります。
ただ、こちらの方がやや簡単です。それは、参議院インターネット中継のほうでは動画ファイルが登録順により通し番号の連番ファイルになっているからです。動画へのリンクのURLを少し調べれば、動画ファイルごとに降られたその番号を知ることができます。
同じように検索画面から目的の動画を見つけたら、その動画へのリンクを右クリックしてURLを取り出します。そのアドレスの名からその動画ファイルに振られた"固有ID"を抽出します。
http://www.webtv.sangiin.go.jp/webtv/detail.php?sid=4893&type=recorded
というURLなら、detail.phpに付与されたパラメータsidを観察して、
sid=4893
より、
この動画5は4893番という番号で管理されていることが分かります。つまり、パラメータsidの値が動画の固有IDです。
http://svwmlv.webtv.sangiin.go.jp/hls-vod/[固有ID].mp4.m3u8
にあることが分かっている6ので、ffmpegを使ってこのURLにアクセスすることで動画をダウンロードすることができます。
くどいかも知れませんが、ffmpegの構文は先ほどと同じように、
ffmpeg -i http://svwmlv.webtv.sangiin.go.jp/hls-vod/[固有ID].mp4.m3u8 [出力].mp4 # 固有IDとは動画へのリンクから調べられる番号のこと
ffmpeg -i http://svwmlv.webtv.sangiin.go.jp/hls-vod/4893.mp4.m3u8 sangiin_4893.mp4 # 4893.mo4.m3u8にアクセスし、sangiin_4893.mp4と名前を付けてカレントディレクトリに保存する
とすればOKです。カレントディレクトリに動画が保存されます。
6、留意すべき点
そもそも国会はパブリックなものであり、この国会中継だって国民の税金によって運営されている公共的なものなのですから、配信されている動画の使い道や著作権についてとやかく言われるのはそもそもナンセンスなのですが、一応ホームページに留意事項が書かれているので少し転載しておきます。
- 衆議院インターネット中継 著作権・リンク・登録商標について(http://www.shugiintv.go.jp/jp/index.php?ex=CR)
このホームページの著作権について
「衆議院インターネット審議中継」に掲載されている個々の情報(文字、写真、映像等)は著作権の対象となっています。ご利用にあたっては、著作権法の範囲内でご使用ください。
Copyright(C) 1999-2018 Shugiin All Rights Reserved.
- 参議院インターネット審議中継 よくある質問(http://www.webtv.sangiin.go.jp/webtv/index.php#category99)
よくある質問
その他
Q29 : 映像を保存して後日視聴することはできますか?
参議院インターネット審議中継は、参議院の審議映像をストリーミング方式で視聴していただくために配信しております。 このホームページで公開しているデータを直接ダウンロードすることや本ホームページ以外で公開することは、ご遠慮願います。
Q30 : 映像を保存して自分のホームページで公開することはできますか?
参議院インターネット審議中継は、参議院の審議映像をストリーミング方式で視聴していただくために配信しております。 このホームページで公開しているデータを直接ダウンロードすることや本ホームページ以外で公開することは、ご遠慮願います。
まあ、常識の範囲内での利用を心がけましょう7。
7、まとめ
-
- 閲覧したい委員会のページを開く
- F12を押し開発ツールを表示
- コンソールに
document.getElementById("vtag_src_base_vod").type = "text";
をコピペ - 表示されたフォームに書かれたリンクをコピー
- ターミナルで
ffmpeg -i "http://hlsvod.shugiintv.go.jp/vod/_definst_/amlst:%Y/%Y-%m%d-%H%M-*/playlist.m3u8" output.mp4
を実行
-
- 動画へのリンクURLを調べ、パラメータ?sidを見て必要な動画のIDを把握する
- このIDとffmpegを用いてダウンロードを始める
-
我々の税金で ↩
-
この設定はおそらくcookieに保存されている。ブラウザの設定でcookieが無効になっていると同じ作業を繰り返すとき少し面倒である。
この設定をした上で、発言者の名前をクリックすると↩wmpdyna.asx
というファイルがダウンロードされます。ここで、.asx
という拡張子がついたファイルはWindowsMediaPlayerを用いた動画ストリーミング配信に使われるもの3ですが、このファイルの実態は動画ファイルではありません。このファイルの本質はテキストデータであり、Web上に置かれた動画の本体へのリンクが書いてあるだけです。 -
https://ja.wikipedia.org/wiki/Windows_Media%E3%83%A1%E3%82%BF%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB
このファイルをテキストエディタで開いてみると、だいたい六行目に↩<ref>
タグがありますが、これをよく見ると必要としている動画の本体がどこにあるのかが分かります。 -
mmsはMicrosoftが策定したメディアストリーミング用の通信プロトコル。mmshはmms over httpの意味。 https://en.wikipedia.org/wiki/Microsoft_Media_Server ↩
-
2018年7月19日参議院内閣委員会。岡山・広島などに甚大な被害をもたらした西日本豪雨の直後であったにもかかわらず、カジノ推進法案が強行採決された。
そして実は、この動画のストリーミングファイルの本体は、 ↩ -
http://d.hatena.ne.jp/riocampos+tech/20150917/fetch_sangiin_streaming_and_convert_mp3 ↩
-
一度に大量のリクエストを送り付けるなどサーバーに過剰な負担をかけるようなことはやめましょう。また、ダウンロードした動画に悪意のある改変を加えるなどの行為もやめましょう。 ↩