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

  • 相关阅读:
    安卓开发_求好评功能
    安卓开发_深入理解Content Provider
    安卓开发_数据存储技术_sqlite
    安卓开发_慕课网_Fragment实现Tab(App主界面)
    安卓开发_数据存储技术_外部存储
    Go语言基础之数组
    Go语言基础之结构体
    Go操作MySQL
    Go语言基础之文件操作
    Go第三方日志库logrus
  • 原文地址:https://www.cnblogs.com/lihaiping/p/4224209.html
Copyright © 2011-2022 走看看