Problem setting video frame rate using AVAssetWriter/AVAssetReader Problem setting video frame rate using AVAssetWriter/AVAssetReader ios ios

Problem setting video frame rate using AVAssetWriter/AVAssetReader


Here is an idea to select frames. Suppose the fps of source video is F and target fps is TF. rate = TF/F

Initiate a variable n equal to -rate and add rate each time,when the integer part of n changed, select the frame.

e.g. rate = 0.3          n: -0.3 0 0.3 0.6 0.9 1.2 1.5 1.8 2.1                  ^              ^           ^frame index:      0  1   2   3   4   5   6   7select 0 4 7
float rate = 0.39999f; // TF/F float n =  -rate; // to make sure first frame will be selectedfor (int i = 0; i < 100; ++i, n += rate) { // i stands for frame index, take a video with 100 frames as an example    int m = floor(n);    int tmp = n+rate;    // if rate > 1.0 repeat i    // if rate < 1.0 some of the frames will be dropped    for (int j = 0; m+j < tmp; ++j) {        // Use this frame        printf("%d ", i);    }}