ヤバすぎ!マジで使える!オープンソースの安全なファイル変換ツールが最強すぎた
引用元:https://news.ycombinator.com/item?id=43663865
結局全部ffmpegなんだよねー。こんな素晴らしいソフトがなかったら、インターネットはどうなってたんだろう。
今日ffmpegがWASMに移植(トランスパイル?)されたって知ってラッキーだったわ。これは特にその移植版を基に作られてるみたい。
https://github.com/ffmpegwasm/ffmpeg.wasm
このプロジェクトにはインタラクティブなプレイグラウンドがあって、仕組みが説明されてるよ。
https://ffmpegwasm.netlify.app/playground
つまり、ローカルでホストされるffmpegフロントエンドだけど、ネイティブのffmpegより遅くて、ファイルサイズとかのWASMの制限を受けるってこと(画像とか音声なら2GBまでだけど、大きい動画の変換には向かないかも)。
このプロジェクトがそれをどこにも書いてないのが不思議だね。
ここにあるたくさんのコメントの後にウェブサイトが更新されたのかもだけど、概要のところに利用してるライブラリが全部書いてあるよ。
ライブラリ
FFmpeg(オーディオ、ビデオ)、libvips(画像)、Pandoc(ドキュメント)を長年メンテしてくれてありがとう。VERTはそれらを使って変換を提供してるんだ。
たぶん昨日追加されたみたいだね。よかったけど、リンクがないのがまだ変。
https://github.com/VERT-sh/VERT/commit/8f8ea34483cab76e27204…
それマジでそう。作者のFabrice Bellardさんは、1000倍の能力を持つ開発者で、Qemuっていう超重要なソフトも作ったんだよ。
1000倍ってのがマジでヤバいよね。
Minecraft(Bedrock)でQuickJS(彼が作ったJavaScriptランタイム)を使ってるんだけど、そこでもたくさんの開発者がMinecraftを改造するために使ってるんだ。巨大な開発者のピラミッドだよ!
Bellardさんのウェブサイトを見ると、どんなことしてるかざっくりわかるよ。
https://bellard.org/
いつかbedrock editionがeducation editionみたいにmacosをサポートしてくれるといいなー(同じエンジンで動いてるのに)。でもmicrosoftがmojangを買収したのは、それを阻止するためだったんじゃないかって心配してるんだ。
時系列が間違ってるよ。MicrosoftがMojangを買ったとき、PC版のMinecraftはJava Editionだけだったんだ。Windows 10 Edition(今のBedrock on PC)が出たのはその次の年だよ。
勘違いじゃないと思うよ?MicrosoftはWindows 10 Editionを開発するためにMojangを買ったのかもね。そして、Bedrock Editionがめっちゃクロスプラットフォームになったら、macOSだけたまたま見逃した、みたいな。(Education Editionの一部としてポートが存在するのに、Bedrock Editionとして売ってないんだよ。)
いつかそうなるといいね!ラインナップの穴みたいだもん。
え、マジで!?ありえんくらいの生産性だな。マジですげーってなるわ(またしてもインポスター症候群が…)。
なんか、スポーツ、それもプロレベルでやってる人が、オリンピックのチャンピオンと自分を比べるみたいなもんだよね。刺激を受けるのは良いけど、彼らの業績に落ち込まないことが大事だよね。みんな巨人の肩に乗っかってるんだから。
エリートな才能に自分が及ばないってだけでインポスター症候群になるって、なんか変じゃね?今まで自分がプログラミングで世界一だと思ってたのに、そうじゃないって気づいたとか?トップじゃなきゃみんな偽物なの?
もしかしたらそいつは頭が良いけど、ただの怠け者で、くだらないゲームでゴロゴロしてるのが好きなだけなんじゃね?もっとできるはずなのにって気づいた時にそう感じるんだよ、きっと。
みんな気軽にその言葉使ってるだけだから、そんな深く考えなくても良いんじゃない?
あと、TinyCとか、piを計算するBellardの公式とかも。
…それに、LTEの電話規格の完全に動作するSDR実装もね。マジで何でも理解できる人だよ。彼とTorvaldsはマジでずば抜けて優秀な人だよね。
はい、ここでぶっ飛んだアイデア。
彼が作ったものは、ffmpeg(コーデックのスペックを実装)、Qemu(CPUのスペックを実装)、TinyC/QuickJS(CとJSのスペックを実装)、LTE(スペックを実装)。
彼はスペックをコードに変える神であって、プログラミングの神ではない。
せやな。でも、スペックを読んで実装するには、プログラミング、コンピューターサイエンス、数学、物理学の幅広い知識が必要になる。コーデックは難解な数学、エミュレーターはCPUだけでなく周辺チップのタイミング、コンパイラーは学問分野全体、LTEはRFハードウェア、RF伝搬、アンテナ理論が必要。
電気工学かコンピューター工学を学べば普通に学ぶことだし、スペックをコードに変える才能があるだけだよ。すごい開発者だと思うけど、スペックを詳細に記憶できる能力が高いんだと思う。
https://www.bellard.org/ Fabrice Bellardって初めて聞いたわ、教えてくれてありがとね。 pandocがあればドキュメント変換は完璧じゃん? pandoc-wasmってのもあるのか。 マジ世界の不思議の一つだよな。エンドユーザーからNetflixみたいな大企業まで、無料で使えるなんてマジギフト。 実は、ffmpegは伝説のFabrice Bellardのおかげで存在してるんだよね。彼はマジで稀有なプログラマーで、驚くほど有能で、業績の幅広さからして存在の波長が違うレベル。 なんとなくこれ思い出したわ。 ファイル形式のリストから、ffmpegのフロントエンドだってわかったわ。ちょっとがっかり。もう簡単にできるし。3Dモデル形式のコンバーターが欲しかったんだけどな。あれマジでめんどくさい時ある。 最近の調査[0]で、一部の「無料ファイルコンバーター」サイトがマルウェアを注入して攻撃の第一段階にしていることがわかったから、家族のためにサーバーにこういうのを立ち上げたいと思ってたんだよね。 便乗してStirling PDF[0]を宣伝させてくれ。Raspberry Piでdocker composeで動かしてて、PDFを第三者に送らずに編集できるからマジ助かる時がある。 えー、マジ怖いんだけど。どのサイトのことか聞こうと思ってたけど、ここにリストがあったわ。 へー、FBIって詐欺から身を守るためのアドバイスとかもしてんだね。曰く、>“深呼吸して、落ち着いて、よく考えろ”だって。 正直、ffmpegにウェブインターフェースが必要な理由がわかんない。マルウェアの温床になるだけじゃね? うちの70代の機械音痴な両親にはffmpegなんて無理ゲーだわ。 親の数は君より68人以上少ないけど、ffmpegはマジで技術的にムズい。F50企業にトランコーディングのセットアップ売り込んだこともあるし。 どんな技術的な問題? オタクは別だけど。普通の人には無理でしょ。普通の人はいちいちファイルを変換するためだけに、オープンソースのソフトをダウンロードして自鯖でホストしたりしないって。 オタクです。ffmpegでフォーマット変換したり、エンコードし直したりする必要が割とあるんだよね(ミキサーから16bit wavのオーディオトラックが16個出てきて、それを誰かに送ってざっくりミックスしてもらうんだけど、月に1回くらい)。 マジか、ソースコードがちゃんとオープンで手に入るんだね! AGPLライセンスのソフトに対してRPCするライブラリを書くのはどうなの?AGPLのコードを全然変更してなくても? 俺が理解してる限りだと、クライアントには適用されなくて、サービス自体にだけ適用されるんじゃないかな。 ウェブサイトが何を使って作られたのかちゃんとクレジットしてたらもっと良いのにね。 ちゃんと書いてあるじゃん?(i)ボタンをクリックすると、「Libraries」ってセクションがあるよ。 なんでこういうのってホストする必要があるんだろ? 企業戦士たちには需要があるんだよ。彼らはローカルに何もインストールできないから… ウェブの裏に隠されたユーティリティを見つけると喜ぶんだ。 オンラインの変換ツールはもうたくさんあるよね。これはFOSSで少しは信頼できるけど、企業環境にいる人はほとんど気にしないだろうね。 なるほどね、良い指摘だ。 マジでそうなんだよね。前の職場では、ツールの承認プロセスが国勢調査並みのアンケートで、承認まで4〜6週間もかかったんだ。このプロセスでソフトウェアが拒否されたことは一度もなかったよ - ほとんどの人が記入するのを面倒くさがってたんだ。 >なんでそんなもんホストする必要があんの? 俺には当てはまらないな。一番パワフルなマシンはホームサーバーだし、ラップトップはマジでゴミだし。 うちの奥さんのために、こういうのをホームネットワークで色々動かしてるよ。新しいマシンを設定したり、会社のノートPCをゲストネットワークで使ったりする時に、ツールがネットワーク上にあるとマジ便利。 これはクライアントサイドで変換するから、サーバーにデータを送る必要がないんだよね。既存のアプリで満足してるなら、あんま使い道ないかも。でもUI/UXは多くの人に響くと思う。 トラフィックをマネタイズして、サブスクリプションをアップセルするのが難しいんだろね。クライアントサイドで完結するなら、ローカルアプリでいいじゃん。 めっちゃ便利で素晴らしいけど、自動オプトインの解析情報はメインページに書くべきだよ。Plausible使ってるのは良いし、vertがどう使われてるか知りたいのも理解できるけど、なんで設定画面の一番下に隠すの?信用できなくなるわ。ソースコードを監査すれば他のサプライズも見つけられるけど、そういう問題じゃないんだよ。これは提案/フィードバックとして受け止めてください。それ以外は、マジで便利で使いやすいプロジェクトおめでとう! 常識的に考えて、 これって、FFmpegのUIとしては最高だよねー。もうちょいランディングページでアピールしてほしいな。 設定にはちゃんと書いてあるよ。「vertd projectはFFmpegのサーバーラッパーです」って。 オープンソースのライセンスにも、Apacheみたいに帰属条項があってもいいと思うんだよねー。何年もかけて作ったものなら、ちゃんとクレジットされるべきじゃん? Vertって、https://ffmpeg-web.netlify.app/ の упрощенный バージョンみたいな感じ? 違うよー。サーバーで動画を処理してるんだよ。 たぶん、これ使ってるのは: これはブックマークしとこ。 これもおすすめ:ConvertX 動画試したら、”invalid digit found in string”って出た。termuxでffmpeg使うわ。 AVC/HEVC mp4エンコードで、デインターレースやリサイズみたいなビデオフィルター、あとebu R128みたいなオーディオフィルターも使えるカスタムプリセットに対応してるバージョンってあるかな? あと、普段cinefrom/mov形式を使うんだけど、なぜかうまくいかないんだよね マジでいいね! こういうの長年欲しかったんだ。中小企業でファイルの変換のためによくわからないウェブサイトを使う代わりに、シンプルなオープンソースのツールを使えたら最高じゃん。検索エンジンの結果からのトラフィックを、例えばプロキシを使って社内ツールにリダイレクトできるし。 お願いだからHEICを追加して! iPhoneのデフォルトのファイル形式なんだから これってただのffmpegを使ってて、比較的最近サポートが追加されたみたいだね。 libvips(このツールが使ってる画像処理ライブラリ)のwasmビルドには、特許の問題でHEICが含まれてないんだって。 vert.shにHEICのサポートが追加されるのはマジで最高だと思う。ImageMagickのmogrifyコマンドを使えば、HEIFをJPGに変換できるよ。 そうそう、これが一番よくあるウェブ変換なんだよね。HEICからJPGへ 自分も似たようなことをffmpeg WASMを使ってブラウザでやったことあるけど、残念ながら限界があるんだよね。重い処理はマジで無理。 制限要因は何なの? ブラウザのVMメモリが少ないとか? ffmpegをWebAssemblyにコンパイルして、ビデオ変換をオフラインで処理することもできるんじゃない? それ、まさにこれのことじゃん? それ、ウェブサイトに書いてあることと違うくない? 引用した文のリンク先を見れば、理由が書いてあるよ。 いいね。これにオプションでyt-dlpのサポートがあったら最高だな。もっとコメントを表示(1)
このプロジェクトのリストを読むと、マジで謙虚な気持ちになるわ。俺もずっとこういうの作りたいと思ってたんだよね。
ffmpegを作って、QEMUを発案して、モバイル/セルラー通信の達人なんだぜ。
https://en.wikipedia.org/wiki/Fabrice_Bellard
https://newbeelearn.com/tools/videoeditor/
これもffmpegのコマンドを出力するみたい。
まさに探してたものだわ。
[0] https://www.fbi.gov/contact-us/field-offices/denver/news/fbi…
[0] https://github.com/Stirling-Tools/Stirling-PDF
https://www.helpnetsecurity.com/2025/03/18/fbi-free-file-con…
コマンドラインはChatGPTに聞いたりする。「Aを左、Bを右にして2つのトラックを1つのステレオトラックにしたい」とかマジ便利。
https://github.com/VERT-sh/VERT
AGPLライセンスってのが、この手のプロダクトにはピッタリみたい。
AGPLってのは、Free Software Foundationが作ったフリーソフトのライセンスの一種で、GPLと似てるけど、一つ大きな違いがあるんだって。
ネットワーク利用条項ってやつで、AGPLライセンスのソフトを改造して、ウェブアプリとかAPIみたいにネットワーク経由で使うなら、それを使うユーザーにもソースコードを公開しなきゃいけないんだってさ。
GPLだと、ソフトを配布するときだけコードを共有すればいいけど、AGPLだと、SaaSみたいにインターネットでアクセスするだけでもコードを共有しなきゃいけないんだって。AGPLはGPLの抜け穴を塞ぐために作られたらしいよ。
もっと詳しく知りたいなら、ここ見てみて。
https://opensource.stackexchange.com/questions/7578/what-are…もっとコメントを表示(2)
俺のラップトップにはいくつかファイル変換アプリが入ってるよ。そっちの方が速くて良いし、データをどこかに送って処理してまた送り返してもらう必要もないし、バカみたいじゃん。
クラウド化が進む理由として見落とされがちなのは、企業ITからの脱出手段になるってことだよね。20MBのファイルを3000kmも離れた場所に送って、簡単な処理をしてもらい、送り返してもらう方が、アプリのインストール許可を得るより簡単なんだ。
社員とかがローカルにインストールできないからじゃん?
ウェブホスト型ソリューションの実用性を否定するのは、ただの反抗期かマジで視野が狭いだけだろ。
>ウェブ展開で何が出来るんだ?
ローカルインストールを避けたい人もいるかもだけど、そういうのって稀じゃね?ffmpeg
を直接扱うスキルがない人もいるんだよね。昔、親父が簡単にファイルを変換できるように、ffmpeg
を使ったウェブサイトを作ってホストしてたんだ。今はvert.shがあるからもう必要ないけどね!
“タダで製品を使ってるなら、自分が商品なんだよ。”
グラフィックカードとか積んだサーバーで動画変換を無料でホストしてるのが、ちょっと気持ち悪いって思うのは俺だけ?Plausibleでデータ収集してるだけじゃ、長期的にサポートできるとは思えないんだけど。何か見落としてる?
Edit: package manager経由でライブラリ使う場合は”リンク”って扱いで、派生物にはならないかも。Apacheの条項も適用されない場合が多いかもね。もっとコメントを表示(3)
>デフォルトでは、動画はサーバーにアップロードされて処理されます。ローカルでの設定方法はこちら。
>サーバーもオープンソースだよ:https://github.com/VERT-sh/vertd
・libvips (wasm): 画像変換用
・ffmpeg (wasm): 音声変換用
・ffmpeg (remote, via vertd): 動画変換用。ホスト側でwasm ffmpegを使うオプションもあるけど、性能とかファイルサイズに制限がある。
github見てると、対応してないフォーマットは大抵、wasm libvps/ffmpegにフォーマットを処理するライブラリをリンクするのが難しいのが原因みたい。
動画変換でサーバーにアップロードが必要なら、ffmpeg直接叩いた方が良くない?ファイルサイズ大きいとアップロードとダウンロードで時間かかりそうだし。でも、動画変換がWASMだけで完結するようになれば、そういう問題もなくなるかもね。
https://github.com/C4illin/ConvertX
画像、動画、ドキュメントとか。
https://trac.ffmpeg.org/ticket/6521
https://git.ffmpeg.org/gitweb/ffmpeg.git/commit/a0821345eb31…
https://github.com/kleisauke/wasm-vips/issues/3
AVIFとJXLはサポートしてるみたい。AppleがHEICを見捨ててくれるといいんだけどね。
mogrify -format jpg -quality 90 ”$INPUT_FILE”
https://vididoo.vercel.app/
https://github.com/VERT-sh/VERT/blob/2c8cb1922cf611489022645…
で、@ffmpeg/ffmpeg
はhttps://ffmpegwasm.netlify.app だって。
もしsupportedFormats
配列をちょっと調整して動画形式を追加したら、多分うまくいくんじゃないかな。
>Video uploads to a server for processing by default, learn how to set it up locally here.”だって。
サーバーのコードもオープンソースみたいだよ。
https://github.com/VERT-sh/vertd