纠纷奇闻社交美文家庭
投稿投诉
家庭城市
爱好生活
创业男女
能力餐饮
美文职业
心理周易
母婴奇趣
两性技能
社交传统
新闻范文
工作个人
思考社会
作文职场
家居中考
兴趣安全
解密魅力
奇闻笑话
写作笔记
阅读企业
饮食时事
纠纷案例
初中历史
说说童话
乐趣治疗

音视频编解码编码参数CRF

3月15日 逆落雪投稿
  之前多多少少接触过一些编解码参数,CRF参数也用过,但是最近在和朋友们聊天时,说到使用FFMPEG过程中碰到CRF参数,以及具体作用流程,这个之前一直没有跟踪过,也没有详细记录过,所以吊起了自己的好奇心,于是决定搞清楚一下,便开始了这次CRF的神奇之旅。CRF简介:
  恒定速率因子(CRF,ConstantRateFactor)是一种编码模式,可以向上或向下调整文件数据速率以达到选定的质量级别,而不是特定的数据速率。
  如果要保持最佳质量,而又不怎么担心文件大小,这时候就可以使用CRF速率控制模式。这是大多数情况下建议的速率控制模式。当输出文件的大小不太重要时,此方法允许编码器尝试为整个文件实现期望目标视频质量的文件输出,即所谓的一次编码便可在预期视频质量下获得最大的视频压缩效率。CRF模式主要原理是在编码过程中通过动态调整每帧视频的QP值,以便可以获得保持所需视频质量水平比特率。
  但是CRF缺点是不能告知编码器期望获得特定大小的文件或不超过特定大小或比特率。同时需要注意的是采用CRF时不建议直接用来编码视频以进行流媒体传输。
  通常建议一般使用两种速率控制模式:恒定速率因子(CRF)或2passABR。速率控制决定每个帧将使用多少位。这将确定文件大小以及质量分配方式。CRF实操演示
  通过FFMPEG二进制文件尝试用参数CRF进行压缩,如下图所示:
  FFMPEG采用CRF分别为18、24进行压缩,以及和源文件的比较。
  ffmpegitest。mp4c:vlibx264crf18test18。mp4
  实际转码中
  转码结束后,会显示具体的编码相关信息,包括ref,crf值,qp量化步长等,以及I帧、P帧、B帧所占比重。还包含了音频相关信息如下图:
  用命令ffmpegitest。mp4c:vlibx264crf24test24。mp4,进行CRF24的转码,转码结果如下图所示:
  转码后分别对三个文件进行参数查看,并形成对比,其结果如下图所示:
  上述参数只能大概了解三个视频基本信息,之后通过Elecardeye专业工具查看该变化产生原因的直观图,三个文件码流分析结果:
  三个文件对比情况总结如下:
  可以看出:CRF参数的使用,I帧数量急剧减少、同时引入B帧;熵编码采用了CABAC方式,这样压缩率就提升很多,文件大小变小。同时随着CRF值变大,P帧和B帧压缩率也变大,文件更小。CRF代码走读
  虽然之前走读过FFMPEG代码,但是具体CRF参数的品读还没完全注意到过。为了不是一知半解的明白该问题,还是强迫自己走一遍代码,增强印象,深刻认识,也为关心该参数的小伙伴铺垫一下基础。CRF定义
  【腾讯文档】FFmpegWebRTCRTMPRTSPHLSRTP播放器音视频流媒体高级开发资料领取FFmpegWebRTCRTMPRTSPHLSRTP鎾斁鍣闊宠棰戞祦濯掍綋楂樼骇寮鍙璧勬枡棰嗗彇
  首先在X264中可以看到该值的定义:typedefstructX264Context{AVCx264。。。。。。。。。。。。}
  在AVOption具体定义如下:staticconstAVOptionoptions〔〕{{preset,Settheencodingpreset(cf。x264fullhelp),OFFSET(preset),AVOPTTYPESTRING,{。strmedium},0,0,VE},{tune,Tunetheencodingparams(cf。x264fullhelp),OFFSET(tune),AVOPTTYPESTRING,{0},0,0,VE},{profile,Setprofilerestrictions(cf。x264fullhelp),OFFSET(profile),AVOPTTYPESTRING,{0},0,0,VE},。。。。。。{x264opts,x264options,OFFSET(x264opts),AVOPTTYPESTRING,{。strNULL},0,0,VE},{crf,Selectthequalityforconstantqualitymode,OFFSET(crf),AVOPTTYPEFLOAT,{。dbl1},1,FLTMAX,VE},{crfmax,InCRFmode,preventsVBVfromloweringqualitybeyondthispoint。,OFFSET(crfmax),AVOPTTYPEFLOAT,{。dbl1},1,FLTMAX,VE},。。。。。。}
  CRF仍然属于Ratecontrol的一中,所以可以看到其RC相关定义如下:defineX264RCCQP0defineX264RCCRF1defineX264RCABR2
  FFMPEG接口梳理
  涉及到FFMPEG代码走读的部分太多了,在此只是简述CRF对应的部分,其他编解码流程大家可以根据网上其他大神的代码走读流程完成即可。此篇文章默认大家有足够基础:X264的编解码入口符合FFMPEG接口定义,对应关系如下图所示:
  此处借用雷神的一张图说明:(https:blog。csdn。netleixiaohua1020articledetails45960409)
  X264init()
  X264init函数主要作用就是将之前赋值和初始化的option值依次传递到libx264模块中,进行X264参数初始化,以及RC参数赋值。这些值是从AVCodecContext传递过来,以及X264Context的默认值。熟悉FFMPEG的人都了解,AVCodecContext中包含输入命令行中编解码选项值,以及FFMPEG命令中包含的option值,而X264Context包含x264的相关选项,两者结合构成完整的x264编解码选项值。
  在X264init的最后,进行X264Codec的OPEN动作,以及编码全局header的动作。
  x264paramdefault
  x264paramdefault设置默认参数,包括其他的选项值,在此只关心CRF相关选项。x264paramdefault中将CRF默认开启,同时设置CRF选项frfconstant置为23,这也是其他很多文章中讲到的默认值23的原因。
  同时注意,观察到在x264paramdefault默认参数中B帧是再次设置并置位的,而且cabac默认开启。所以如果用FFMPEGbin文件进行转码出来的文件中cabac是默认开启的,这也是工具端查看时会出现CABAC以及增加B帧的根本原因了。
  x264encoderopen
  在初始化具体参数后,init函数接下来进行x264encoderopen(相关代码位于encoderencoder。c)的操作,这时会具体打开到x264中h264相关编码器。
  之后在x264encoderopen中主要用于打开编码器,其中校验、初始化了libx264编码所需要的各种变量,并完成sps、pps、qm初始化。validateparameters
  调用validateparameters会进行输入参数的校验,防止输入参数异常导致编码失败。此函数中完成CRF相关参数校验、更新和赋值。
  其他流程部分可以参考其他大神的文章,再次不再累述。(雷神的解析非常详尽了,敬请膜拜即可x264源代码简单分析:编码器主干部分1雷霄骅(leixiaohua1020)的专栏CSDN博客)x264ratecontrolnew
  x264encoderopen最后会调用x264ratecontrolnew完成码率控制相关变量初始化。
  x264ratecontrolnew,主要设置码率控制的核心参数,需要对x264码率控制比较了解才能真正明白,否则会容易看晕。
  x264ratecontrolnew函数中依据传入参数是CRF模式,以及bstatread默认值为0即可将babr参数的置位为1,同时b2pass置位为0,也就是说CRF模式在ratecontrol中按照abr、非2pass进行处理的。
  在x264ratecontrolinitreconfigurable函数中会进行VBV参数初始化,以及CRF相关参数basecplx、ratefactorconstant的更新。
  同时x264ratecontrolinitreconfigurable中设置被调用时,传入binit1的参数,这时CRF置位了VBV模式,为后续的ratecontrol做了铺垫。
  X264frame
  X264frame()用于依据传入packet数据进行一帧视频数据的完整编码。该函数部分定义如下所示。
  reconfigencoder
  reconfigencoder主要作用就是将RC相关的参数和AVCodecContext中参数进行比较,如果不一致,则重新配置编码器。比如CRF值初始设置为24,但是命令行中设置为18,这时两个值不一致,则需要按照命令行中值进行赋值并重新配置编码器,以便最终符合用户预期。具体配置大家简单看一下就好,这里不再展开。x264encoderencode
  x264encoderencode是真正编码的开始,在x264encoderencode这个函数里面将一帧完整YUV图像编码成H264视频流,这个过程可以参考雷神的文章,解析非常好,blog。csdn。netleixiaohua1
  这边关心的是CRF中涉及到的部分内容,在x264encoderencode中和码率控制相关的内容主要是一下接口:
  x264threadsyncratecontrol():
  x264ratecontrolzoneinit():
  x264ratecontrolstart():开启码率控制,针对每一帧进行码率控制。在x264ratecontrolstart中会根据码率控制模式的不同,选择不同的qp进行压缩。之前分析可知,CRF是属于abr模式,同时增加了B帧,所以导致每帧图像的qp都是不同的,这样压缩后相同质量的条件下编码后文件大小就不能确定了。
  x264ratecontrolqp():
  码率控制是一个大块内容,设计的算法也比较复杂,该文只关注了如何将crf模式转换到vbv模式,以及对影响编码的部分参数,整个过程下一篇文章我们再进行分析和跟踪。
  以上是个人的一些看法,可能有不正确的地方,欢迎大家一起讨论学习。
  如果该文章对您有帮忙,欢迎点赞,收藏,转发、关注,在下持续更新音视频相关内容。
  作者:声网
  链接:https:juejin。cnpost7018511880880652324
投诉 评论

太阳8连胜!詹姆斯又惨遭里程悲!凯尔特人起飞给大家带来今日比赛概览费城104114太阳布克35分2板2助,保罗19分14攻,艾顿14分12板,太阳击败费城!费城恩比德37分15板,马克西18分,哈里斯17分8……千余名骑友绿心公园发车,开启副中心骑游季北京日报客户端记者孙云柯白继开7月24日,以全民健身幸福健康行,骑游遇见最美副中心为主题的城市副中心运河骑游季活动在城市绿心森林公园拉开帷幕。来自城市副中心近千名骑游爱好……解析居民超额储蓄及其对消费的影响如何解读居民超额储蓄和超额存款的大幅增加?2023年居民消费反弹能有多强?居民部门在202022年积累了大量超额储蓄2020年以来的新冠疫情对居民部门带来了沉重打击……历史思考公元前,海外贸易的常见交易港口有哪些?红海沿岸港口历史思考:公元前,海外贸易的常见交易港口有哪些?首先,是苏哈尔,它是1012世纪波斯湾的一个重要港口,11世纪末,穆卡达西就曾赞美该港口是重要枢纽:苏哈尔是乌……合集五女婿医术,让院长立马下跪拜师!新剧九州战神齐岳,不管怎么样,还是要感谢你。立忠,你醒了,还有哪里不舒服吗?没有没有。现在情况好多了,真是太感谢楚松了,要不是你请来马院长,治好了立忠。我真不知道该怎么办。咱们……陪伴成长家园共育海南省北大附小幼儿园开放日活动获家长好评遇见是故事的开始携手是温暖的篇章这是一场期待已久的春日邀约这是一场家长满怀激动的入园之旅温暖同行见证成长视频加载中。。。视频加载中。。。……让你截图最多的人还留在你身边吗?一张截图就是一个故事大家好,好久不见,你们的奶糖又回来了。今天想分享的话题是:我们啊,总以为截图能留下什么我们想留下什么呢?相信大家都截过好多的文字和语音条,长达几百分钟的语音通……电饭煲一锅香,专治各种挑食难养的娃,孩子吃了两碗都不够妈妈,羊肉饭还有吗?给我留点晚上自习回来还想吃。知道你爱吃,我多蒸了一杯大米,给你留着呢!中午回家,孩子看着香喷喷的羊肉饭就直喊哇塞,平时吃饭挑挑拣拣的他,二话不说……网友直言北慕登顶对面澜是演员,赛后点进主页,澜是KPL第一打王者荣耀S25赛季也走向了尾声,对于许多玩家们来说,最瞩目的无疑是巅峰赛状况,而近期的巅峰赛本来玩家们以为是小锦儿与微凉的战争,毕竟两个人这个赛季一直在冲巅峰赛,可是老野王北慕……魅族要确保魅族20足够惊艳而且我们不仅仅造手机【手机中国新闻】从种种迹象来看,魅族在准备大招,这个大招肯定不仅仅是新机魅族20系列,可能还有其他东西。魅族1月3日,据数码博主定焦数码爆料,目前挂在魅族科技官博上……音视频编解码编码参数CRF之前多多少少接触过一些编解码参数,CRF参数也用过,但是最近在和朋友们聊天时,说到使用FFMPEG过程中碰到CRF参数,以及具体作用流程,这个之前一直没有跟踪过,也没有详细记录……Apex第三!Steam2023年3月十大热门游戏出炉说到PC游戏,Steam无疑是业内最响亮的名声。现在,随着SteamDeck越来越受欢迎,每天有越来越多的人登陆Steam玩游戏。因此,如果你想了解在给定时间内PC玩家实际上在……
2022炒房已死!未来10年还能炒什么这5位女星无论红毯上如何惊艳,一演戏就变木头美人图索尼z3全颜色控唯美满满少女风煮汤圆,开水煮还是冷水煮?牢记3点,汤圆不破皮不露馅二战之前那些欧美女人为何不敢随便穿普普通通的裤子苹果公司CEO蒂姆库克现身中国发展高层论坛2023年年会,称图华为p10发布被称赞的不只有流畅度陈升号四大名山班章南糯那卡易武,口感特色如何?详解!图魅族mx7失望还是惊喜图台北旅游攻略分享吃喝玩乐应有尽有图拍照手机推荐让大众帮你挑选最合适的拍照手机戴琪要让中国付出代价?美国对华新动作浮出水面,中方寸步不让将情感在心中存放OWC发布面向Mac的AuraN内置SSD升级套件一步的力量一句话签名励志精选外商独资企业无限责任的问题是怎么规定的00字找春天国宝秘方脑膜炎特效圣方屡试屡验皂矾粉。。。百里山水画廊游走,包个小院过端午为什么睡觉前老是想上厕所最有可能的原因是这个书香伴成长吃什么食物补钙(高钙食物一览表)TGA历年年度最佳游戏及提名

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找美丽时装彩妆资讯历史明星乐活安卓数码常识驾车健康苹果问答网络发型电视车载室内电影游戏科学音乐整形