1
我试图使用ffmpeg API将原始YUV视频编码为MPEG-2。使用ffmpeg API的MPEG-2视频编码:比ffmpeg.exe更大的文件大小
我的问题是API - 生成的文件大约是。比由ffmpeg本身产生的等效文件大1.7倍。
我使用量化参数(通过qmin
和qmax
)而不是比特率。
的API -version基本上是:
//...
pCodecCtx->pix_fmt = PIX_FMT_YUV420P;
pCodecCtx->qmin = 3;
pCodecCtx->qmax = 3;
pCodecCtx->time_base.num = 1;
pCodecCtx->time_base.den = 30;
avcodec_open(pCodecCtx, avcodec_find_encoder(CODEC_ID_MPEG2VIDEO));
//...
while(/*...*/) {
avcodec_encode_video(pCodecCtx, pOutbuf, outbufSize, pPicture);
//..
}
//...
对于的ffmpeg本身,我用命令:
ffmpeg -s 352x288 -r 30 -i foreman_352x288.yuv -f mpeg2video -vcodec mpeg2video -r 30 -pix_fmt yuv420p -qmin 3 -qmax 3 foreman.m2v
为什么API -generate文件实现一个5212 kb/s的比特率和由生成的文件ffmpeg为相同的qp
3047 kb/s的比特率? (更令人费解的是,较小的版本具有稍高的PSNR,40.49dB与40.02dB)。
是否还有其他相关参数我错过了? ffmpeg实际上是否尊重量化参数?