微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用 avcodec 和 libx264 设置固定常量fps

如何解决如何使用 avcodec 和 libx264 设置固定常量fps

我正在使用这个项目 https://github.com/apc-llc/moviemaker-cpp 我想知道如何在我的视频上设置固定帧率 现在,当我输入 30FPS 作为 c->framerate 时,结果类似于 33.6 38.1 35.3 我尝试了网上找到的所有内容,但没有机会。

我尝试过的: 在https://github.com/apc-llc/moviemaker-cpp/blob/319be27849fc3d55a9dc3b0180a5d4ac84e24121/src/writer.cpp#L54

#define FRAMERATE  20
#define FRAME_TIME AVRational{ 1,FRAMERATE }
#define FRAME_RATE AVRational{ FRAMERATE,1 }
...

    // Setting up the codec.
    AVCodec* codec = avcodec_find_encoder_by_name("libx264"); //libx264 works too!
    AVDictionary* opt = NULL;
    av_dict_set(&opt,"preset","slow",0);
    av_dict_set(&opt,"cfr","30",0);
    stream = avformat_new_stream(fc,codec);
    c = stream->codec;
    c->width = width;
    c->height = height;
    c->pix_fmt = AV_PIX_FMT_YUV420P;
    c->time_base = FRAME_TIME;
    c->framerate = FRAME_RATE;
    stream->avg_frame_rate = FRAME_RATE;

解决方法

感谢??????????

解决方案是:

您正在寻找的是固定的 gop 和 fps!要实现这一点,只需将流 avg_frame_ratetune 设置为 zerolatency,仅此而已。

有效!

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。