Search code examples
videomediah.264multimediasvc

How to calculate GOP size of a file H264


I have a h264 file that extract from YUV format using SVC software. Now, I want to caculate size of each GOP in the h264 file. We know that size of GOP is the distance between two nearest I frame. here. Could you suggest to me how to cacluate the GOP size of a given h264 file. It is better when we implement it by C/C++.Thank you


Solution

  • Well, just parsing the bitstream to find the each I-frame is a bit tricky; among other things the encode order might be (or not) different from the display-order. One solution is to use http://www.ffmpeg.org/ffprobe.html from the ffmpeg-suite.

    Example:

    ffprobe -show_frames input.bin | grep key_frame
    key_frame=1
    key_frame=0
    key_frame=0
    key_frame=0
    key_frame=0
    key_frame=0
    ...
    

    from the output you can easily calculate the GOP-length

    Another solution is to patch the reference implementation found at http://iphome.hhi.de/suehring/tml/

    Let me know if you need help with this part :-)