我正在从相机获取视频流,并且正在将帧写入文件中。问题是它们是以太大的帧速率编写的,我找不到以编程方式设置它的方法。
所以我想我正在寻找控制台指令“-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);
编写它们知道我做错了什么或者我应该如何解决这个问题?
最佳答案
您可能希望自己控制相机帧速率。
#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);
}
关于video - android ffmpeg 设置帧率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12963607/