Avalonia UIでクロスプラットフォームGUI開発を試す
自分は基本、普段からLinuxとWindowsを行ったり来たりすることが多いので、昔からクロスプラットフォームでGUI開発が楽にできる開発環境に興味があります。
クロスプラットフォーム開発ができると、両方の環境でちょっと不便なことを解決する為のツールをサクッと作れるのでとても便利です。
以前、Delphi互換のObject PascaのLazarus IDEを使ってクロスプラットフォーム開発を試し、その成果として幾つかアプリを公開していたりもしています。
今回は、Avalonia UI (現在v0.10.18)というWindowsのC#/WPFにとても良く似た感じで開発できるクロスプラットフォームのUIフレームワークを使って(試して)みました。Windows環境では普通にVisualStudioにアドオンを追加するだけでWPFのように開発できます。
作ったのは、動画ファイルにカバーアートというか、サムネイルを埋め込むツール。シンプルで簡単にできる丁度よいのが無かったんですよねぇ。
できたのはこんな感じ。
ウィンドウに画像と動画のファイルをドロップして、保存ボタンを押すだけでMP4/MKVの動画にカバー(ジャケット画像)が追加され、エクスプローラーなどでアイコン表示の際にサムネイル表示されるようになります(WindowsだとMKVのサムネイルは表示してくれないですが)。
この程度(規模)のアプリだと、一日でサクッっと作れてしまうのが良いですね。(勝手の知ったWPFであれば小一時間もあれば作れたけど)
自分はメディア系のファイルはLinuxで管理しているので、動画ファイルもLinux環境にあります。なので、WindowsとUbuntuの両方の環境でこのツールが欲しかったのです。
ただ、Windows環境で開発して、Linux(Ubuntu)環境でコンパイルして動かしてみたら、普通に起動するのだけど、ファイルをドロップしても何も反応がありませんでした。調べてみると、Avalonia UIは現状、エクスプローラーなどからのドロップはWindowsとMacでしか対応していない、とのこと。Orz
Orz
一応、下記にソースも置いてあります。
ということで、残念ではありましたが、いろいろと実際の知見が得られつつ、とても楽しい一日でした。
現状、Avalonia UIの難点は、
・Avalonia UIがまだマルチバイト系の文字のテキスト入力に対応していない(対応フォント指定か埋め込みも必要?)、ということw >(追記V0.11で対応!)
・Linux環境でフリーなIDEがない?のでデバッグが不便(簡易デバッグツールがアプリ自体に内蔵しているみたいだけど)。
厳しいことを言うと、あともうちょっとなぁ、というところ。
利点としては、モダンなUIのクロスプラットフォームGUIアプリをVisual Studio統合開発環境を利用して楽に開発できる、ということでしょう。
今後に期待、というところですね。
* 因みに、Ubuntu のFilesで動画ファイルのサムネイルを表示させるには、
sudo apt install ffmpegthumbnailer
をしてやる必要があります(たしか動画コーデックのライセンス関係のせいで)。場合によってはgstreamerも入れなくてはいけないので、
sudo apt install gstreamer1.0-libav
も。
で、サムネイルを動画から自動生成するだけではなく、もしタグにあればその画像を優先表示させるようにするには、
/usr/share/thumbnailers/ffmpegthumbnailer.thumbnailer
にある設定ファイルで、ffmpegthumbnailerのオプションに -m を加えてやる必要があります。
Exec=ffmpegthumbnailer -i %i -o %o -s %s -f -m
な感じです。
その他、今回動画のタグ周りの件について色々と調べてみた結果をまとめました。