zoukankan      html  css  js  c++  java
  • 测试x264编码器的低延时编码和非延时编码

    最近在学x264的编码,经过大量的测试,编码1080P的视频,编码10000帧数据。

    在设置为低延时编码的时候:

    编码线程0,一帧耗时:7.000000 ms.
    编码线程0,一帧耗时:8.000000 ms.
    编码线程0,一帧耗时:7.000000 ms.
    编码线程0,一帧耗时:8.000000 ms.
    编码线程0,一帧耗时:8.000000 ms.
    编码线程0,一帧耗时:7.000000 ms.
    编码线程0,一帧耗时:7.000000 ms.
    编码线程0,一帧耗时:7.000000 ms.
    编码线程0,一帧耗时:7.000000 ms.
    编码线程0,一帧耗时:7.000000 ms.
    编码线程0,一帧耗时:7.000000 ms.
    编码线程0,一帧耗时:7.000000 ms.
    编码线程0,一帧耗时:7.000000 ms.
    编码线程0,一帧耗时:7.000000 ms.
    编码线程0,一帧耗时:6.000000 ms.
    编码线程0,平均帧编码时间7.24ms.
    编码线程0,总编码帧数:10000,得到编码帧数:10000,延时编码帧数:0,单帧最小耗时:5.00,最大耗时:18.00,总消耗时间:104274.000 ms,总编码耗时:72352 ms,平均耗时:0 ms.
    结束:1 路编码平均总时间=104274.000000.
    结束!!
    出第一帧的时间,耗时7ms.
    ==============================
    CPU:
    4路编码,25帧2倍速,CPU:65~75%
    5路编码,25帧2倍速,CPU:90~95%
    8路编码,25帧1倍速,CPU:60~70%

    当设置为非延时编码时:

    编码线程0,一帧耗时:2.000000 ms.
    编码线程0,一帧耗时:1.000000 ms.
    编码线程0,一帧耗时:1.000000 ms.
    编码线程0,一帧耗时:1.000000 ms.
    编码线程0,一帧耗时:1.000000 ms.
    编码线程0,一帧耗时:4.000000 ms.
    编码线程0,一帧耗时:1.000000 ms.
    编码线程0,一帧耗时:1.000000 ms.
    编码线程0,一帧耗时:1.000000 ms.
    编码线程0,一帧耗时:1.000000 ms.
    编码线程0,一帧耗时:1.000000 ms.
    编码线程0,一帧耗时:5.000000 ms.
    编码线程0,一帧耗时:1.000000 ms.
    编码线程0,一帧耗时:1.000000 ms.
    编码线程0,一帧耗时:2.000000 ms.
    编码线程0,取延时帧,一帧耗时:0.000000 ms.
    编码线程0,取延时帧,一帧耗时:0.000000 ms.
    编码线程0,取延时帧,一帧耗时:2.000000 ms.
    编码线程0,取延时帧,一帧耗时:2.000000 ms.
    编码线程0,取延时帧,一帧耗时:0.000000 ms.
    编码线程0,取延时帧,一帧耗时:0.000000 ms.
    编码线程0,平均帧编码时间1.48ms.
    编码线程0,总编码帧数:10000,得到编码帧数:10000,延时编码帧数:6,单帧最小耗时:0.00,最大耗时:24.00,总消耗时间:45206.000 ms,总编码耗时:14774 ms,平均耗时:0 ms.
    结束:1 路编码平均总时间=45206.000000.
    结束!!
    出第一帧的时间,耗时47ms

    ==============================
    CPU:
    8路编码,25帧1倍速,CPU:65~80%
    5路编码,25帧2倍速,CPU:85~95%
    4路编码,25帧2倍速,CPU:55~65%

    差距这么大,我自己也惊讶了。

    查找了下原因:

    (官方)

    Each slice adds some bitrate (or equivalently reduces quality), for a variety of reasons: the slice header costs some bits, cabac contexts are reset, mvs and intra samples can't be predicted across the slice boundary.
    因为采用低延时编码的时候,每个切片添加了bitrate比特,然后有些算法上下文需要重置,以及帧内预测不能在片内做。(本人的理解。)

  • 相关阅读:
    记一个centos分区大小调整过程
    破解StarUML3.01最新版 for Linux(Ubuntu16LTS)
    为什么我们要使用int类型来保存时间类型的数据。
    sphinx-doc的中文搜索
    ubuntu下file_get_contents返回空字符串
    PSR-PHP开发规范(本文版权归作者:luluyrt@163.com)
    PHP单例模式
    PHP中 PCRE正则表达式模式修饰符“u” 的使用。
    Mysql 插入时间时报错Incorrect datetime value: '' for column 'createtime'
    如何给list清空
  • 原文地址:https://www.cnblogs.com/lihaiping/p/4224209.html
Copyright © 2011-2022 走看看