主要问题集中在编码过程中需要CPU大量的参与工作,因为压缩率的设置不同,使用ultrafast,编码器的工作量比medium的工作量少了,cpu就下去了,可以尝试下面设置:
AVDictionary* param = nullptr;
av_dict_set(¶m, "preset", "ultrafast", 0);
av_dict_set(¶m, "tune", "zerolatency", 0);
相应编码压缩的数据量小,要发送的数据量就大,码率如果无法支撑,画面就没那么清晰,可尝试增大码率;
vcodecContext->bit_rate = 3000000 * 10;
二、X264的preset和tune
鉴于x264的参数众多,各种参数的配合复杂,为了使用者方便,x264建议如无特别需要可使用preset和tune设置。这套开发者推荐的参数较为合理,可在此基础上在调整一些具体参数以符合自己需要,手动设定的参数会覆盖preset和tune里的参数。
--preset的参数主要调节编码速度和质量的平衡,有ultrafast、superfast、veryfast、faster、fast、medium、slow、slower、veryslow、placebo这10个选项,从快到慢。
--tune的参数主要配合视频类型和视觉优化的参数。如果视频的内容符合其中一个可用的调整值又或者有其中需要,则可以使用此选项,否则建议不使用(如tune grain是为高比特率的编码而设计的)。tune的值有:
film:电影、真人类型;
animation:动画;
grain:需要保留大量的grain时用;
stillimage:静态图像编码时使用;
psnr:为提高psnr做了优化的参数;
ssim:为提高ssim做了优化的参数;
fastdecode:可以快速解码的参数;
zerolatency:零延迟,用在需要非常低的延迟的情况下,比如电视电话会议的编码。
未完待续...
https://www.zhihu.com/question/27442034
https://trac.ffmpeg.org/wiki/Encode/H.264#CBRConstantBitRate
网友评论