【FFmpegのAVOption】エンコーディングオプション設定

11667 ワード

AVOption

  • 一、AVOption概要
  • 二、av_opt_set()関数詳細
  • 一、AVOption概要


    AVOptionはFFmpegのオプション設定ツールです.AVOptionの核心概念は「文字列に基づいて構造体の属性値を操作する」ことである.AVOptionに最も関連するオプション設定関数はav_ですopt_set()になりました.

    二、av_opt_set()関数の詳細

    int av_opt_set         (void *obj, const char *name, const char *val, int search_flags);
    int av_opt_set_int     (void *obj, const char *name, int64_t     val, int search_flags);
    int av_opt_set_double  (void *obj, const char *name, double      val, int search_flags);
    int av_opt_set_q       (void *obj, const char *name, AVRational  val, int search_flags);
    int av_opt_set_bin     (void *obj, const char *name, const uint8_t *val, int size, int search_flags);
    int av_opt_set_image_size(void *obj, const char *name, int w, int h, int search_flags);
    int av_opt_set_pixel_fmt (void *obj, const char *name, enum AVPixelFormat fmt, int search_flags);
    int av_opt_set_sample_fmt(void *obj, const char *name, enum AVSampleFormat fmt, int search_flags);
    int av_opt_set_video_rate(void *obj, const char *name, AVRational val, int search_flags);
    int av_opt_set_channel_layout(void *obj, const char *name, int64_t ch_layout, int search_flags);
    

    パラメータ1:objは構造体で、最初の要素はAVClass構造体へのポインタパラメータ2:パラメータを設定するフィールド名パラメータ3:設定する値パラメータ4:サブ構造体のフラグ(無視可能)
    二つの方式は作用が同じである.
    #if TEST_OPT
    	av_opt_set(pCodecCtx,"b","400000",0);		//bitrate
    	//Another method
    	//av_opt_set_int(pCodecCtx,"b",400000,0);	//bitrate
     
    	av_opt_set(pCodecCtx,"time_base","1/25",0);	//time_base
    	av_opt_set(pCodecCtx,"bf","5",0);			//max b frame
    	av_opt_set(pCodecCtx,"g","25",0);			//gop
    	av_opt_set(pCodecCtx,"qmin","10",0);		//qmin/qmax
    	av_opt_set(pCodecCtx,"qmax","51",0);
    #else
    	pCodecCtx->time_base.num = 1;  
    	pCodecCtx->time_base.den = 25;  
    	pCodecCtx->max_b_frames=5;
    	pCodecCtx->bit_rate = 400000;  
    	pCodecCtx->gop_size=25;
    	pCodecCtx->qmin = 10;
    	pCodecCtx->qmax = 51;
    #endif