0

ffmpegとx264でビデオをエンコードしようとしています。コマンドラインからプログラムffmpegを使用する場合、ffmpegはx264プリセットを使用できることを知っています。しかし、コードでffmpegを使用してエンコードするときに、これらのプリセットを簡単に使用することは可能ですか?

そうでない場合、ffmpegコードからx264パラメータを設定するための最良の方法は何ですか?AVCodecContextのプロパティを使用しているだけですか?これにより、すべてのx264オプションを利用できますか?

ありがとうございました!

4

2 に答える 2

1

回答が遅くなって申し訳ありませんが、同じ質問があり、見つけた解決策を共有したいと思います。はい、少なくともlibavを使用している場合は、コマンドラインとAPIを介してx264オプションの多くを渡すことができます(現在ffmpegで確認することはできません)。avconv --helpを発行すると、次のことがわかります。

libx264 AVOptions:
-preset            <string> E.V.. Set the encoding preset (cf. x264 --fullhelp)
-tune              <string> E.V.. Tune the encoding params (cf. x264 --fullhelp)
-profile           <string> E.V.. Set profile restrictions (cf. x264 --fullhelp)
-fastfirstpass     <int>   E.V.. Use fast settings when encoding first pass
-crf               <float> E.V.. Select the quality for constant quality mode
-crf_max           <float> E.V.. In CRF mode, prevents VBV from lowering quality beyond this point.
-qp                <int>   E.V.. Constant quantization parameter rate control method
-aq-mode           <int>   E.V.. AQ method
   none                    E.V..
   variance                E.V.. Variance AQ (complexity mask)
   autovariance            E.V.. Auto-variance AQ (experimental)
-aq-strength       <float> E.V.. AQ strength. Reduces blocking and blurring in flat and textured areas.
-psy               <int>   E.V.. Use psychovisual optimizations.
-psy-rd            <string> E.V.. Strength of psychovisual optimization, in <psy-rd>:<psy-trellis> format.
-rc-lookahead      <int>   E.V.. Number of frames to look ahead for frametype and ratecontrol
-weightb           <int>   E.V.. Weighted prediction for B-frames.
-weightp           <int>   E.V.. Weighted prediction analysis method.
   none                    E.V..
   simple                  E.V..
   smart                   E.V..
-ssim              <int>   E.V.. Calculate and print SSIM stats.
-intra-refresh     <int>   E.V.. Use Periodic Intra Refresh instead of IDR frames.
-b-bias            <int>   E.V.. Influences how often B-frames are used
-b-pyramid         <int>   E.V.. Keep some B-frames as references.
   none                    E.V..
   strict                  E.V.. Strictly hierarchical pyramid
   normal                  E.V.. Non-strict (not Blu-ray compatible)
-mixed-refs        <int>   E.V.. One reference per partition, as opposed to one reference per macroblock
-8x8dct            <int>   E.V.. High profile 8x8 transform.
-fast-pskip        <int>   E.V..
-aud               <int>   E.V.. Use access unit delimiters.
-mbtree            <int>   E.V.. Use macroblock tree ratecontrol.
-deblock           <string> E.V.. Loop filter parameters, in <alpha:beta> form.
-cplxblur          <float> E.V.. Reduce fluctuations in QP (before curve compression)
-partitions        <string> E.V.. A comma-separated list of partitions to consider. Possible values: p8x8, p4x4, b8x8, i8x8, i4x4, none, all
-direct-pred       <int>   E.V.. Direct MV prediction mode
   none                    E.V..
   spatial                 E.V..
   temporal                E.V..
   auto                    E.V..
-slice-max-size    <int>   E.V.. Limit the size of each slice in bytes
-stats             <string> E.V.. Filename for 2 pass stats

AVCodecContext構造体を使用する場合、-rc-lookaheadをAVCodecContext :: rc_lookaheadで設定できるように、これらのオプションを設定することもできますが、-presetについてはよくわかりません。

これがお役に立てば幸いです

于 2012-08-09T17:06:29.470 に答える
0

まず、x264 encodecのより正確な制御を追加するために、ffmpegがx264optsとx264-paramsをサポートしていることを知っている必要があります。そして、「:」で区切られたkey=valueリストをx264に渡します。例えば:

ffmpeg .... -x264opts bframes=0:... ...

これは、x264のbframeを0に設定することを意味します。この形式はx264と完全には同じではありません。

詳細はこれを確認してください:

1、ffmpgeドキュメント

2、x264

于 2014-08-29T04:39:05.130 に答える