ガチで本物のAviUtlをスマホで使う方法(当然重い)

# 2024/4/17 追記
なんかL-SMASHプラグイン作ってる人がAviUtlをスマホで動かしてたよ
こっちのほうが信頼できるからこっちでやってみて
https://scrapbox.io/Mr-Ojii/Android%E7%AB%AF%E6%9C%AB%E3%81%A7AviUtl%E3%82%92%E5%8B%95%E3%81%8B%E3%81%97%E3%81%A6%E3%81%BF%E3%82%88%E3%81%86

…あ、ここから飛んてきた？？？？

# 2024/7/16 追記
Mr-Ojii様の記事を参考に、大幅に簡略化しました。
編集ログを遡れば、過去の方法を見られると思います。

# 大　前　提
これはAndroid専用です。
iPhoneの方は諦めるか自力で頑張りましょう。

俺は絶対やんない

# なんでそんなことしようと思ったのか
スマホ用の動画編集アプリって…なんかこう……使いにくくないですか？
数値を直接指定できなかったりするし、当然ウィンドウもない。それと、どうしてもマウスが欲しくなる。

え？俺だけ？？

# 注意事項
こまめにキャッシュを削除しても最終的に**マジで4GB消費します**。
ストレージと時間とネットに余裕がある時にやりましょう。

# やり方

### Step 0
まずはTermuxをインストールしましょう。
GooglePlayでもリリースされていますが、GooglePlayの仕様変更のせいで互換性が大幅に落ちています。
なにか特殊な事情がない限りF-Droidからインストールしましょう。

https://f-droid.org/ja/packages/com.termux/

真っ先に水色の大きなボタンで「F-DROIDをダウンロード」と出ていますが、Termuxを入れるだけであれば不要です。
下の方にある「APKをダウンロード」というリンクで、Termuxを直接ダウンロードできます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691760/9a73516b-30c6-cc26-f683-637b9f8d4fbc.png)


それとお好きなVNCクライアントもインストールしておいてください。
個人的にはRealVNC Viewerが使いやすいです。

https://play.google.com/store/apps/details?id=com.realvnc.viewer.android&hl=ja&gl=US&pli=1

### Step 1
Termuxにパッケージをインストールします。
```bash:termux
yes|pkg update
pkg install proot-distro pulseaudio -y
```

PulseAudioを設定して起動します。
```bash:termux
echo "load-module module-native-protocol-tcp auth-anonymous=true" >> $PREFIX/etc/pulse/default.pa
echo "exit-idle-time = -1" >> $PREFIX/etc/pulse/daemon.conf
pulseaudio --start
```

Termux内から、Androidのファイルへアクセスできるようにします。
```bash:termux
termux-setup-storage
```
このコマンドを実行すると、ダイアログが表示されるので許可します。

Ubuntuをインストールしてログインします。
べつにUbuntuじゃなくDebianでもいいと思いますが大して変わらないと思ってます。
```bash:termux
proot-distro install ubuntu
proot-distro login ubuntu
```

とりあえずこれでスマホからラズパイのLinuxくらいに格上げされました。

### Step 2
Ubuntuに必要なパッケージたちをインストールしていきます

```bash
apt update && apt upgrade -y
apt install wget tigervnc-standalone-server jwm -y
```
途中でタイムゾーンの設定が入って、「Please select the geographic area in which you live. (あなたが住んでいる地域を選択してください。)」と聞かれます。
「5. Asia」と「78. Tokyo」を選択しましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691760/00ffec33-15dc-0029-7bd4-6770947829bd.png)

Hangoverをインストールします。
このソフトは、WineとBox64とFEX-Emuを組み合わせたもので、Windows x86のアプリをLinux arm64で動作させることができます。
こちらから、最新バージョンのHangoverをダウンロードしてください。
https://github.com/AndreRH/hangover/releases/latest
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691760/fb83b6dc-2828-c59e-944a-2b7b64fa5ac4.png)

ダウンロードしたものを、解凍してインストールします。
```bash
mkdir hangover
tar xf /sdcard/Download/hangover_*.tar -C hangover
apt install ./hangover/*.deb -y
```

環境変数を設定します。
```bash
echo "export WINEDEBUG=-all" >> .profile
echo "export DISPLAY=:1" >> .profile
echo "export PULSE_SERVER=localhost" >> .profile
source .profile
```

VNCサーバーを起動します
```bash
vncserver -geometry 1280x720 -xstartup jwm -SecurityTypes None :1
```

Wineを起動します。
```bash
wine cmd /c $'echo WINEPREFIX\u304c\u4f5c\u6210\u3055\u308c\u307e\u3057\u305f\uff01'
```

少し待つと、「WINEPREFIXが作成されました！」と表示されます。

とりあえずこれで最低限Windowsのアプリは動くようになりました。
しかし、このままだと日本語のソフトは文字化けしてまともに使えません。

### Step 3
ということで日本語化していきます。
```bash
apt install language-pack-ja fonts-noto-cjk -y
```
```bash
echo "export LANG=ja_JP.UTF8" >> .profile
source .profile
```
一度
```bash
date
```
というコマンドを実行してみてください。
表示が日本語になっていれば成功です。

Wineにも日本語のフォントをインストールします。
```bash
wget "https://gist.githubusercontent.com/nogajun/6095ed8488ef9449e63dc1ce578ae55e/raw/85ced2a3dd8a8ed960e3de96b2127f960cfc1de6/wine-japanese.reg"
sed -i "s/Ume Gothic/Noto Sans CJK JP/g" wine-japanese.reg
sed -i "s/Ume Mincho/Noto Serif CJK JP/g" wine-japanese.reg
sed -i "s/Ume P Gothic/Noto Sans CJK JP/g" wine-japanese.reg
sed -i "s/Ume P Mincho/Noto Serif CJK JP/g" wine-japanese.reg
sed -i "s/Ume UI Gothic/Noto Sans CJK JP/g" wine-japanese.reg
sed -i "s/Ume UI Mincho/Noto Serif CJK JP/g" wine-japanese.reg
wine regedit wine-japanese.reg
```

終わったら、いよいよAviUtlをダウンロードしましょう。
せっかくなんで(あと面倒なんで)Linuxのコマンドでダウンロードして解凍しちゃいましょう。
```bash
# TermuxのunzipはShift-JISを処理できないので、ubuntuのunzipを使う
apt install unzip -y
exec bash -l
```
```
wget http://spring-fragrance.mints.ne.jp/aviutl/aviutl110.zip
unzip -O sjis -d aviutl110 aviutl110.zip
wget http://spring-fragrance.mints.ne.jp/aviutl/exedit92.zip
unzip -O sjis -d aviutl110/plugins exedit92.zip
```
これでAviUtlがダウンロードできました。
### Step 4
これでおそらくAviUtlが起動するはずです………。
```bash
wine aviutl110/aviutl.exe
# 起動しなかった場合、ダメ元でFEX-Emuで実行してみてください。
# ただしBox64の倍重いです。
# env HODLL=libwow64fex.dll wine aviutl110/aviutl.exe
```
VNCクライアントを開いて確認してください。
うまく行ったなら、スマホでAviUtlを動かすのは成功です！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/691760/a0e44c08-a281-f571-9f09-b9940a983639.png)

# 次回起動する場合
以下のコマンドを実行してください。
```bash:termux
proot-distro login ubuntu
vncserver -geometry 1280x720 -xstartup jwm -SecurityTypes None :1
wine aviutl110/aviutl.exe
```

# おまけ
### GPUエンコード
無理です。
Androidには、Java用のGPUエンコードAPIはありますが、Linuxソフトには公開されていません。
なのでマジでどうしようもないです。
(そもそもArm64向けのGPUエンコードAPIに対応してるとは思えないが)

### L-SMASH Works
入れれば普通に使えます。
https://github.com/Mr-Ojii/L-SMASH-Works-Auto-Builds/releases/latest
ここから`L-SMASH-Works_[バージョン]_Mr-Ojii_Mr-Ojii.zip`をダウンロードします。
プラグインのフォルダに解凍します。
```bash
unzip -O sjis -d aviutl110/plugins /sdcard/Download/L-SMASH-Works*.zip
```
これで、いろんなコーデックのデータを読み込めるようになります。

### patch.aul
入れれば普通に使えます。
しかし、OpenCLは使用できません。(Wine環境の中に`OpenCL.dll`が無い)
また、AVX2最適化はx86用のものなので、arm64ではあまり性能向上は期待できないと思います。
とはいえメインはバグ修正なので入れる価値は大いにあります。
https://scrapbox.io/nazosauna/Visual_C++_%E5%86%8D%E9%A0%92%E5%B8%83%E5%8F%AF%E8%83%BD%E3%83%91%E3%83%83%E3%82%B1%E3%83%BC%E3%82%B8%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B
これに従ってVisual C++ランタイムをインストールしてください。
https://github.com/nazonoSAUNA/patch.aul/releases/latest
ここから最新のpatch.aulをダウンロードします。
プラグインのフォルダに解凍します。
```bash
unzip -d aviutl110/plugins/ /sdcard/Download/patch.aul_*.zip
```
```bash
# 警告ポップアップを止めたいとき
# 一度起動して設定ファイルが作成されたあと、AviUtlが閉じているときに書き換える必要があります
sed -i 's/"fast.cl" : true,/"fast.cl" : false,/' aviutl110/plugins/patch.aul.json
```

### Boostプラグイン
なんと使えます。ちゃんと爆速になります。~~patch.aulもDirectXかVulkanで高速化してほしかったなぁ~~
https://aviutl.techblog.jp/archives/aviutl_plugin_boost.html
ただし、いろいろ面倒な作業が必要です。
https://github.com/MastaG/mesa-turnip-ppa
Termux:X11とTurnip Vulkanドライバーをインストールして、
https://github.com/doitsujin/dxvk?tab=readme-ov-file#how-to-use
DXVKをインストールして、
これで使えるようになります。
全部書いたら記事の長さが倍になるので説明はしません。

### AVI出力(マルチスレッド)
動作はしますが効果があるコーデックは使えません。

### 拡張x264出力
使用できません。
.NET FrameworkおよびMonoをインストールできないため、GUIを表示しようとするとエラーになります。
出力しようとするとフリーズします。

### かんたんmp4出力
これも無理でした。

### ffmpegOut
起動さえしません。

### AVI出力コーデック
出力テストに使用した動画
https://youtu.be/miW9MVahIIA
x264 AACで78MB程度です。

#### 無圧縮
できないわけ無いですが、信じられないくらいサイズが大きくなります。
720p30FPSの動画で1分あたり5GBになります。
上の動画では18GBくらいのサイズになりました。

#### YUY2
無圧縮よりは小さくなります。
11GBくらいのサイズになりました。

#### x264 VFW
インストールすれば普通に使えます。GUI設定も開きました。
インストールするのは32bitだけで大丈夫だと思います。
Ultrafast, CRF23で221MB程度のサイズになりました。

#### HuffYUV
認識されませんでした。

#### Ut Video Codec Suite
インストールすれば普通に使えます。
2.5GBくらいのサイズになりました。

#### Lagarith Lossless Video Codec
インストールすれば普通に使えます。
1.7GBくらいのサイズになりました。

#### MLC Codec
インストールできませんでした。

####
使用しているオブジェクトやエフェクトによると思いますが、無圧縮とx264以外の各種エンコーダで出力の速度は変わりませんでした。(Snapdragon 8 Gen 2で7~11FPS程度)
x264の場合、Ultrafastで7~9FPS程度でした。Mediumでは4~6FPS程度です。

### 日本語入力
コピペでどうにかなりますが、LinuxのIMEも使用できます。
簡単にインストールできるのはFcitx Anthyです。
```bash
apt install fcitx-anthy -y
echo "export GTK_IM_MODULE=fcitx" >> .profile
echo "export XMODIFIERS=@im=fcitx" >> .profile
echo "export QT_IM_MODULE=fcitx" >> .profile
echo "export DefaultIMModule=fcitx" >> .profile
echo "fcitx-autostart &> /dev/null &" >> .profile
source .profile
```
しかしAnthyは非常に…使いにくいので、どうにかしてMozcを入れたほうがいいです。(すまほ→酢真帆 みたいな感じでとにかくすごい)
そんなに難しくないのでやりたい方は自力でどうぞ。

# さいごに
PC使ったほうがいいのは確かにそうです。
でも世の中にはPC持って無くてスマホしか渡されてない人もいるんです。
そんな人の、ちょっとした踏み台になれればな〜と思ってます。

# 参考
https://scrapbox.io/Mr-Ojii/Android%E7%AB%AF%E6%9C%AB%E3%81%A7AviUtl%E3%82%92%E5%8B%95%E3%81%8B%E3%81%97%E3%81%A6%E3%81%BF%E3%82%88%E3%81%86

https://github.com/AndreRH/hangover?tab=readme-ov-file#packages

https://sosakubiyori.com/aviutl/#intro

https://github.com/Mr-Ojii/L-SMASH-Works-Auto-Builds/releases/latest

https://scrapbox.io/nazosauna/Visual_C++_%E5%86%8D%E9%A0%92%E5%B8%83%E5%8F%AF%E8%83%BD%E3%83%91%E3%83%83%E3%82%B1%E3%83%BC%E3%82%B8%E3%82%92%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B

https://github.com/nazonoSAUNA/patch.aul/releases/latest

https://aviutl.techblog.jp/archives/aviutl_plugin_boost.html

https://github.com/MastaG/mesa-turnip-ppa

https://github.com/doitsujin/dxvk?tab=readme-ov-file#how-to-use

https://aviutl.info/ennko-do/