generated at
Aviutlの代替となるソフトを作りたい

Aviutlの代替となるソフトを作りたい、という気持ちはある
最近もう少し考えたことがあるので後で書きます
smartphoneからそれなりの分量のものを書き出してアウトライン編集するのはつらいtakker
要件
GitHubで管理
cross-platform
既存のLua scriptを流用できる
undo tree
Vimからとった
ほとんどのツールってundoして後に何か変更を加えると、そのundoした操作をredoできなくなるので、ツリー構造にできるととても便利だと思う
本体機能は最小限にする
pluginやscriptで拡張する
最小限の本体機能ってなんなんじゃろ
こういう動画とテキストを同期させるだけとかトリミングとかそういうかんじなのかな~~
画像や動画をタイムラインに置いて編集はできるようにするとかwogikaze
(カットや図形の追加などの簡単な編集はできる感じで)
何を目的にするかで最小限が違いそう基素
自分はテロップを入れられるのは最小限に感じるけど、テロップが不要なケース(例:映画)だと最小限ではない
じゃぁ起動&プラグイン読み込み=>実行ってことで...()
プラグイン開発者が大変そうw基素
テロップを修飾するだけのプラグインを作りたい人はテロップのプラグインは前提に作りたいかも
超汎用なものを作るぞというモチベーションでない限り、ユースケースを絞った方が良さそうに感じました基素

課題
takkerのクソ雑魚programming skillでは作れそうにない
Aviutl界隈を敵に回しそう(こわい)
杞憂なんじゃないかなぁ(超少数の過激派は何か反応があるかもしれないけど)基素
AviUtl勢ですが、むしろ早くAviUtl滅ぼしてくれって思ってます綾坂こと
Undoってどうやって実装すればいいんだろう?
react的思考だと、操作ごとに全体のstateを保持するとか?
メモリ効率とか考えるのであればdiffに圧縮するとか
scrapboxを参考に、Gitっぽく管理するか?
Gitの内部実装を理解しなきゃ(白目)
でもなんだかんだ言ってこれが早そう
原理的にはGitって単に全ての時点に於ける全ファイルを複製して保存しているだけなので、それ自体はあまり参考にならないと思う
といってもその圧縮だったり、キャッシュだったり、ツリー構造だったり、いろいろ面白い要素があるから、そのうちのどれかを指しているかもしれないが
windowの位置その他も全て設定ファイルで保持しておけば、行けそうな気もする
方法
全ての操作を可逆操作にする
undo時に逆操作を適用する
操作適用前のファイル状態を保持する
上で考えているアプリケーション側の設計もハードルだけど、加えてUIに落とし込むときにもここは結構難しそう基素
動画編集ってどうやって実装すればいいんだろう?
動画出力
画像
パラパラ漫画の要領で画像を出力し、FFmpegに渡せばなんとかなりそう
音声
どうやって合成するんだ?
そういうlibraryはありそうな気がする
x265guiExとかのソースコードを読んで理解を深めると良さそう?
動画preview
シーンごとに画像を保持する?
パーツごとにマウスクリックの当たり判定を作る必要がある
windows onlyならもう少しlibraryの幅が広がりそうだけど、cross-platformは捨てたくない
今年度の未踏ジュニアで映像編集ソフトのフレームワークを作るというプロジェクトがあるはず(公開情報)blu3mo
>動画編集ソフトウェアを誰でも簡単に作れるようにしたい!という目標のもと、フレームワークを開発していきます。https://note.com/momeemt/n/n7ebfc7792788
/momeemt/動画編集project fileの共通規格とかでtakkerのページ等言及されてる
マジだ全然気づかなかったtakker
方向性が被るならmomeemtさんのprojectにcontributeしたいな
いいじゃん そういう無理そうに感じる挑戦好きだよyuta0801
自分もよくやる(だいたいすぐモチベーションが尽きてやめちゃうけど)
逆に(自分なら)モチベーションが供給できれば多少は続くので高めていきたいな
ところでクロスプラットホーム開発ならRust+WebAssemblyなんてどうです?
早速無理難題を押し付けていくスタイル
実用的なものが作れなくても最低限動かせるだけでエンジニア界隈は沸かせられる(小声)
Rustは興味あるのですが、使ったことはないんですよねtakker
まあvue.jsだって4日間ぶっ通しでゼロから学んで作ったから、使ったことあるかないかはあまり関係ないのですが
2020/10/11 調べ直したら良さそうな気がしてきた
webassembly rust video editing で検索
use caseにもvideo editingが載っていた(code はなかったが)
Video processing with WebCodecsがChromeに追加されたらしい
これはもうやれということなのでは
web broweser上で動画編集するのは処理速度の観点から現実味がなかったのですが、試してみても良さそうですねtakker
考えてたPlatform候補です
desktop application
Qt + C++
Qt自体は使ったことない
cross platformだとは聞いている
速さを求めるならやはりFortramC++だと思う
template meta programmingとconstexprを組み合わせたコンパイル時計算は最高
C++が速いのは事実ではあるけど、UI部分はだいたいどれ使っても誤差レベルに感じる
エンコード周りは流石にUI部分とは分ける構成のほうが良いと思うので
C# + XAML
ゆっくりMovie Makerも同じ構成を使ってるみたい
現実味は一番ある
将来性もある
frameworkはPrism + Uno platformを使う
あとReactiveProperty
ほぼ最初からこれに決まってたやろ!出来レースや!
demerit
情報がない
……だったのだが、超絶親切な人とても詳しいWPF+MVVMの解説記事を書いてくださっている。感謝
viewの状況ならreactだったあるもん いっぱいあるもん いっぱい...
実装の方法とかがね……色々違うし……
あとjavascriptはもう十分堪能したのでお腹いっぱい
そろそろC++風言語に触らせてくれ
C#はJava風ではないか?とツッコんではいけない
そこでRustですよ(ほんとか?)
Rustは結構気になっている
rust/wasmはまだブルーオーシャンですぞい
つまり実用的ではないということだが
ウーン……
これなら行けそう?
あとは/wpf-mvvmに情報をまとめる
web application
メモリ・CPU・GPUを酷使する動画編集に、web appは不向きなんじゃないかな……と思っている
限界まで高速化が要求される
JavaScriptとかいわゆるWeb的な部分は高速化にも限界があるので、基本的にWebAssemblyを使ってネイティブで動かすしかないはず
そもそもscript言語に高速化を求める時点で色々おかしいですし
Luaは例外。あいつは速い
ちなみにChromeのV8は相当速いということでは有名
ただし実行時最適化が聞き始めるまでのラグが大きいので、WebAssemblyとかがある
その前身となったMozillaが策定したasm.jsはそもそもChromeが十分早かったという理由で実装されなかったりしてる
コンパイル時計算以外は全部遅いと思っている(過激派)takker
とはいえ、cross platform化が簡単だという利点があるので、なんとも言えない
たぶん不向き、エコシステムも全く成熟していないし情報が皆無
でも普通にWebで3DCG描画してる猛者とかいたりするので、できないわけではない
強いて言うならばWeb向きじゃないのはエンコード部分で、エンコード自体はできるけど、長時間処理を続けるということがあまり向かないかもしれない
エンコまでやるのは流石に無茶なので、.avi出力までに留めようかと
.mp4などへの出力は、つんでれんこなどの既存のエンコードツールに任せるか、誰かにpluginを作ってもらうかのどちらかですね。
でも編集ソフトだから、あるフレームでのプレビューは多分必要だよね
いや描画じゃなくてエンコードのほうか
そうそう
(ffmpegあたりを使えば普通にできるような気もするけど、まぁ常人向きじゃないか)
ま、そこはpluginに投げます。責務の分離
なるほど。ところでつんでれんこって内部で何やってるんだろう .avi読めるっけ
.aviを適切な設定で.mp4とかに変換してくれます
ということはaviutlを使ってるの?それとも.avi形式を変換するツールが入ってるの?
.aviがaviutlの形式だと勘違いしていた(.ampだっけ)
ということは動画出力までやるということね 理解した
Vue.js
PWA簡単に作れることはわかったけど、ちょっともう触りたくないかも……
独自記法が多くてお腹いっぱい
React.js + typescript
まだやったことない
React Native for DesktopというものをMicrosoftが作っていてだな(まぁReact Native以上に安定してないけど)
う、うーんtakker


目標はこれだけど、ひとまずは簡単なものを作ってみようと考えているtakker
mp4→gif変換やトリミングを行う程度
これでもUI含めなかなか実装が大変だと思う
で、それの前準備として、canvasを使ったプログラムを触ろうと思い、題材としてGifBirdを取り上げた
これのリファクタリングをしている最中で停滞している
classを全部函数で書き換えようとして詰まっている
一気に書き換えようとしたのがよくなかったかなあ
勉強になりそうなので参加してみたいと考えてるwogikaze
できますか?
/takker/GifBirdでやってましたtakker
せっかくですし井戸端にコピーしますね

ぜひタイムラインは"秒"単位で……綾坂こと
AviUtl、タイムラインがフレーム単位なのちょっと困ることがある
音楽の拍に合わせるときとかにずれちゃう

clipchampを使ったことがあるbsahd