私はこれを複数回できるようになりたかったので尋ねます。
既存のビデオまたはオーディオファイルがある場合、ffmpeg
、mplayer
および他のメディアプレーヤーは、使用されているコンテナ、コーデック、ビットレートなどの「プロパティ」の少なくとも一部を検出できます。特定の設定など.
これらの設定を既存のファイルから抽出して、(直接)ffmpegでのエンコードに使用するにはどうすればよいですか?
たとえば、いくつかの設定でx264
でエンコードされたmkv
ビデオと、別の非圧縮avi
ファイルを取得しました。 x-264 mkvファイルで使用されているエンコーディング設定を「コピー」して、aviをsame設定でトランスコードします。
注:設定をデコーダーからエンコーダーに「変換」する人間の作業を含まない方法を探しています。最初に設定を抽出してどこかに保存する必要があっても問題ありませんが、読み取りオプションをコマンドラインまたはffmpegのプリセット|構成ファイルに単純にフィードできるようにしたいと考えています。
これを自動的に行う方法はありません。元のファイルのパラメータを確認し、それらを出力ファイルに適用する必要があります。
ほとんどの場合、これらは次のようになります。
しかし、それで問題がなくても、一部のデバイスでは、ビットストリームに埋め込まれた特定の専用情報が必要になる場合があります。
x264
を使用する特定のタスクについては、これは簡単なことではありません。私はこれらのタスクを処理する単一のスクリプトを知りません。これらは通常手動で行われます。エンコーディング設定の詳細については、Unix/LinuxまたはOS Xでは、いくつかのBashトリックで mediainfo
を使用できます。
たとえば、MP4ファイルのx264エンコードされたビデオの場合:
mediainfo input.mp4 | grep "Encoding settings" | cut -d':' -f2- | tr '/' '\n' | sed 's/ //'
これはx264オプションのリストを出力します:
cabac=1
ref=3
deblock=1:-1:-1
analyse=0x3:0x113
me=hex
subme=7
psy=1
…
次に、これらのオプションを手動でx264バイナリに渡すことができます。
FFmpegを使用する場合は、x264のすべてのオプションをこのようにマッピングできる、またはマッピングする必要がないため、少し複雑になります。多くの場合、単純なプリセット、調整、およびプロファイルの指定も同様に機能し(x264 --fullhelp
および x264エンコーディングガイド に示されているように)、CRFレベルを指定するだけで十分です。
そして、これはオーディオさえ考慮していません。幸いにも、それほど多くのオプションはありません。