全ての女性はひつじなのである。
このもふもふ具合。嫁にしたい。 pic.twitter.com/zGlk6yfxpQ
— Ʊᘄᒐ゙人間/「はるあこんば~た」制作中 (@sheephuman) 2022年10月1日
- ダウンロード先(23/11/11 差し替え)
- Vector
- 更新履歴
- 免責事項
- 画像について
- 制作環境
- 使い方
- FFmpegのパラメータについて
- ffmpegとは何か
- 開発のコンセプト
- 主な用途
- GIFに変換する
- 動画から画像を切り出す
- 最後に
あけましておめでとうございます!
今年も一年よろしくお願いいたします。
このイラストは t/砂雲空風 https://twitter.com/shiyokatadragon 様に書いていただきました。ちょっと女っぽい変な人。
この女性ひつじキャラクターは安倍春明という子でして、砂雲氏が考えて付けたとの事で、このキャラクターをモチーフに動画変換アプリを開発してみました。
参考 しょどーる
13
— t/砂雲空風 (@shiyokatadragon) 2022年12月4日
決めポーズはわりと初期に描いたものを流用していたので フネとトウマはこの一瞬だけ大筆を担いでいる そのあとどうしたのかしら っていうかこれまでどこに隠していたのかしら
「筆のお手入れ」みたいな
お上品な下ネタが好きなんだけどどうかしら(何が pic.twitter.com/2TlLS61PJ4
ffmpeg 5.12を使用しています。
対応OSはWindows11で、TargetOSを指定しているのでWin7までは動きます(動作未確認)。
Vista、XP以下は対象外です。
そのうちLinux向けに書き直してビルドする予定です。
ダウンロード先(23/11/11 差し替え)
Vector
更新履歴
beta_1.1
beta_1.1 1/08 21:27
”ffmpeg.exeが使用中です”というダイアログが表示されて変換出来ないバグの修正。
保存先パスが渡せていなかったバグの修正(凡ミスだった)
しょど~る参上!のwavファイルのパス指定がそのままだったのを修正。
outputDeviceの開放が上手く行われていないかも知れないので終了時にDispose() させてみた。
終了プロセスの実行順を見直し
以上、こっそり上げ直しました(陳謝)。
まだいろいろと軽微なバグが残っているようなので、ヒマを見つけてバグ取りしていきます。
免責事項
Beta版としてとりあえず公開します。とりあえずこのページをReadmeとしておきます。制作には万全の注意を払っておりますが、このソフトを使用した場合の損害について一切責任を負わないものとします。
制限事項
管理者権限で実行するとファイルのドラッグ&ドロップが出来ません。Windows側のセキュリティ制限です。
読み取り専用だとsetting.iniの更新等が出来ませんので外してください。
未だに調整中なのでまだ把握してないバグとかあるかもしれないです。
画像について
画像の著作権はt/砂雲空風 (https://twitter.com/shiyokatadragon)氏にあります。無断での再配布・再利用・商用利用の一切を禁じます。何かに使いたい場合は直接本人に交渉してください。
同梱しているffmpeg
ffmpeg-windows-build-helpers"を使用してffmpegをビルドして同梱していますが、どうも --disable-nonfree にならないのでライセンス上どうなるか分かりません。問題があったら教えてください。non GPLにもしたかったけど。
optionはhelpみて指定したんで上手く行ってる事を祈っています。。。
そして自動的に全部マシマシなのでファイルサイズも肥大化しました。数十時間に及ぶffmpegのビルド作業が全部失敗だったので病む負えずこのようにしております。
開発記録は以下のツイート群にアクセスすると見れます。
ffmpegフロントエンド
— Ʊᘄᒐ゙人間/「はるあこんば~た」制作中 (@sheephuman) 2022年8月15日
WPFで制作中 言語は #CSharp
元ネタ:Twitter用に動画変換するやつhttps://t.co/yRpwYXifeC
ファイルサイズ制限とファイルサイズの圧縮に成功
Twitterに限らず汎用的に使えるようにしたいかな。 pic.twitter.com/w1F2xIF7W2
制作環境
Visual Studio2022 WPFアプリケーション 言語:C#
使い方
対象となるMp4動画ファイルドラッグするかクリックしてファイルを選択すれば変換が始まります。
FFmpegのパラメータについて
このソフトウェアではffmpegのパラメータを自由に編集、保存が出来ます。
Parametersタブは実験的に追加したもので書式に癖はありますが、やってみると面白いかと思います。詳しい使い方は下記へ。
Twitterに動画変換する用のパラメータ
-codec:v h264 -vf yadif=0:-1:1 -pix_fmt yuv420p -acodec aac -y -threads 2
上記をメインウィンドウのテキストボックスに入れてください。
Parametersタブの仕様
Label部分をダブルクリックするとLabel編集モードになります。ESCキーで終了します。
ffmpegのパラメータはWeb上に数多く言及されています。
よくある例
ffmpeg -i input.mp4 output.mp4
このうち
-i input.mp4 output.mp4 の部分をパラメータエディターで使用します。
「Path設定」 内のテキストボックスにてPath指定を行い、
-i {input} {output} とすることで正規表現(Pattaen Match)を使ってファイル置換を行いffmpegにPathを渡す方式になってます。意外とめんどくさいから改善したい
場合によっては別の場所(だいたい一つ上のディレクトリ)に保存されてしまうため、¥直下に何らかの文字列を入れてください。
ダイアログから選択した場合、defaultで Convert_ が自動的に追加されます。
↓こんな感じ
変換に失敗する場合
Note:先頭に "-i" オプションは必ず入れてください。パラメータをソフト側で作成する仕様上、動作しません。 何とか直すかも知れない
Permmission denied と出る場合は管理者権限で起動するか、別の場所に保存するか、先に作成したファイルを削除してください。Windows10以降は面倒になりました。
また、作成したファイルに権限を追加するのもいいでしょう。たぶん読み取り専用属性になっていると思います。
”ffmpeg.exeが実行中ですわ”と出る場合。
なんらかの理由でffmpeg Threadの終了イベントが呼ばれないために起こるエラーです。再起動するか、Log WindowのConvert Stop ボタンを押してください。
特にPermission denied 等の直後に起きるようです。
強制的に動かせるようにしました。この場合はこのチェックボックスを入れてください。
複数のffmpegを動かすとPCがシャットダウンされる恐れもあるので(発熱が酷いから)、このような仕様にしてます。同時に動かしたい場合は複数起動などしてください。
多分パラメータが間違っています。TextEditで拡大して編集すると分かりやすいと思います。
ffmpegとは何か
は動画と音声を記録・変換・再生するためのフリーソフトウェアである
かなり有名なモノで、動画・圧縮関連のソフトウェアであれば大抵は使われています(youtubeにも使われている)。あるアプリを利用したGUIアプリケーションは”フロントエンド”ど称されておりまして、本ソフトもフロントエンドとなります(フロントエンドエンジニアとは?フロントエンジニアの仕事内容と年収)。
開発のコンセプト
元ネタである
【マスコットアプリ文化祭2016応募用】Twitter用に動画変換するやつ | Cloth.moe
が未だに人気で、僕も使ってたんだけどTwitterにアップする動画ってそもそも5秒から2分以内とごく短めに投稿するので、それに対しオリジナルよりもファイルサイズがデカくなってしまうのが最大の不満でした。
それと、(主に若者向けで)人気の割に単機能で作ろうって人も現れないし、自前で作成する事にしました。
自身では初の本格的なWPFアプリケーションです。例によってC#です。たまには他の言語使いたい。
ちなみにdefaultのパラメータは1200kbpsですが、変換元のフレームレートがこの数値より低いと逆にファイルサイズが肥大するため、動画情報も出力するようにしました。
簡単な変換操作のGIFイメージ
主な用途
1.,任意の動画ファイルをTwitterに投稿可能な状態に変換できます。
Parameterを弄っているので本家よりかなり圧縮率が高いです。
2.動画変換だけでなく、任意のParameterを複数保存しておく事で動画ファイルからの画像切り出しやGIF作成などに対応出来ます。
GIFに変換する
このソフトは、ffmpegに渡す様々なパラメータを保存しておく事ができ、簡単な書式で実行することが出来ます。最新版(version 5.1.2)を使用しているため、処理が高速で軽快です。
動画をGIF変換
入力したパラメータ
-i base.mp4 -r 10 output.gif
アプリ上の書式
-i {input} -r 10 {output}\output.gif
[output} などになりやすいので注意してください(間違えるとエラーが出力されます)
動画から画像を切り出す
パラメータを調整しないと大量の画像を生成してしまいますが、動画から画像が切り出せます(別にコマンドラインでもいいけど)。
上が入力パス、下が出力パスです。後でラベル貼っときます。。。。
ここを指定しないとダイアログかエラーが出るようになっています。
ここで試すパラメータ 0〜30秒の間で静止画に変換
-i {input} -ss 0 -t 30 -f image2 -vcodec mjpeg -qscale 1 -qmin 1 -qmax 1 -r 60 {output}\%04d.jpg
{output}\%04d.jpg
{output}の後ろに¥を付けないとルートドライブ直下(C:\とか)に直接書き込んでしまうので注意してください(多分特に問題はないと思う)。後で¥が抜けると動かないようにしときます。。。。
そのままでもあまり問題はないので、適宜 ",mp4" などを削除して使うのがいいと思います。
参考 defaultの場合の画像出力結果
パラメータ
-i {input} -filter:v fps=fps=1/120:round=down {output}image_%04d.jpg
結果 少女終末旅行 Cap8_covert_covert.mp4image_xxxx.jpg
パラメータオプションの参考
やってみたGIF
今回は900枚ほどの画像が一気に生成されてしまいました・・・・まあそんなもんなのかもしれない。
最後に
フリーソフトですが寄付を募っています。PayPayやAmazonの欲しいものリストでプレゼントお願いします。頑張って作ってます(💦)