直到现在,我正在使用固定帧(编程)使用ffmpeg完成所有编码。现在我需要支持可变帧频。我刚刚开始评论我设置帧频的代码部分。 但它不工作。我的功能在avcodec_open2失败。请有人建议我如何去支持可变帧频。 另外我也知道不是所有编解码器都支持可变的帧速率。所以当使用可变帧频编码时,通常使用哪些编解码器。请建议。ffmpeg中的可变帧频编码
感谢 普拉迪普
直到现在,我正在使用固定帧(编程)使用ffmpeg完成所有编码。现在我需要支持可变帧频。我刚刚开始评论我设置帧频的代码部分。 但它不工作。我的功能在avcodec_open2失败。请有人建议我如何去支持可变帧频。 另外我也知道不是所有编解码器都支持可变的帧速率。所以当使用可变帧频编码时,通常使用哪些编解码器。请建议。ffmpeg中的可变帧频编码
感谢 普拉迪普
我知道后很老了,但是我希望能够帮助有同样的问题(我只是做了)一些人...
使用fps filter或framerate filter 。作为一个ffpmeg n00b以及,100%的正确性不能保证,但至少这对我有效:
我创建了一个筛选器图,就像在filtering_video.c示例中一样。例如,对于filters
参数avfilter_graph_parse_ptr
,我指定fps=fps=30:round=near
。然后我喂帧到每当FilterGraph动态我得到了一些,计算PTS作为
float fps = (float)(codecContext->time_base.num)/codecContext->time_base.den;
this->frame->pts = (__int64)((timestamp - timestamp0)/fps);
timestamp
其中是帧的时间,以秒和timestamp0
是被记录在第一帧的时间。两者都是浮点值,并且是我自定义的定时器的结果。当您使用提供时间戳的库(如DirectShow)时,您当然应该使用这些。
你知道如何做到这一点吗?我也对此感兴趣。 @ praks411 – GangstaGraham