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