我目前正在尝试在c中为FFMPEG应用无损H264设置。但是,我不确定需要什么设置才能确保无损编码,而且我在这方面找不到任何文档。
我目前的设置是:
codecContex->coder_type = 1;
codecContex->flags|=CODEC_FLAG_LOOP_FILTER;
codecContex->flags2|=CODEC_FLAG2_BPYRAMID-CODEC_FLAG2_WPRED-CODEC_FLAG2_8X8DCT;
codecContex->profile=FF_PROFILE_H264_BASELINE;
codecContex->scenechange_threshold = 40;
codecContex->gop_size=40;
codecContex->max_b_frames=0;
codecContex->max_qdiff=4;
codecContex->me_method=10;
codecContex->me_range=16;
codecContex->me_cmp|= 1;
codecContex->me_subpel_quality = 5;
codecContex->qmin=0;
codecContex->qmax=0;
codecContex->qcompress=0.6f;
codecContex->keyint_min=25;
codecContex->trellis=0;
codecContex->level=13;
codecContex->refs = 16;
codecContex->weighted_p_pred = 2;
codecContex->b_frame_strategy= 1;
codecContex->color_range = libffmpeg::AVCOL_RANGE_JPEG;
codecContex->coder_type = FF_CODER_TYPE_AC;
codecContex->crf = 0;
有关确保无损编码应该是什么的任何想法? 提前谢谢。
答案 0 :(得分:1)
试试这个:
...
AVDictionary *param;
av_dict_set(¶m, "qp", "0", 0);
/*
Change options to trade off compression efficiency against encoding speed. If you specify a preset, the changes it makes will be applied before all other parameters are applied.
You should generally set this option to the slowest you can bear.
Values available: ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow, placebo.
*/
av_dict_set(¶m, "preset", "medium", 0);
/*
Tune options to further optimize them for your input content. If you specify a tuning, the changes will be applied after --preset but before all other parameters.
If your source content matches one of the available tunings you can use this, otherwise leave unset.
Values available: film, animation, grain, stillimage, psnr, ssim, fastdecode, zerolatency.
*/
av_dict_set(¶m, "tune", "film", 0);
int rt = avcodec_open2(codecContext, codec, ¶m);
...
对于无损,请不要使用个人资料