降低视频文件中画面的码率是怎么个原理?逐帧图片降低质量吗? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
JinTianYi456
V2EX    FFmpeg

降低视频文件中画面的码率是怎么个原理?逐帧图片降低质量吗?

  •  
  •   JinTianYi456 2021-05-25 16:07:03 +08:00 3341 次点击
    这是一个创建于 1608 天前的主题,其中的信息可能已经有所发展或是发生改变。

    是有不同算法吗?用哪个参数来设置的?

    第 1 条附言    2021-05-25 17:01:15 +08:00

    降低视频文件中video流的码率是什么原理?

    12 条回复    2021-05-26 13:11:52 +08:00
    GalaDOS
        1
    GalaDOS  
       2021-05-25 16:22:27 +08:00
    过程是把视频文件解码成原始像素数据,再用更低的码率去编码。参数一般就是编码器的-bitrate,-qp 之类的。
    因为基本都是有损编码,每次转码都会有损失。并且目标码率越低,质量降得越明显。
    jsion
        2
    jsion  
       2021-05-25 16:33:42 +08:00   1
    确实有对每一帧的图片计算压缩,那么必然损失一些像素信息,尤其是运动画面会有不稳定的情况,码率不完全恒定,具体自己去看 ffmpeg 的设置:crf (限制码率) cqp (固定质量) abr(平均码率)
    longbye0
        3
    longbye0  
       2021-05-25 16:37:47 +08:00 via iPhone   1
    帧内和帧间压缩都有。

    帧内你可以简单理解为图像压缩,帧间就计算运动向量,压缩他们的差值。

    不同算法就不同编码器,和选择相应的 profile 。
    JinTianYi456
        4
    JinTianYi456  
    OP
       2021-05-25 16:54:08 +08:00
    @GalaDOS @jsion 是还要深入一层,就是说: 降低画面码率,我知道肯定是要丢失画面信息的,那么如何丢失?是否有不同的丢失策略 /算法?就比如说一个视频画面它 maxrate:v 是 100K 的,然后我加参数-maxrate:v 70K 降低码率。假设默认的降码率算法是 A( 前面的命令就等于`-maxrate:v 70K -降码算法 A` ),然后它还有个其它降码率算法是 B 又或者还有 C 。我想问的就是`-maxrate:v 70K -降码算法 B`这样子
    fgodt
        5
    fgodt  
       2021-05-25 17:34:53 +08:00   1
    这个比较专业了,视频编码需要用到一个 DCT 变换,DCT 变换本来是无损的但是编码会用到一个量化,量化后的数据就变成了有损数据,量化的值就决定了损失的数据的多少,视频的码率控制着量化值。
    码率控制一般以一组图像为标准( GOP ),所以视频的质量确实是逐帧图片降低质量
    GalaDOS
        6
    GalaDOS  
       2021-05-25 17:36:32 +08:00
    @JinTianYi456 画面信息丢失的多少,由编码器选择的量化参数决定。打一个比方,浮点数“1.33”,选择不同的量化参数后,它会被压缩成“1.3”,或者“1”,甚至“0”。参数的选择影响输出数据的多少,以及丢失信息的多少。对应到视频数据,每一帧画面被划分成很多小块,每个小块有一个量化参数,编码器通过控制每个小块的量化参数,调整每一帧画面的数据量,进而控制码率。

    至于实际上这些量化参数如何选择,则是码率控制算法决定的。这个大概就是你想知道的“降码算法”吧。以 x264 为例,它大体有 crf,abr,cqp 这些选择。如果你有特定的目标码率,那基本就只能用 abr 。因为 crf 和 cqp 都只关注画面质量,不控制输出码率。如果你只是想要一个相对比较小的码率,也可以用 crf 和 cqp,给一个比较大的值,也即要求一个比较低的画面质量,码率自然就跟着降低了。

    如果还想问 abr 这些码控算法的具体原理,这个就很难在论坛里说清楚了,最好还是自己搜文献看吧。
    106npo
        7
    106npo  
       2021-05-25 19:18:34 +08:00 via Android   1
    @JinTianYi456 降码算法就是编码器 h264 h265 av1 之类的
    Rheinmetal
        8
    Rheinmetal  
       2021-05-25 21:31:22 +08:00
    了解原理要去看论文和代码了 比如经典的 x264
    msg7086
        9
    msg7086  
       2021-05-26 00:13:39 +08:00
    没有 降低码率 的算法。

    降低码率本质上是指用更低的码率重新压缩视频。

    比如原始的未压缩视频是 20000kbps,你先压缩到 100kbps,现在要重新压缩到 70kbps,这意味着你先把视频解压成 20000kbps,然后用和第一次压缩类似的算法,丢弃更多的细节后,压缩到 70kbps 。

    至于视频的压缩,这是一个很庞大的话题,几千字是说不清的,可以考虑去啃资料和教程,或者去听一些大学或者研究生课程。简单来说有几步。首先是帧间动态预测,一组相似的画面可以通过帧间压缩来降低码率,整个画面被切割成 MB 或者 CU,然后每个块与前后帧进行比较,如果残差比较省空间,就编码成残差,否则就原样按照画面编码。接下去跑 DCT 转换成频域,然后量化砍细节,最后执行无损压缩。
    urmyfaith
        10
    urmyfaith  
       2021-05-26 09:25:43 +08:00
    嗑瓜子学习
    xrr2016
        11
    xrr2016  
       2021-05-26 09:37:03 +08:00
    离散余弦变换
    no1xsyzy
        12
    no1xsyzy  
       2021-05-26 13:11:52 +08:00
    DCT 会有个问题,在维持总体平均码率的情况下,亮场码率高,暗场码率低
    你可以看看一些画面变动频繁的游戏,比如各种 FPS,或者我刚听说这个的时候正好老菊在更骑砍 2,也是非常明显。
    现在一个技巧就是,在上传时候的视频把亮度直接调高,压制效果就好不少。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     912 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 18:52 PVG 02:52 LAX 11:52 JFK 14:52
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86