ezffmpegについて

ezffmpegはffmpegの機能のうちで比較的(私が)よく使う動画変換機能に限定したフロントエンドです。
ffmpegはいろんなことができますが、私が使うのはそのうちのほんの一部の機能だけです。それなのに、たまにしか使わないから毎度引数を 確認している。それなら自分が使う機能だけのフロンエンドがあれば便利だと思って作ったものです。
当然ながら、python3やffmpeg(ffprobeを含む)がインストールされていなければ動作しません。(windows実行形式はpython3を別途インストールする必要はありません)

ezffmpeg-7.5.4.tar.gz
ezffmpeg-7.5.4.zip
ezffmpeg-7.5.4-win10.zip

・上の2つは圧縮形式が違うだけで同じものです。 インストールは圧縮ファイルのまま、pip install ezffmpeg-(version).tar.gzなどとします。 実行は端末やコマンドプロンプトからezffmpegと打てばよろしいかと思います。インストールしてもランチャーに登録されることはありません。
なお、pythonのvenvで別の環境にインストールすることをおすすめします。直接インストールしてもpipで削除できますが、一緒にインストール されたpillowモジュールは別途削除する必要があります。

・ezffmpeg-(version)-win10.zipはpyinstallerで固めた windows10(64bit)用の実行形式をzip圧縮したものです。解凍後に生成されるezffmpegディレクトリ内のezffmpeg.exeを実行します。
ezffmpegディレクトリ内に実行に必要なpython環境やモジュールが入った状態なので、使用者側でpython環境すらインストールする 必要がありません。(ffmpeg等は必要ですが)ある意味一番お手軽かも。ただ、Windows環境で実行すると、表示面(wait_tips,タブ色) で期待した動作をしない部分があります。
なお、--onefileオプションをつけて1つのexeファイルで生成しようとしましたが、ヘルプ画像が表示されないので諦めました。

1.このフロントエンドでできること

(1)元動画から出力先の動画に格納すべきストリーム(映像、音声、字幕)を選択できます。
ただし、出力先のコンテナによっては選択したストリームの全部又は一部が格納されない場合があります。

(2)元動画の一部を時間切り出しできます。
切り出しを開始する時間と切り出す時間長を指定します。時、分、秒で指定しますが、秒単位で正確に切り出しできるわけではありません。

(3)映像コーデックを変更できます。
コーデックの指定方法は、コンボボックスで選択(選択したコーデックをさらに編集)するか、直接入力します。 出力先ファイルの拡張子によって対応可能な主なコーデックがコンボボックスの選択肢にリストされます。 ただし、コーデックの編集や出力先のコンテナの選択により、指定したコーデックが未対応となる場合があります。 なお、コーデック選択肢のうち'libx264 -profile:v baseline -level 3.0 -pix_fmt yuv420p'については、mp4コンテナで標準的な (ほとんどのプレーヤーで再生可能な)コーデックの指定の例です。

(4)映像の解像度を変更できます。
アスペクト比を維持した変更に限ります。元動画の解像度を元に主な解像度がコンボボックスの選択肢にリストされますが、 直接入力することも可能です。ただし、直接入力の場合は、映像の横幅又は高さのいずれか一方を指定し、他は-1と指定します。

(5)映像領域の一部を切り出しできます。
切り出し開始位置(x,y)と切り出すサイズ(w,h)を指定します。

(6)音声コーデックを変更できます。
コーデックの指定方法は、コンボボックスで選択(選択したコーデックをさらに編集)するか、直接入力します。 出力先ファイルの拡張子によって対応可能な主なコーデックがコンボボックスの選択肢にリストされます。 ただし、コーデックの編集や出力先のコンテナの選択により、指定したコーデックが未対応となる場合があります。

(7)音声ボリュームを補正できます。
元動画の音声ボリュームから増減する値(dB)を入力します。ボリュームアップなら+の値。ダウンならーの値です。

(8)その他

1)ffmpegの実行コマンドラインをクリップボードにコピーできます。
クリップボードに出力されるのはボタンが押された時点のコマンドラインですので端末などからそのまま実行すると エラーとなる場合があります。例えば出力先が指定されていなければ出力先のないコマンドラインが生成されますので、 そのまま端末などから実行するとエラーとなります。

2)実行中の変換作業を中止できます。
中止ボタン(変換実行ボタンを上書きします)により中止します。中止した場合の出力先ファイルの状態は不明です。なお、中止ボタンに進捗率(元動画のサイズに対する 率なので時間切り出しの場合は100%にはなりません)を表示します。

3)出力先ファイルは上書きされます。
変換実行に際して出力先に同名のファイルがあっても警告なしに上書きします。ただし、出力先を指定する際に既存のファイル名を指定すると tkinterデフォルトの英語メッセージは表示されます。

2.コンボボックスの選択肢用のコーデックや拡張子の編集

extcodecs.pyを編集して、映像、音声のコーデックと拡張子の関係を更新できます。 コーデックの選択肢の編集や新たな拡張子、対応コーデックの追加・変更ができます。
なお、extcodecs.pyにおいて拡張子とコーデックの関係に誤りがある場合は修正しますが、新たな拡張子やコーデックの追加の予定はありません。 直接入力も可能ですし、すべてを網羅する目的ではありませんから。

3.追加モジュールについて

(1)pillow
以前、pythonにpillowをインストールしたとき、ImageTkモジュールを別途インストールしなければtkinterで使えなかった。 しかし、どういうわけか、現在(python3.10,pillow10.0)はpillowをインストールすればImageTkモジュールも使える状態になっているようだ。

(2)tkinter
tkinterはpythonの標準モジュールなのでpythonがインストールされている環境なら必ず入っていると信じていたが、 理由はわからないがtkinterがインストールされていないpythonの環境もあるようだ。 実際、仮想OSとしてインストールしたubuntu22.04の中にインストールされていたpython3にはtkinter(venvも)は入っていなかった。 やむなく'sudo apt install python3-tk'でインストールした。
setup.pyのinstall_requiresにはpillowしか指定していないので、不幸にもtkinterがインストールされていない環境の方はaptで別途インストールが必要です。

4.今後の予定

(1)アスペクト比を維持せずに解像度を変更する--(誤ったアスペクト比になっている動画の修正を試みる目的です。)
(2)英語バージョン(必要ないかも)

5.変更履歴

(.zipがダウンロードできなくなっていたのを修正)
(音声コーデックを変更するとき誤った引数を生成していたのを修正)
(動画・音声コーデックの指定には出力動画ファイル名の指定を必須とした)
・6.8.11 --> 6.8.12
6.8.12と.6.8.11とは基本的に同じです。setup.pyで固める際にサポートモジュールのパス設定を調整し忘れていたので修正して.6.8.12としました。
・6.8.12 --> 6.11.27
動画ファイルを読み込んだとき最大音量の取得に時間を要していたので最大音量を取得しないようにした。音量を変更したい気持ちに最大音量は無関係。 ・6.11.27 --> 7.5.4
動画変換の最初に書式に合致しない’N/A’等の処理時間情報によって処理が止まることがあったので、その場合には強制的に0を返して処理を継続するようにした。

6.過去のファイル

ezffmpeg-6.11.27.tar.gz
ezffmpeg-6.11.27.zip
ezffmpeg-6.11.27-win10.zip
ezffmpeg-6.8.12.tar.gz
ezffmpeg-6.8.12.zip
ezffmpeg-6.8.11-rare.zip
ezffmpeg-6.8.11-win10-64.zip

(※以下の画像は初期のバージョンのものです。)
top起動時の表示

opensrc変換元動画を調査中の表示

streamストリーム選択画面

timecut時間切り出し設定画面

video映像関係設定画面

audio音声関係設定画面

連絡先(注意:全角文字です):renraku@ezffmpeg.inblank.net