2012-03-26 26 views
0

Ich versuche, Video mit ffmpeg und x264 zu kodieren. Ich weiß, dass ffmpeg x264-Voreinstellungen verwenden kann, wenn das Programm ffmpeg von der Befehlszeile verwendet wird. Aber ist es möglich, diese Voreinstellungen beim Verschlüsseln mit ffmpeg im Code zu verwenden?Gibt es eine einfache Möglichkeit, x264-Presets mit ffmpeg im Code zu verwenden?

Wenn nicht, was ist der beste Weg, um die x264 Parameter von ffmpeg Code zu setzen? Verwendet es nur die Eigenschaften des AVCodecContext? Stehen alle x264-Optionen zur Verfügung?

Vielen Dank!

Antwort

0

Sorry für die sehr späte Antwort, aber ich hatte die gleiche Frage, und ich möchte die Lösung teilen, die ich gefunden habe. Ja, es ist möglich, viele der x264-Optionen über die Kommandozeile und die API zu übergeben, zumindest wenn libav verwendet wird (ich kann das jetzt nicht mit ffmpeg bestätigen). Durch die Ausgabe von avconv --help können Sie diese finden:

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 

Wenn die AVCodecContext Struktur verwenden, können Sie auch die Optionen, wie -rc-Look-Ahead-Set kann auf AVCodecContext :: rc_lookahead eingestellt werden, aber ich bin nicht sicher, über -preset jetzt.

Hope this

0

zuerst helfen können, müssen Sie ffmpeg Unterstützung x264opts und x264-params wissen, präzisere Steuerung von x264 encodec hinzuzufügen. und es übergeben eine key = Wertliste, getrennt durch ":" zu x264. zum Beispiel:

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

die bframes auf 0 für x264 Einstellung bedeutet, von. Dieses Format ist nicht vollständig identisch mit x264.

ausführlicher Check this:

1, ffmpge document

2, x264