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比特,然后有些算法上下文需要重置,以及帧内预测不能在片内做。(本人的理解。)

  • 相关阅读:
    vmware虚拟机安装centos,配置PHP、mysql
    Java初学者不得不知的概念,JDK,JRE,JVM的区别?(转)
    char a[] = "hello world1"和char *p = "hello world2";的区别(转)
    关于二维数组传参做形参(转)
    最长连续字母序列的长度(阿里2015在线研发工程师笔试题)
    两个线程并发执行以下代码,假设a是全局变量,那么以下输出______是不可能的?
    软件工程
    面向对象基础
    eclipse
    设计模式(java)--状态模式
  • 原文地址:https://www.cnblogs.com/lihaiping/p/4224209.html
Copyright © 2011-2022 走看看