2018年03月一覧

Windows10のMedia FoundationでH265(HEVC)を再生できるようにする

以前は意識してなくてもWindows10のWindows Media PlayerなどでH265(HEVC)が再生できていたのに、アップデートしたらなんか見れなくなってた。
どうもFall Creators Updateからコーデックが同梱されなくなったらしく、内部的にMedia FoundationというAPIを使っているメディアプレーヤーはコーデックがないので再生できなくなったということらしい。
参考 : Microsoft removes HEVC codec in Windows 10 Fall Creators Update, adds it to Store – gHacks Tech News

私の場合、HTC Viveで使用できるVR動画向けプレーヤーにMedia Foundationを使用しているものが多く、軒並みH265の動画が再生できなくなってしまっていた。(Simple VR Video Player,Whirligig VR Media Playerなど)

再生できるようにするやり方

Windows10のFall Creators Updateであれば以下のリンクの拡張をインストールすることで見れるようになる。

デバイス製造元からの HEVC ビデオ拡張機能 を入手 – Microsoft Store ja-JP
※以前は「HEVC Video Extension」という名前だったみたいだけど、なぜか自動翻訳っぽい怪しいものに変わってる。


AmpacheをUbuntu16.04にインストールしてHTTPSでアクセスできるようにする

Ampacheが結構便利なのでインストール方法と必要そうな設定と機能の有効化方法をざっくりメモしておく。
スマホなどでのインターネット越しのアクセスも便利なので、セキュリティも考えてHTTPSでのアクセスをできるようにする。

まえおき

確認環境としてVultrのVPSを使用しました。
ソフトウェアはPHP7.0+MySQL5.7+ffmpeg2.8です。
無料で用意できるよう、HTTPSの証明書はLet’s Encryptで取得し、そのためのドメインはNo-IPで取得しています。

インストール方法は以下のgithub上のwikiを参考にしています。
https://github.com/ampache/ampache/wiki/Installation

ffmpegはエンコード形式やビットレートを変換するために必要なだけなので、利用方法がMP3しかデータを置かない等であれば無くても問題ないと思います。
なので工夫すればPHPとMySQLのあるレンタルサーバでも動かせそう。(未確認)

ドメインの取得と準備

No-IP以外のDDNSサービスを利用する場合

ここでは例としてDDNSサービスのNo-IPの場合を書きますが、他のDDNSサービスを使用する場合にはLet’s Encryptの制限に影響されないかPublic Suffix Listへの記載有無を確認する必要があります。
参考 : DDNS and let’s encrypt

自前のドメインを使用する場合は気にしなくてもいいです。

準備

No-IPでアカウントとドメインの取得を行ってください。
その後、サーバのグローバルIPアドレスが固定の場合はNo-IPのWebサイト上の設定でIPアドレスを設定し、変動する場合は以下のCRONを設定します。

*/30 * * * * curl -s "https://(ユーザ):(パスワード)@dynupdate.no-ip.com/nic/update?hostname=(ドメイン)" > /dev/null

No-IPの無料プランの場合、30日毎にドメイン使用の確認ページをクリックしないと無効になるようなのでご注意ください。

インストール

必要パッケージのインストール

sudo apt install apache2 \
mysql-server \
mysql-client \
php \
libapache2-mod-php \
php-mysql \
php-mbstring \
php-gettext \
php-curl \
php-gd \
composer \
ffmpeg \
git

Ampacheのダウンロードと準備

ディレクトリを作成してAmpacheをダウンロード。
例では最新の開発版を指定します。

sudo mkdir -p /var/www/ampache/
cd /var/www/ampache/
sudo git clone https://github.com/ampache/ampache.git html
sudo chown -R www-data:www-data /var/www/ampache
cd html

composerでライブラリを展開

sudo composer install --prefer-source --no-interaction

Apacheの設定

必要となるモジュールの有効化

sudo a2enmod headers
sudo a2enmod ssl

バーチャルホストの設定

sudo vi /etc/apache2/sites-available/(ドメイン名).conf
======
<VirtualHost *:80>
    ServerName (ドメイン名)
    DocumentRoot /var/www/ampache/html
    ErrorLog /var/log/apache2/(ドメイン名).error.log
    CustomLog /var/log/apache2/(ドメイン名).access.log combined
    LogLevel warn
    <Directory /var/www/ampache/html>
       AllowOverride All
       Require all granted
    </Directory>
</VirtualHost>
======

sudo a2ensite (ドメイン名)

PHPの設定
「upload_max_filesize」と「post_max_size」はAmpacheのWebUIから音楽ファイルをアップロードする際のサイズ制限に影響します。
「max_execution_time」は音楽ファイルの登録処理がタイムアウトしないよう、ファイルの量によって調整するといいです。

sudo vi /etc/php/7.0/apache2/php.ini
======
upload_max_filesize = 100M
post_max_size = 100M

max_execution_time = 300;
======

Apacheを再起動

sudo systemctl restart apache2.service

Let’s Encryptからの証明書取得

この記事の編集時点ではaptで取得できるクライアントのバージョンが古く、TLS-SNI-01 challengeが使用できない問題があるため、最新版を取得します。

cd /usr/local/bin
sudo wget https://dl.eff.org/certbot-auto
sudo chmod a+x certbot-auto

certbot-autoを実行し、画面の指示に従い対象とするドメインを選択して証明書の発行手続きと設定をします。

certbot-auto

Apacheを再起動

sudo systemctl restart apache2.service

また、定期的に自動更新するためにCRONに以下を登録すると便利です。

45 4 15 * * certbot-auto renew

Web画面からのインストール設定

Webブラウザからアクセス公開したドメインにアクセスすると、インストールページにリダイレクトされます。
https://(ドメイン名)/

言語を選択

インストールの必要条件をチェックする画面となるので、ERRORの表示がある場合は設定を変更するなどしてから再読込し、ERRORがなくなった後に次へ進みます。

データベースを設定します
「MySQLのホスト名」はlocalhostを指定し、アカウントとしてrootとインストール時に指定したパスワードを入力。
「Create Database User」はrootと別にデータベースユーザを作成するもので、多少面倒ですがrootユーザを乗っ取られるリスクを低減できるためオンにすることをおすすめします。

Webパスはディレクトリがルートディレクトリでない場合に、ルートとの差分を記述してください。上記の設定のとおりにルートに置いている場合は空欄で問題ないです。
(例:https://(ドメイン名)/ampache/ -> ampache/)
「Installation type」は特定ユーザのみがアクセスできるようにする場合は「デフォルト」、家の中等のクローズドな環境で使用する場合は「Minimalist」、ユーザ登録した不特定多数からアクセス可能にするなら「Community」を選択します。
「トランスコーディング」はffmpegを選択。
「Players」は音楽プレーヤーのアクセス方法を選択します。後からWeb画面で設定変更することも可能です。

管理用アカウントを設定します。

この時点で更新があった場合、更新画面になります。
更新ができたら「Return to main page」でトップページに移動します。

トップページが表示できたら、管理者アカウントでログインし、詳細な設定やユーザの作成を行ってください。

各機能の設定

カタログの追加

カタログは音楽/動画ファイルのディレクトリまたはURLを指定するものです。
音楽/動画ファイルを追加する場合、カタログを指定してファイルをデータベースに追加する処理を行わないとAmpacheのリストに表示ができないです。

以下の例ではローカルディレクトリの「/var/www/ampache/catalog」を指定します。

カタログに追加するディレクトリを作成し、apacheユーザのアクセス権限を設定

sudo mkdir -p /var/www/ampache/catalog
sudo chown -R www-data:www-data /var/www/ampache/catalog

Web画面の 管理者-> カタログ -> カタログの追加 からディレクトリを指定して、カタログの追加を行います。
ファイル名・フォルダ名のパターンはWeb画面からのアップロードを行う際に使用されるもので、あまり単純すぎるとファイル名がブッキングする可能性もあるためご注意ください。

カタログで指定した場所へのファイルの置き方は、sambaやFTPなどによるファイル操作や、この後の解説によるWeb画面からのアップロードで行うといいと思います。

カタログの手動操作

カタログで指定したディレクトリ/URLにファイルを置いた後、Ampacheのリストに反映するには、カタログ情報を更新する処理が必要です。

Web画面の 管理者-> カタログ -> カタログの表示 から対象のカタログの操作を選択して、「GO」ボタンで処理を実行します。

各操作の意味は以下のとおりです。

  • 追加(Add)
    カタログの指定先で新しく追加されているファイルをAmpacheのデータベースに追加します。
  • 確認(Verify)
    Ampacheに登録されているファイルのタグを検証し、異なっていたらデータベースに反映します。
  • クリーン(Clean)
    Ampacheのデータベースから元となるファイルのなくなったアルバムやアーティストの情報を削除します。
  • 更新(Update)
    クリーン、確認、追加の順で実行します。
  • アート収集(Gather Art)
    config/ampache.cfg.php内の設定で指定した先からアルバムアートを収集します。
  • 削除
    カタログを削除します。

ファイル数が特別多いわけでなければファイルの追加/削除の後に「更新」を実行すれば問題なく反映されると思われます。
ファイル数が多い場合は「更新」の処理が重たくなるため、高い頻度で実行することを避けるか、処理を使い分けることをおすすめします。

カタログの定期自動操作

カタログはCLIから操作するインタフェースも用意されているため、CRONで自動的に更新させることも可能です。
操作方法の詳細については以下からご確認ください。
https://github.com/ampache/ampache/wiki/CLI

CRONの登録例

以下のオプションではカタログのクリーン、確認、追加を行います。

0 1 * * * php /var/www/ampache/html/bin/catalog_update.inc (カタログ名) -c -v -a > /dev/null

Web画面からのアップロードを許可する

管理者-> サーバ設定 -> System を開く。
画面下の方にある「アップロード」の箇所を設定。

各設定の意味は以下のとおりです。

  • Allow users to upload media
    ユーザに音楽ファイルのWeb画面経由でのアップロードを許可します。
  • Rename uploaded file according to catalog pattern
    カタログで設定したファイルの名のパターンを使用してアップロードしたファイル名を変更します。
  • Upload: allow users to edit uploaded songs
    アップロードした音楽ファイルの登録データ編集をユーザに許可します。
  • Upload: allow users to remove uploaded songs
    アップロードした音楽ファイルの削除をユーザに許可します。(ただし、後述の削除許可の設定を追記しないと、この機能も有効になりません)
  • Upload: consider the user sender as the track’s artist
    アップロードした音楽ファイルのトラックアーティスト情報をアップロードしたユーザにします。(自作曲をアップロードするサイト向け?)
  • Upload: create a subdirectory per user (recommended)
    ユーザ毎にサブディレクトリを作成します。
  • Upload: run the following script after upload (current directory = upload target directory)
    アップロードされた後に実行するスクリプトを指定します。(特殊な操作をする場合以外は空欄で問題ないです)
  • アップロード先のカタログ
    ここで選択したカタログで指定しているディレクトリにファイルが保存されます。

個人的に使う分には画像の設定と同様にすれば問題ないかと思います。

設定を反映すると ホーム -> Musicに「アップロード」という項目が増え、ここからアップロードが可能となります。

削除もWeb画面上から行いたい場合、Ampacheの設定ファイルに以下を追記する必要があります。

sudo vi /var/www/ampache/html/config/ampache.cfg.php
======
delete_from_disk = "true"
======

ちなみに、Web画面からアップロードした場合にもカタログの操作によるデータベースへの追加をしないとAmpacheからは見れないため、ご注意ください。

タグにSJISを使用していた場合の文字化けを解消する

文字化けしているファイルとデータベースの登録を削除し、以下の方法で対応してください。

Ampacheを無理やりSJISのタグに対応させる

クライアントの紹介

AmpacheのWeb画面は完成度が高いと個人的に思っていますが。
クライアントアプリケーションを利用してアクセスすることで、モバイル環境などでさらに快適に使用することができます。

AmpacheとしてのAPIだけでなく、SubSonic等のAPIにも対応しているため、それらに準拠している多数のクライアントからもアクセスが可能です。
特に、SubSonicに対応したクライアントは成熟度の高いものが多いため、私はそのようなものを使用することが多いです。

DSub for Subsonic (Android)

DSub for Subsonic (Google Play)

SubSonicクライアント
有料で日本語にも対応していませんが、操作がしやすく、Wifiとモバイル回線でのビットレートの変更などの細かい設定にも対応しているため、がっつり使う人にはおすすめできるクライアントです。

Jamstash (Chromeアプリ)

Jamstash (Chromeウェブストア)

SubSonicクライアント
Chrome開けるなら通常のウェブ画面で操作すればいいことも多いですが、何かしらの理由でそうでない場合に使っています。
PC向けのミュージックプレイヤーでSubSonicに対応しているものは機能が複雑な印象ですが、こちらはシンプルで使いやすかったです。