我試圖用ffmpeg和x264編碼視頻。我知道ffmpeg在使用命令行中的ffmpeg程序時可以使用x264預設。但是,在代碼中使用ffmpeg進行編碼時,是否可以輕鬆使用這些預設?有沒有簡單的方法在代碼中使用ffmpeg的x264預設?
如果不是,從ffmpeg代碼設置x264參數的最佳方法是什麼?它只是使用AVCodecContext的屬性?所有的x264選項都可以通過這個嗎?
謝謝!
我試圖用ffmpeg和x264編碼視頻。我知道ffmpeg在使用命令行中的ffmpeg程序時可以使用x264預設。但是,在代碼中使用ffmpeg進行編碼時,是否可以輕鬆使用這些預設?有沒有簡單的方法在代碼中使用ffmpeg的x264預設?
如果不是,從ffmpeg代碼設置x264參數的最佳方法是什麼?它只是使用AVCodecContext的屬性?所有的x264選項都可以通過這個嗎?
謝謝!
對不起,最近的答案,但我有同樣的問題,我想分享我找到的解決方案。 是的,可以通過命令行和API傳遞許多x264選項,至少在使用libav時(我現在不能用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-先行可在AVCodecContext :: rc_lookahead來設置這些選項,但我不確定約 - 現在。
希望這可以幫助
首先,你必須知道更好的支持x264opts和X264-參數,可以添加X264 encodec更精確的控制。並且它傳遞由「:」分隔的鍵=值列表到x264。 例如:
ffmpeg .... -x264opts bframes=0:... ...
這意味着B-幀X264設置爲0的。這種格式與x264不完全相同。
更詳細地檢查這樣的:
2,x264