Linux で MirakTest 向け libVLC をビルドしようとした
https://scrapbox.io/files/62dec2c9addf8b001d4b1988.png
結論から言えば失敗。各自でビルドすれば正しく動くが、ポータブルな libVLC をビルドするのは現状だと難しい。
今の Linux 版 MirakTest は以下の VLC に起因する問題を抱えている
MPEG2 のハードウェア支援が腐っていてうまく再生できない
字幕が出ない
この問題を全ての環境で解決するには libVLC にパッチを当てたりしてビルドをする必要があり、Windows と Mac は字幕対応のため既にカスタムビルドを使うようにしてある。
Linux でもカスタムビルドは可能で、なおかつ MirakTest に組み込んで正しく映像が再生されて字幕が表示されるのは確認した。環境は Arch Linux + GNOME + Wayland で使ったバージョンは 2.0.0-rc1。
configure は以下の通り。
code:configure.sh
./configure \
--prefix $PWD/build \
--disable-archive \
--disable-live555 \
--disable-dc1394 \
--disable-dv1394 \
--disable-linsys \
--disable-dvdread \
--disable-dvdnav \
--disable-bluray \
--disable-opencv \
--disable-smbclient \
--disable-dsm \
--disable-sftp \
--disable-nfs \
--disable-smb2 \
--disable-v4l2 \
--disable-decklink \
--disable-vcd \
--disable-libcddb \
--disable-screen \
--disable-vnc \
--disable-freerdp \
--disable-realrtsp \
--disable-macosx-avfoundation \
--disable-asdcp \
--enable-dvbpsi \
--disable-gme \
--disable-sid \
--disable-ogg \
--disable-shout \
--disable-matroska \
--disable-mod \
--disable-mpc \
--disable-wma-fixed \
--disable-shine \
--disable-omxil \
--disable-omxil-vout \
--disable-rpi-omxil \
--disable-crystalhd \
--disable-mad \
--disable-mpg123 \
--disable-gst-decode \
--disable-merge-ffmpeg \
--enable-avcodec \
--disable-libva \
--disable-dxva2 \
--disable-d3d11va \
--enable-avformat \
--enable-swscale \
--disable-postproc \
--disable-faad \
--disable-aom \
--disable-dav1d \
--disable-vpx \
--disable-twolame \
--disable-fdkaac \
--disable-a52 \
--disable-dca \
--disable-flac \
--enable-libmpeg2 \
--disable-vorbis \
--disable-tremor \
--disable-speex \
--disable-opus \
--disable-spatialaudio \
--disable-theora \
--disable-oggspots \
--disable-daala \
--disable-schroedinger \
--disable-png \
--disable-jpeg \
--disable-bpg \
--disable-x262 \
--enable-x265 \
--enable-x264 \
--disable-x26410b \
--disable-mfx \
--disable-fluidsynth \
--disable-fluidlite \
--disable-zvbi \
--disable-telx \
--disable-libass \
--enable-aribsub \
--disable-aribb25 \
--disable-kate \
--disable-tiger \
--disable-css \
--disable-gles2 \
--without-x \
--disable-xcb \
--disable-xvideo \
--disable-vdpau \
--disable-wayland \
--disable-sdl-image \
--disable-freetype \
--disable-fribidi \
--disable-harfbuzz \
--disable-fontconfig \
--disable-svg \
--disable-svgdec \
--disable-directx \
--disable-aa \
--disable-caca \
--disable-kva \
--disable-mmal \
--disable-evas \
--enable-pulse \
--disable-alsa \
--disable-oss \
--disable-sndio \
--disable-wasapi \
--disable-jack \
--disable-opensles \
--disable-tizen-audio \
--disable-samplerate \
--disable-soxr \
--disable-kai \
--disable-chromaprint \
--disable-chromecast \
--disable-qt \
--disable-skins2 \
--disable-libtar \
--disable-macosx \
--disable-sparkle \
--disable-minimal-macosx \
--disable-ncurses \
--disable-lirc \
--disable-srt \
--disable-goom \
--disable-projectm \
--disable-vsxu \
--disable-avahi \
--disable-udev \
--disable-mtp \
--disable-upnp \
--disable-microdns \
--enable-libxml2 \
--disable-libgcrypt \
--enable-gnutls \
--disable-taglib \
--disable-secret \
--disable-kwallet \
--disable-update-check \
--disable-osx-notifications \
--disable-notify \
--enable-libplacebo \
--disable-vlc
重要なフラグは以下の通り。
--enable-dvbpsi
MPEG2-TS の demuxer を有効にする
これを有効にしなくても MPEG2-TS を再生できてしまうが、多分 libav の demuxer を使ってるので字幕が表示されなくなると思う
--enable-avcodec と --enable-avformat
libav を有効にする
AAC による音声をデコードするのに使う
--disable-libva と --disable-mfx
ハードウェア支援を無効にする
MPEG2 のデコーダーは腐りがち
--enable-swscale
これを入れないと下に緑のラインが入る
--enable-libmpeg2 と --enable-x265 と --enable-x264
それぞれ映像をデコードするのに使う
ケーブル4K は H.265 HEVC なんだけどこれだと再生できなかった
--enable-aribsub
ARIB STD-B24 による字幕をデコードする
MirakTest ではデコード後にデバッグログへ字幕データをダンプしそれを aribb24.js に渡して表示しているので、字幕を出す為には必須
--enable-pulse
Pulseaudio による音声再生を有効にする
音声の再生は VLC が担当するのでこれを入れないと音が出ない
--enable-libxml2
XML をパースするのに使う
多分要らない
--enable-gnutls
GnuTLS を組み込んで HTTPS なストリームの再生をできるようにする
--enable-libplacebo
フィルタらしい
GUI 周りは要らないので全て無効化、VLC 本体も使わないので無効化。
成果物のあるディレクトリを LD_LIBRARY_PATH に追加して MirakTest を実行すれば多分動くと思う。
現状の問題は libVLC の依存が絶対パスになっている点で、他環境でも同じパスに libVLC を置く必要がある。
また依存ライブラリのバージョンもビルド時が基準になるので、バージョン違いで動かない事がある。まあこれはシンボリックリンクを貼れば大抵は解決するのだが…
これを何とかするには Webchimera.js に libVLC を静的リンクする必要があるのだが、現状は方法が分からずどうしようもないという感じ。
という訳で現状は MirakTest で Linux を公式サポートするのは難しいという話。
これさえなんとかなればという感じなんだが…