夏休みの自由研究 MP4-Gif変換のWEBアプリをRender.comで公開!
Render.comでMP4-Gif変換のWEBアプリを公開しました。
良かったら使ってみてください。
MP4-Gif変換のWEBアプリ
※起動に少々時間がかかります。
使い方
①「MP4ファイルを選択」で、エクスプローラーが開く
② GIFに変換したいファイルをエクスプローラーで選ぶ
③ プレビューの下のスライダーを動かして開始時間と終了時間を選ぶ
※開始時間と終了時間は、それぞれの欄に数字を入れても選択可能
④フレームレートを選ぶ(少ない方が容量が減るけどカクカク動く)
※10か15フレームが良いかも
⑤横幅を選択。(縦幅は自動でスケール)
⑥高品質モードを選択(高品質は容量が大きいけど奇麗)
⑦GIFに変換をクリック
⑧GIFに変換されたものがプレビューされる
⑨問題なければ「GIFダウンロード」でダウンロード
※15分以内に、変換されたGIFを取らないと消去されちゃうかも
※長い動画の変換は失敗するかも

Renderで公開への道
Renderは、フリープランのあるホスティングサービスです。
登録の仕方などは、こちらを参照。
前にGif秒数カウンターをRenderで公開しましたが、今回は複雑なので難度が高いかもね。。。あんまり自信なし。AIたちが何とかしてくれるだろう。
Githubに公開用のリポジトリを作る
公開用のリポジトリにMP4-Gif変換のソースコードをプッシュします。

render.yamlを作る
render.yamlというファイルを作ります。
このファイルが、Renderに対してインフラの構成を指示する設計図(Blueprint)になるみたいです。(AI談)

Renderでのディプロイ手順
①GitHubにプッシュ
公開用のリポジトリに、プロジェクト全体をプッシュします。
render.yamiも忘れずにプッシュ。
②RenderでBlueprintを作成
Renderにログインして、Add new > Blueprint を選択します。

新しく作ったGithubの公開用リポジトリのアドレスを下のPublic Git Repositoryで指定します。

Pythonのバージョン指定は環境にする
pythonVersionキーで指定しているとエラーが出ます。
envVars セクションで環境変数でPYTHON_VERSIONを設定するとなんとかなりました。
pythonVersionで設定はダメ。
services:
- type: web
name: my-python-app
pythonVersion: "3.10" # ❌ サポートされていないフィールド環境変数なら通った。Copilotさんありがとう!
services:
- type: web
name: my-python-app
envVars:
- key: PYTHON_VERSION
value: 3.10③Blueprintをデプロイ
やっとデプロイボタンが出た!

有料プランじゃないとできない
フリープランでは、workerというサービスはサポートしてないとのこと。
結構、時間食ったけど、まあ、しゃーない。
Create background worker mp4-to-gif-worker (service type is not available for this plan)無料プランでできるようにダウングレードする
バックグラウンドと長尺編集を捨てる
Workerを使わなければ、無料プランでいけるらしいです。
バックグラウンド処理や長い動画編集はタイムアウトになる可能性が高くできなくなりますが、そっちは、将来的にVectorでデスクトップアプリ版とかリリースできた時のお楽しみってことで。まあ、そもそも審査が通るかどうかや需要がどれくらいあるか分からんけどね。
render.yamlの大幅な簡素化してapp.pyを修正
バックグラウンド処理に関連するCeleryとRedisをrender.yamlから削除します。Pythonの指定とreqirements.txtでflaskとgunicornをインストールするだけになりました。app.pyも修正します。
ローカルサーバーでテスト
バグ修正に時間がかかりましたが、ちゃんと動きました。

Render.comへ無料プランでデプロイ
GitHubリポジトリへプロジェクト全体をプッシュ
無料プランに対応したコードを、公開用リポジトリへプッシュします。
RenderでWebサービスを作成
Renderダッシュボードにログインし「+New > Web Service」をクリック。

プロジェクトを接続してDeploy!

無事に動きました!!!

変換されたファイルです。

WEBアプリのリンクはコチラ。
