null Liferay 7.4で動画プレビュー作成とその他のプレビューのエンハンス

はじめに

Liferay DXP 7.4がグローバルで2021年11月にリリースされました。当記事では長らくXugglerを利用していた動画のプレビュー作成機能がサーバにインストールしたFFmpegを利用するように変更されたということに着目し、インストールと設定の方法を見ていきたいと思います。また、設定箇所が分散していて少しややこしいので、OfficeファイルやPDFファイルのプレビュー&サムネイル作成においてもサーバにインストールしたツールと連携する方法を見てみましょう。

当記事の執筆にあたってはVagrantのCentOS7系にLiferay DXP 7.4 GA1とFFmpegの3.4.9をインストールして検証しました。環境によって各ツールのインストール方法は異なりますのでご注意ください。

 

動画再生:FFmpeg

インストール

公式サイトからCentOS7用にFFmpegをダウンロードしようとリンクをたどるとRPMFusionに行き着くので、そちらからダウンロードします。
EPELとRPMFusionをリポジトリとして追加してから、FFmpegをインストールします。

>sudo yum install epel-release
>sudo yum install https://download1.rpmfusion.org/free/el/rpmfusion-free-release-7.noarch.rpm
>sudo yum install ffmpeg

インストールが成功したらffmpegコマンドが使えるようになります。

>ffmpeg -version
ffmpeg version 3.4.9 Copyright (c) 2000-2021 the FFmpeg developers

最後に、CentOSではEPELとRPMFusionのリポジトリを普段から参照することがないように無効化しておくほうがよいでしょう。

>sudo yum-config-manager --disable epel rpmfusion-free-updates

※今回の記事ではImageMagickのインストールでもepelを使います。

Liferay設定

管理者としてログインし、コントロールパネル→システム設定→ドキュメントとメディア を開きます。「FFMPEG 音声コンバーター」の項目と、「FFMPEG 動画コンバーター」の項目の各設定画面で、「有効」にチェックを付けて保存します。

設定できたかどうか確認してみましょう。上記の設定を行う前はドキュメントライブラリにアップロードした動画の詳細画面を開いても「表示できる動画プレビューはありません。」となってしまいます。

設定後にページをリロードしてみると「動画プレビュー生成には数分かかります。」
と表示され、

少し待った後に再リロードしてみると
動画が再生できるようになっています(プレビュー生成にかかる時間は当然ですがサーバ性能・ファイルサイズに依存します)。設定が効いていますね。

 

 

Office系ファイルのプレビュー・サムネイル作成:LibreOffice

インストール

wgetでtarを落としてきてインストールします。執筆時に利用可能だった安定バージョン7.1.8を指定しています。

>wget https://download.documentfoundation.org/libreoffice/stable/7.1.8/rpm/x86_64/LibreOffice_7.1.8_Linux_x86-64_rpm.tar.gz
>tar xvf LibreOffice_7.1.8_Linux_x86-64_rpm.tar.gz
>sudo yum install LibreOffice_7.1.8.1_Linux_x86-64_rpm/RPMS/*.rpm

インストールできたか確認してみましょう。

>libreoffice7.1 --help
/opt/libreoffice7.1/program/soffice.bin: error while loading shared libraries: libcairo.so.2: cannot open shared object file: No such file or directory

エラーメッセージが出力されてしまいました。これは、LibreOfficeの実行に必要なライブラリが不足していたためです。yum whatprovidesで不足しているライブラリが調べられるので、追加インストールします。

>sudo yum install cairo
>sudo yum install libSM

これで再度

>libreoffice7.1 --help

を実行すると、helpの内容がずらっと表示されるかと思います。
LibreOfficeのインストール自体はいったん完了ですが、今回の環境ではこの時点で試すと日本語が文字化けしてしまったので、日本語フォントをサーバにインストールします。どのフォントがいいのか調べてみたところこちらのブログ記事がありましたので、Noto CJKをインストールすることにします。

今回はフォントファイルはgithubから取得しました。

>wget https://github.com/googlefonts/noto-cjk/archive/refs/tags/v20201206-cjk.zip

ただ、こちらは色々なフォントが含まれていてファイルサイズが大きいので、Google FontsのWebサイトからダウンロードしてもよいと思います。

zipファイルを展開したら、Noto Sans CJK JPとNoto Serif CJK JPのファイルをフォントフォルダに配置します。

>unzip v20201206-cjk.zip
>sudo mkdir /usr/share/fonts/NotoSansJP
>sudo cp noto-cjk-20201206-cjk/NotoSansJP-*.otf /usr/share/fonts/NotoSansJP/
>sudo mkdir /usr/share/fonts/NotoSerifJP
>sudo cp noto-cjk-20201206-cjk/NotoSerifJP-*.otf /usr/share/fonts/NotoSerifJP/

フォントが認識されているかどうかfc-listコマンドで確認しましょう。

>fc-list
/usr/share/fonts/NotoSansJP/NotoSansJP-DemiLight.otf: Noto Sans JP,Noto Sans JP DemiLight:style=DemiLight,Regular
/usr/share/fonts/NotoSansJP/NotoSansJP-Regular.otf: Noto Sans JP:style=Regular
/usr/share/fonts/NotoSansJP/NotoSansJP-Thin.otf: Noto Sans JP,Noto Sans JP Thin:style=Thin,Regular
/usr/share/fonts/NotoSansJP/NotoSansJP-Medium.otf: Noto Sans JP,Noto Sans JP Medium:style=Medium,Regular
/usr/share/fonts/NotoSerifJP/NotoSerifJP-Regular.otf: Noto Serif JP:style=Regular
/usr/share/fonts/NotoSansJP/NotoSansJP-Black.otf: Noto Sans JP,Noto Sans JP Black:style=Black,Regular
/usr/share/fonts/NotoSansJP/NotoSansJP-Bold.otf: Noto Sans JP:style=Bold
/usr/share/fonts/NotoSerifJP/NotoSerifJP-Bold.otf: Noto Serif JP:style=Bold
/usr/share/fonts/NotoSansJP/NotoSansJP-Light.otf: Noto Sans JP,Noto Sans JP Light:style=Light,Regular
/usr/share/fonts/NotoSerifJP/NotoSerifJP-Medium.otf: Noto Serif JP,Noto Serif JP Medium:style=Medium,Regular
/usr/share/fonts/NotoSerifJP/NotoSerifJP-Light.otf: Noto Serif JP,Noto Serif JP Light:style=Light,Regular
/usr/share/fonts/NotoSerifJP/NotoSerifJP-ExtraLight.otf: Noto Serif JP,Noto Serif JP ExtraLight:style=ExtraLight,Regular
/usr/share/fonts/NotoSerifJP/NotoSerifJP-Black.otf: Noto Serif JP,Noto Serif JP Black:style=Black,Regular
/usr/share/fonts/NotoSerifJP/NotoSerifJP-SemiBold.otf: Noto Serif JP,Noto Serif JP SemiBold:style=SemiBold,Regular
.
.
.

ちゃんと認識されていますね。これで日本語を含むファイルでもサムネイルとプレビューが作成されます。

Liferayがサムネイル・プレビューの作成にLibreOfficeを利用するためにはheadlessモードで起動しておく必要があります。以下のコマンドでLibreOfficeをバックグラウンド起動しておきます。

>libreoffice7.1 --headless --accept="socket,host=127.0.0.1,port=8100;urp;" &

Liferay設定

管理者としてログインし、コントロールパネル→システム設定→コネクタを開くと「OpenOfficeの利用」という項目がありますので、「有効なサーバー(Enable server)」にチェックを付けて保存します。

 

この状態でOfficeファイルをアップロードすると、Liferayログに以下のように出力され、LibreOfficeを利用する設定が効いていることがわかります。

2021-12-17 07:51:00.935 INFO  [liferay/document_library_pdf_processor-2][SocketOpenOfficeConnection:114] trying to (re)connect
2021-12-17 07:51:01.222 INFO  [liferay/document_library_pdf_processor-2][SocketOpenOfficeConnection:77] connected

日本語を含むExcelでも文字化けせずに内容が見れるようになりました。

 

高画質なプレビュー作成:ImageMagick

Liferayではデフォルトでもある程度の画像・PDFファイルのサムネイル・プレビュー作成が利用できますが、より多くの種類の画像をより高画質で利用したい場合はImageMagickを利用するように設定することができます。デフォルトでは満足できないという場合は試してみてください。

インストール

単純にyum install imagemagickを実行すると6系が入りますが、今回は7系をインストールしてみたいと思います。
ソースコードからビルドする方法もあるのですが、今回はremiリポジトリを利用してインストールすることにします。
まずはリポジトリを追加します。

>sudo yum install https://rpms.remirepo.net/enterprise/remi-release-7.rpm

remiリポジトリを指定することによって7系がインストールできることを確認後、インストールします。

>sudo yum list --enablerepo=remi | grep ImageMagick7

ImageMagick7.x86_64                         7.1.0.18-1.el7.remi        remi
ImageMagick7-c++.x86_64                     7.1.0.18-1.el7.remi        remi
ImageMagick7-c++-devel.x86_64               7.1.0.18-1.el7.remi        remi
ImageMagick7-devel.x86_64                   7.1.0.18-1.el7.remi        remi
ImageMagick7-djvu.x86_64                    7.1.0.18-1.el7.remi        remi
ImageMagick7-doc.x86_64                     7.1.0.18-1.el7.remi        remi
ImageMagick7-heic.x86_64                    7.1.0.18-1.el7.remi        remi
ImageMagick7-libs.x86_64                    7.1.0.18-1.el7.remi        remi
ImageMagick7-perl.x86_64                    7.1.0.18-1.el7.remi        remi

>sudo yum install ImageMagick7 ImageMagick7-libs --enablerepo=remi

インストールできたかどうか確認します。

>magick -version
Version: ImageMagick 7.1.0-17 Q16-HDRI x86_64 2021-12-04 https://imagemagick.org

インストールできていたら、Liferayの設定に必要となるのでパスを確認します。

>which magick
/usr/bin/magick

ImageMagickが画像だけでなくPDFファイルも変換を行うことができるように、Ghostscriptもインストールする必要があります。

>sudo yum install ghostscript

インストールを確認後、こちらもパスを確認します。

>gs -version
GPL Ghostscript 9.25 (2018-09-13)
Copyright (C) 2018 Artifex Software, Inc.  All rights reserved.
>which gs
/usr/bin/gs

ここまででインストール作業は完了です。FFMpegのときと同じく、追加したリポジトリを普段は参照しないように無効化しておきます。

>sudo yum-config-manager --disable epel rpmfusion-free-updates remi-safe

Liferay設定

管理者としてログインし、コントロールパネル→サーバ管理→外部サービスを開くとImageMagickとGhostScriptの設定画面が出てくるので、「有効」にチェックを入れ、ImageMagick, Ghostscriptの実行パス、そしてGhostscriptが使うフォントのパスを合わせて指定します。今回の環境では以下のようになりました。

/usr/bin:/usr/share/fonts/urw-base35

ImageMagickの実行パス: /usr/bin/magick
Ghostscriptの実行パス: /usr/bin/gs
Ghostscriptが使うフォントのパス: /usr/share/fonts/urw-base35

これで今後の画像・PDFファイル変換にはImageMagick(+Ghostscript)が利用されるようになります。


さいごに

今回はUIからLiferayの設定を実施しましたが、システム設定内の項目(FFmpegとLibreOfficeの設定)は対応する.configファイルを利用することもできます。ImageMagickの設定はportal-ext.propertiesでも可能で、該当項目はこの部分となります。
ご利用になるファイルの種類によってツールと連携した変換を試してみてください。

RANKING
2021.1.08
2020.12.28
2020.12.01
2020.10.30
2020.12.18