Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Optimal parameters for VP8/9 encoder for every stream level (low, mid, hi) #7

@peetonn

Description

@peetonn

Need to find optimal encoder parameters in terms of maximum/target bandwidth and framerate for three levels of video quality: low, medium and high. Latest encoder unit tests show higher actual bandwidth for 720p than requested:

[ RUN      ] TestCoder.TestEncode700K
[ INFO     ] 5 frames encoding took 100 ms (avg 20.00 ms per frame)
[ INFO     ] Encoded 30 (1280x720) frames with target rate 700 Kbit/s: encoded 5 frames, dropped 25 frames, actual rate 1155 Kbit/s, 1 key, 4 delta
[ INFO     ] Encoded frame sizes (bytes): key - 29384.00, delta - 28393.00
[       OK ] TestCoder.TestEncode700K (1357 ms)
[ RUN      ] TestCoder.TestEncode1000K
[ INFO     ] 7 frames encoding took 139 ms (avg 19.86 ms per frame)
[ INFO     ] Encoded 30 (1280x720) frames with target rate 1000 Kbit/s: encoded 7 frames, dropped 23 frames, actual rate 1606 Kbit/s, 1 key, 6 delta
[ INFO     ] Encoded frame sizes (bytes): key - 29376.00, delta - 28378.83
[       OK ] TestCoder.TestEncode1000K (1349 ms)
[ RUN      ] TestCoder.TestEncode2000K
[ INFO     ] 11 frames encoding took 213 ms (avg 19.36 ms per frame)
[ INFO     ] Encoded 30 (1280x720) frames with target rate 2000 Kbit/s: encoded 11 frames, dropped 19 frames, actual rate 2917 Kbit/s, 1 key, 10 delta
[ INFO     ] Encoded frame sizes (bytes): key - 75784.00, delta - 28305.40
[       OK ] TestCoder.TestEncode2000K (1335 ms)
[ RUN      ] TestCoder.TestEncode3000K
[ INFO     ] 16 frames encoding took 304 ms (avg 19.00 ms per frame)
[ INFO     ] Encoded 30 (1280x720) frames with target rate 3000 Kbit/s: encoded 16 frames, dropped 14 frames, actual rate 4325 Kbit/s, 1 key, 15 delta
[ INFO     ] Encoded frame sizes (bytes): key - 109829.00, delta - 28218.53
[       OK ] TestCoder.TestEncode3000K (1339 ms)
[ RUN      ] TestCoder.TestEnforceNoDrop
[ INFO     ] 30 frames encoding took 920 ms (avg 30.67 ms per frame)
[ INFO     ] Encoded 30 (1920x1080) frames with target rate 1000 Kbit/s: encoded 30 frames, dropped 0 frames, actual rate 16223 Kbit/s, 1 key, 29 delta
[ INFO     ] Encoded frame sizes (bytes): key - 66965.00, delta - 64891.14
[       OK ] TestCoder.TestEnforceNoDrop (1562 ms)
[ RUN      ] TestCoder.TestEnforceKeyGop
[ INFO     ] 90 frames encoding took 1748 ms (avg 19.42 ms per frame)
[ INFO     ] Encoded 90 (1280x720) frames with target rate 10000 Kbit/s: encoded 90 frames, dropped 0 frames, actual rate 9937 Kbit/s, 3 key, 87 delta
[ INFO     ] Encoded frame sizes (bytes): key - 194611.33, delta - 35067.60
[       OK ] TestCoder.TestEnforceKeyGop (4044 ms)
[ RUN      ] TestCoder.TestEnforceKeyTimed
[ INFO     ] 36 frames encoding took 732 ms (avg 20.33 ms per frame)
[ INFO     ] Encoded 90 (1280x720) frames with target rate 3000 Kbit/s: encoded 36 frames, dropped 54 frames, actual rate 3442 Kbit/s, 3 key, 33 delta
[ INFO     ] Encoded frame sizes (bytes): key - 117339.67, delta - 28202.61
[       OK ] TestCoder.TestEnforceKeyTimed (4096 ms)
[----------] 10 tests from TestCoder (16478 ms total)

As can be seen from the test, 720p@30fps requires much higher bandwidth than expected:

[ RUN      ] TestCoder.TestEnforceKeyGop
[ INFO     ] 90 frames encoding took 1748 ms (avg 19.42 ms per frame)
[ INFO     ] Encoded 90 (1280x720) frames with target rate 10000 Kbit/s: encoded 90 frames, dropped 0 frames, actual rate 9937 Kbit/s, 3 key, 87 delta
[ INFO     ] Encoded frame sizes (bytes): key - 194611.33, delta - 35067.60
[       OK ] TestCoder.TestEnforceKeyGop (4044 ms)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions