android ffmpeg设置帧率

时间:2012-10-18 20:55:25

标签: video android-ndk ffmpeg frame-rate

我从相机获取视频流,我正在将文件写入文件中。问题是它们的帧速率太大,我找不到以编程方式设置它的方法。 所以我想我正在寻找控制台指令“-r [framerate]”

调用的C函数

我尝试在avFormatContext中设置选项,但它没有效果。

AVDictionary *options=NULL; 
av_dict_set(&options,"r","1",0);
    avio_open2(&oc->pb, "path", AVIO_FLAG_WRITE,options);

之后,我正在使用av_read_frame(context,&packet)阅读框架,并使用av_write_frame(oc,&packet);

进行书写

任何想法,我做错了什么,或者我该如何处理?

1 个答案:

答案 0 :(得分:0)

您可能需要自己控制相机的帧速率。

#include <stdio.h>
#include <windows.h>  
#include <time.h>
...
double ticks; 
int fps=25; //25 FPS for example
uint64_t  frequency;        // ticks per second
double freq,et; 
double mspf=1000.0/(double)fps;

QueryPerformanceFrequency((LARGE_INTEGER *) &frequency);
freq= (frequency * 1000); 

while(???) {
    ticks=GetTickCount(); // start tick 

    //Read/write function
    av_read_frame(context,&packet);
    av_write_frame(oc,&packet);

    et=(GetTickCount()-ticks)/freq; // elapsed time for current frame, in milliseconds 
    av_usleep((et+1<mspf?mspf-et:1) * 1000);
}