FFMPEG帧率设置总结
正常情况下可以通过AVCodecContext结构体中的time_base来设置帧率,如下设置帧率30
AVCodecContext* pVideoCtx = avcodec_alloc_context3(video_encoder);
pVideoCtx->time_base.num = 1;
pVideoCtx->time_base.den = 30;
但是有些情况设置不会有任何反应,那么可以通过下面两种方式配置:
1.在写包之前通过设置pts(设置帧率30)
packet->pts = packet->dts = packetCount * (ofmt_ctx->streams[0]->time_base.den) /ofmt_ctx->streams[0]->time_base.num / 30;
packetCount++;
av_interleaved_write_frame(ofmt_ctx, packet);
2.在写输出文件头的时候设置
AVDictionary* opt = NULL;
av_dict_set_int(&opt, "video_track_timescale", 25, 0);
avformat_write_header(ofmt_ctx, &opt);
AVDictionary *dictParam = 0;
av_dict_set(&dictParam, "preset", "medium", 0);
av_dict_set(&dictParam, "tune", "zerolatency", 0);
av_dict_set(&dictParam, "profile", "main", 0);
avcodec_open2(pVideoCtx, video_encoder, &dictParam );
版权声明:本文为weixin_42717961原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。