「FFmpegを最新版にしたいのに、コマンドを打っても古いバージョンのまま変わらない…」
今回はそんな状況になってしまった私が、実際に解決した方法を備忘録として書いていきます。
まずは現状の確認と標準的なアップデートを試す
まずは、今自分のPCに入っている FFmpeg のバージョンを正確に把握しましょう。コマンドプロンプトを開き、以下のコマンドを入力します。
ここで「ffmpeg version 7.0.2」などの古い数字が出た場合、アップデートが必要です。
Windows 10や11をお使いであれば、標準のパッケージマネージャーである「winget」を使って、以下のコマンドで更新を試みるのが最も一般的な方法です。
もしこれで「利用可能なアップグレードはありません」と出る場合は、配布元(ID)を指定して強制的に最新版を呼び出します。
インストール完了のメッセージが出れば、本来はこれで 8.1 などの最新版が導入されたはずです。
しかし、ここでもう一度 ffmpeg -version を打ってもまだ古いバージョンのままなら、システムの内側で「ある問題」が起きています。
新しく入れたのに「古い方」が優先されてしまう理由
最新版を入れたのに古いバージョンが表示され続けるのは、Windowsの 環境変数 PATH(パス) という優先順位の仕組みが原因です。
Windowsは「ffmpeg」という命令を受けたとき、あらかじめ登録された「住所録(PATH)」を上から順番に探しに行きます。
もし、以前に手動でインストールした古い FFmpeg の場所がその住所録の上のほうに書かれていると、Windowsは新しく入れた最新版を見つける前に、古い方を見つけて「これだ!」と思い込んで実行してしまいます。
この「古いプログラムが邪魔をしている状態」を特定するために、次のコマンドを使います。
実行すると、PC内にある FFmpeg の場所が複数表示されるはずです。
ここで一番上に表示されたパスこそが、今あなたの邪魔をしている「古いバージョン」の居場所です。
古いファイルを整理して最新版への道を通す
解決のための具体的な手順は、「古いファイルを無効化する」ことと、「新しい場所を登録する」ことの2ステップです。
まずは、コマンドプロンプトで「where ffmpeg」と打ち、表示されたパスを確認してください。
例えば、画面に以下のような2行が表示されたとします。
- C:\ffmpeg\bin\ffmpeg.exe (←これが今まで使っていた古い 7.0.2)
- C:\Users\(ユーザー名)\AppData\Local\Microsoft\WinGet\Packages\Gyan.FFmpeg… (←これが新しく入れた 8.1)
この場合、一番上の「C:\ffmpeg\bin」フォルダをエクスプローラーで開き、その中にある【ffmpeg.exe を削除】するか、【名前をffmpeg_old.exeなどに変更】してください。
これで、Windowsが古い方を見つけてしまう「邪魔な壁」が取り除かれます。
次に、Windowsが新しい 8.1 をいつでも見つけられるように「Path(環境変数)」を書き換えます。
- Windowsの検索窓に「環境変数」と入力し、「システム環境変数の編集」を開きます。
- 「環境変数」ボタンを押し、下の「システム環境変数」欄にある 「Path」 を選んで 「編集」 をクリックします。
- リストの中に古いパス(例:C:\ffmpeg\bin)が残っていたら、それを選択して 「削除」 します。
- 「新規」 を押し、先ほど「where ffmpeg」で確認した 2 番目の新しいパス(…\WinGet\Packages\Gyan.FFmpeg… の bin フォルダまで)を貼り付けて保存します。
※ C:\Users\(ユーザー名)\AppData… というパスは、ご自身の環境に合わせてコピー&ペーストしてください。
最後に、開いているコマンドプロンプトを 一度すべて閉じてから開き直し、ffmpeg -versionを実行してください。これで、最新の 8.1 が起動するようになります。
「この面倒な作業、毎回やらなきゃいけないの?」という不安への答え
この「古い場所を消して、新しい場所にパスを通す」という作業は、最初の一回だけで大丈夫です。
これまでは「手動で入れた古い管理外のファイル」と「wingetが管理する新しいファイル」が喧嘩していたため、手作業での修正が必要でした。
しかし、今回 winget の管理下へ完全に移行できたため、次回のアップデートからは以下のコマンド たった1行だけ で、ファイルの入れ替えも設定の更新もすべて全自動で行われます。
これからは、FFmpeg 側で新しい機能が追加された際も、ボタンひとつ、あるいはコマンドひとつで最新環境を手に入れることができるようになります。
まとめ
- バージョンが変わらないときは where ffmpeg で古いファイルの居場所を特定する
- 以前手動で入れた古い実行ファイルを整理し、WinGet版のパスを優先させる
- 一度設定を整えれば、次からは winget upgrade だけで全自動更新が可能になる