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 );

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值