超強力な一括 マルチエンコード機能を実装し、色々なフィルタも使えちゃう アンドロイド用 完全無料 動画圧縮変換アプリ を作成しちゃいました。
対応エンコードコーデック: H.264、H.265、VVC、VP9、AV1、MPEG1、AAC、OPUS、FLAC、MP3
ということで出来上がったのが、VideoTransBatchです。
圧縮効果です。
元動画となります。
1時間19分 1.72GB
コーデック:H.264
解像度:1440x1080
FPS:29.97
AAC:128
エンコード結果です。だいたい、9分の1ぐらいですか。
1時間19分 181MB
コーデック:AV1
品質:47
解像度:1280x720
FPS:16
AAC:64
かなり圧縮しましたねー。 AV1は、凄いです。
エンコードに 30分 かかりました。
処理したのは、ZenFone7 Pro です。
最近、仕事でインフラばっかりやっていたので、コードを書くことが少なくなっていました。
なので、コーディング能力をキープしておく一環としてアプリ作りをしてたんですよ。
FFMPEGを色々と調べていた時に、Androidに移植する知見を得ていたので、これを実装してアプリにしてみよーかなと思い作成しました。
Androidアプリは、GUI作成が大きく進化していて、JetPackComposeといった流れになっているので、これでやっていくことに決めました。
JetPackComposeは、SwiftUIみたいにコードベースでGUIを作成していきます。最近のトレンドなんでしょうね。
世には動画変換アプリが、さまざまあるようなので埋もれてしまうかも知れませんが、なんとか唯一無二の機能を実装して他との差別化も頑張ってみたいものです。
AIのGeminiと相談したら、これで良いんじゃないと言われたのでそうしました。
日本語名も考えましょうかね。
アイコンとかも作ってもらいました。
いや、AIって凄い、前は、アイコン作りとかって、本当に面倒だったんですよね。
Geminiに注文付けていったら、良い感じのが出来ました。
VVCって、H.266なんですね。
なんか凄そうだったので対応しましたけど、めちゃくちゃエンコード処理に時間がかかります。
多分、実用出来ないレベルだと思うので、スマホのベンチマーク測定用にでも使って下さい。
デコードは、FFMPEG7.1.1が対応している物でしょうね。
MOV形式にも対応しているので、AndroidからiPhoneへ動画を渡す時にも対応出来ます。
このサンプルは、AV1 エンコードですね。別のエンコードは、パラメーターが違うのですが、基本的に右側が高性能ということに統一しています。左にパラメータを寄せると低品質、高速処理、容量が下がります。この辺りのバランスを取れば良い結果が得られます。
品質は、右側が高品質です。高品質になると容量が大きくなります。
presetは、処理の複雑さです。右側が複雑です。複雑になるとエンコード時間が多くなりますが、ブロックノイズが軽減されます。
AACビットレートは、音声の品質です。右側が高品質です。高品質になると容量が大きくなります。
タイトル通りバッチ処理対応しています。変換に時間がかかる動画は、順次処理していくので、夜中に開始して朝方に完成といったところでしょうかね。
変換処理は、凄い電池を使うので、電源供給はしておいて下さい。
バッチ画面を表示させておけば、OSに停止させられないようにしています。
まだまだ、公開して浅いので、頑張って更新していきます。
出来るだけ、最新FFMPEGに対応してみますね。
といことで、あれから、色々と機能を追加していきました。
Jet Pack Compose が使い易いので、簡単にGUIが改造出来ます。
Swift UI も、使ったことがあるのですが、こっちの方が、使い易かったです。
まだまだ、Swift UIもJet Pack Compose も、修行が必要そうですけどね
で、追加機能ですが、動画プレビュー、時間切り出し、回転、解像度変更、ストリームオン オフ コピー、一括選択エンコード等です。
まだ、思いついたら機能追加していきたいと思います。
ということで、フィルタ機能を追加しました。
ビデオフィルタを選択すると一覧が表示されるので、適当なアイテムをタップすると追加されます。
追加されたアイテムをタップすると効果を確認することが出来ますよ。
右のは、Edgedetect ですね。よくわからないまま、実装しまくってます。
詳しくは、FFMPEGの公式を参考にして下さい。
フィルタは、上から順番に処理するようなので、順番を入れ替えると効果が変化するようです。
w3fdifとかyadifとかは、インターレース解除フィルタなので、動きに縞模様が出る場合、軽減出来ますよ。
おもしろいフィルターとかもあるし、実用的なものもあります。
色々試して遊んでみて下さい。
タイムラインの上に、30分毎のスナップショットを表示するようにしたのと、タイムラインをピンチズーム対応にしました。
これで、タイムラインのスケール変更が出来るので、便利になりましたよ。
カメラのマークは、スナップショットを撮ってギャラリーに保存します。