ワタシの常用iPhone(iOS)アプリの中では、まあまあ、レアな部類に、「Air Video HD」というのがあります。
(余談ですが、今、「そこそこの頻度(週数回以上)で起動しているアプリ」をざっと数えたら40くらいありました。体感的に20も無い、と思ってましたが、意外と、いろいろやってますな。スマフォ依存ひどいwww)
名前からなんとなく想像できるとは思いますが、クライアントアプリ「Air Video HD」をiPhone/iPad/iPod Touch/AppleTVに入れ、サーバアプリ「Air Video Server HD」をMac/PC/Linuxで走らせると、マシンの内蔵HDD/SSDなり、DASなりNASなりに溜め込んだ動画を自在に再生できます(ちなみに、クライアントは有料、サーバは無料)。ウチは長年、自宅サーバを固定ipでやっているんで、どこからでも直に見られますが、そうでなくてもルータに穴空ければ、フツーのご家庭でも同様のことができます(たぶん)。
コイツの優れているところは、とにかく群を抜いた、全方位にスキの無い基本性能の高さ、です。
●登場当時から、ファイル名等、日本語環境に完全対応
●iOS等に対応した形式に動的変換しながらのストリーミング/変換終えてからのダウンロード再生、両方に対応
●対応形式は、「ほぼ全て」といっても過言ではない融通無碍ぶり
●再生位置を記憶
●字幕や音声の切り替えにも完全対応
●サーバ側はマルチユーザ対応で、ユーザごとのパスワードロック等にも対応
登場してから随分経つので、競合もそれなりに追いついているとは思いますが、コイツはすげえ、と思ったのは、登場当初からの圧倒的な対応形式の多さです。ワタシの場合、.mkv形式のファイルを生成していることが多く、コレをiphoneでダイレクトに見る、というのはほぼ絶望的。ちゃんと見たければMacの前まで行けばいいわけで、ゴロ寝視聴のために毎回変換するのも超絶バカバカしいし、なんだかなあ……と思っていたところ、コレ(正確には前身の「Air Video」ですが)に出会い、以来、動画の遠隔視聴はコレ一択となっております。
ちなみに、なぜこんなに融通が利くのか、というと、どうやら、デコードエンジンにvlc-nox(What is vlc-nox? – Ask Ubuntu)を使っているんですねえ。どんな形式でも開けちゃう動画再生アプリとして確固たる地位を築いているVLCのコア部分を使っているのだから、当然、vlcで開けるファイルは、全部開ける、という。実に賢い戦略です。
で、メインマシンはMacBook Pro、ということもあり、自宅鯖(ubutu)にAir Video Server HD for Linuxを入れて便利に視聴しておったのですが、この度、遅まきながら14.10LTS→16.04LTSに上げたところ、なんと起動しない。Air Video Server HD for Linuxは、他のOS用に比べて、なんか日陰者扱いされていた感があるので、とうとう致命的な問題でも起きてしまったのか……と、ログを探ったりしてみるものの、どうもはっきりしない。起動自体はアッサリしたもので、本体である「AirVideoServerHD」実行ファイルに設定書いたファイルを引数につけて叩くだけなんで、ソレをやると、フツーに起動する。
あれこれ調べて、ubuntu16で、Initデーモンのデフォルトがsystemdというモノに変わっていた、ということにようやく気付きました。ubuntu/debian系は、redhat系に比べて若干付き合いが浅く、仕事ではほとんど使っていないこともあって、upstartへの移行ばなしが出てきたときも「なんかメンドいコトになってんな〜」と、適当にぐぐった情報のコピペで乗り切っていたのですが、後方互換性をざっくり切り捨てたsystemdになってしまうと、ソースからビルドした系のデーモンは、個別、手を入れてやらないと、どうもうまくいかないらしい(ちなみに、apacheなりbindなり、debパッケージのまま使っているモノは、ディストロアップグレードの際にきちんと移行がなされます。さすが俺たちのubuntu/debian系++)。
「airvideo server hd linux systemd」あたりでぐぐると、アッサリここいらの情報がヒット。
神 か !
ふむふむ。面倒だからコピペコピペ(←神を粗末に扱う行動)。
/usr/lib/systemd/system/airvideoserverhd
#!/bin/bash –
echo -n “Starting AirVideo server: ”
cd /home/korp/AirVideoServerHD-2.1.3 && ./start.sh
/usr/lib/systemd/system/airvideoserverhd.service
[Unit]
Description=AirVideoServerHD
After=syslog.target
After=network.target[Service]
Type=simple
#Type=forking
ExecStart=/usr/lib/systemd/system/airvideoserverhd[Install]
WantedBy=multi-user.target
おお、すばらしい。ファイルを所定の位置に置いて、サーバリブート(←雑な行動)。
……動かない。ps | grepしても上がってない。
syslog見る。
なんも、ない。やれやれ。ちゃんと調べますか。
Systemdを使ってさくっと自作コマンドをサービス化してみる
……なるほど!
systemctl enable hogehoge
とかして、フラグ立てないとイカンのですな。ま、そりゃそうだ。
さっそく、やってみる。systemctl list-unit-files –type=serviceしたら「enabled」になってる。よっしゃよっしゃ。再起動。……ダメですなあ。
syslog見る。
airvideoserverhd.service: Failed at step EXEC spawning /usr/lib/systemd/system/airvideoserverhd: Permission denied
Jun 13 00:19:34 d3 systemd[1]: Started AirVideoServerHD.
……なるほど。実行権限ですな。(最初の方に書いてあるじゃないか。。)
chmod 744 /usr/lib/systemd/system/airvideoserverhd して、起動。動いた! …からの、サーバ再起動。OK!
systemdへの移行、サーバを改造しまくったり、ソースからビルドしまくっている人にとっては悪夢かもしれませんが、記述はシンプルであり、できることも増えているようで、悪くなさそうですね。
ちなみに、「systemdうがー」みたいなことをtwitterで呟いたら、
@systemdsucks アカウント にふぁぼられました(苦笑)。
どうやら、systemdへの移行を強いられてるんだ! と感じている人々が一定数いるようですね(今回、経緯を結構ちゃんと読んだ印象では、そうかな……? と思っていますが。技術としてもそんなにスジ悪くない気がするし)。
なんというか、こういう「テッキー同士のかまし合い文化」は末永く続いて欲しいと思ってしまうのでありました。