コンテキストメニューエントリによるFFmpeg変換

コンテキストメニューエントリによるFFmpeg変換

右クリック/コンテキストメニューのエントリを作成したい「MP4に変換」すべてのビデオファイル(すべてのビデオファイルが不可能な場合は少なくともMKV)で利用可能で、設定された場所(「C:\Users\Username\Documents\Programs\Portable\FFmpeg 20190916\bin」としましょう)からFFmpegを起動し、MP4バージョンを作成します。(ロスレスエンコード / コンテナを変更するだけ)入力ビデオファイルの。出力ファイル(MP4)は入力ファイルと同じフォルダに表示されるはずです。理想的には、一度に複数のファイルを選択(Ctrl+クリック)してこれを行うことができるようにしたいと思います。(必ずしもフォルダ内のビデオファイル)

これは、bat ファイルを作成し、それを何らかの方法でコンテキスト メニューに統合することで可能になるはずです (たとえば、「送信」メニューのショートカットなど)。ただし、CMD についてはよく知らないので、FFmpeg が特定のファイルをキャッチするにはどうすればよいのか、また、出力ファイルを入力と同じフォルダーに取得するにはどうすればよいのかわかりません。

まず、私は以下に基づいてbatファイルを適応させようとしましたこれに答えます重複としてリンクした質問確認してみると、動作するbatファイルを思いつくかどうか(「コンテキストメニュー/レジストリ」の部分を行う前に)ですが、前述したように、cmdを正しく使用する方法がまったくわからず、動作しませんでした。私の質問は、あなたが提案した質問の重複ではないと思います。なぜなら、私の質問はオーディオではなくビデオを扱っているからです(原理的に大きく異なると言っているのではなく、適応させるためにそれらのオーディオコーデックの代わりに何を入力すればよいかがわからないだけです)。そして最も重要なのは、私の質問はコンテナを変換するのではなく変更することなので、異なるコマンドが必要になるということです。したがって、その回答とFFmpegを使用してメディアファイルを変換するためのクイックガイド Opensource.com では、次のようなコマンドを含む bat ファイルを作成しました。

ffmpeg -i %1 copy "%~n1.mp4

ffmpeg -i "%1" "%1.mp4

ffmpeg -i "%1.mkv" "%1.mp4

ffmpeg -i input.mkv -c:av copy output.mp4

(FFmpeg へのフルパス名を使用しましたが、読みやすくするためにここでは省略しています) 次に、MKV ファイルをドロップしようとしましたが、どれも機能しませんでした。cmd と FFmpeg に関するいくつかの質問をここですでに確認しましたが、役に立たなかったので、どんな助けでもいただければ幸いです。

答え1

手順:

  • コマンドを使用して、.MKV 拡張子に関連付けられたファイル タイプを取得しますassoc .mkv。たとえば、デフォルトの出力は . です.mkv=WMP11.AssocFile.MKV

  • レジストリ エディター (別名 regedit) で関連するファイル タイプを開きます。たとえば、デフォルトのレジストリは ですHKEY_CLASSES_ROOT\WMP11.AssocFile.MKV

  • レジストリにコマンドを追加するには、まず ffmpeg コマンドを正しい形式に変更します。mkv を mp4 に変換する簡単なコマンドは ですffmpeg -i abc.mkv -c copy abc.mp4。ファイル名はプレースホルダー変数 に置き換える必要があります%1。したがって、コマンドは になりますffmpeg -i %1 -c copy %1.mp4

  • 管理者として実行した次のコマンドでレジストリを追加します。

REG ADD "HKCR\WMP11.AssocFile.MKV\Shell\Convert to MP4\command" /VE /T REG_EXPAND_SZ /D "ffmpeg.exe -i \"%1\" -c copy \"%1.mp4\"" 

このコマンドは、レジストリ キーffmpeg -i %1 -c copy %1.mp4のコマンドを値に追加します。シェルがファイル名を推測できるようにするために、型が必要です。バック スラッシュと二重引用符は、MKV ファイルのフル パス内のスペースを処理するために使用されます。HKCR\WMP11.AssocFile.MKV\Shell\Convert to MP4\commanddefaultREG_EXPAND_SZ%1

  • コマンドはさまざまな方法で変更または構成できます。WMP11.AssocFile.MKV現在の設定に合わせてデフォルトのファイル関連付けを変更してください。また、実行ファイルのフルパスを入力してくださいffmpeg.exe。コマンドプロンプトウィンドウのポップアップを抑制するには、cmd /Q /Cffmpegコマンドを追加します。この答えそのトリックのために。

答え2

サンプルのgithubリポジトリは以下にあります。https://github.com/kachurovskiy/VideoContextMenu より

注: 私は著者ではありませんが、上記のコメントが多すぎるため、これを回答として追加します。

それは次のことを行います

all.reg - エクスプローラーのメニューオプションを設定するために使用します

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shell\Video: to h264\command]
@="C:\\VideoContextMenu\\convert.bat \"%1\""

C:\VideoContextMenuconvert.bat - これは(または別の場所にある)メインコマンドです。

set i=%~n1
set x=%~x1
set o=%i%.mp4
if exist %o% (
  set o=%i%-h264.mp4
)
ffmpeg -i "%i%%x%" -vcodec libx264 -preset slow -acodec aac "%o%"
exit

また、受け入れられた回答に従って、特定のファイル タイプに制限します。

例えばHKCR\WMP11.AssocFile.MKV\Shell\Convert to MP4.mkvの場合

関連情報