我正在使用QtFFMPEG包装器(https://code.google.com/p/qtffmpegwrapper/)和Qt 5.4以及MSCV 2012.我想以25 fps和高配置文件从图像文件中编码mp4视频。 我使用了here
中的createFile()和encodeImage()函数我使用以下参数:
pCodecCtx=pVideoStream->codec;
pCodecCtx->codec_id = pOutputFormat->video_codec;
pCodecCtx->codec_type = ffmpeg::AVMEDIA_TYPE_VIDEO;
pCodecCtx->profile=FF_PROFILE_H264_HIGH;
pCodecCtx->bit_rate = Bitrate;
pCodecCtx->width = getWidth();
pCodecCtx->height = getHeight();
pCodecCtx->time_base.den = fps;
pCodecCtx->time_base.num = 1;
pCodecCtx->gop_size = 10;
pCodecCtx->pix_fmt = ffmpeg::PIX_FMT_YUV420P;
pCodecCtx->qmin = 10;
pCodecCtx->qmax = 51;
FFMPEG变量是:
License: %s
GPL version 3 or later
AVCodec version %d
3476480
AVFormat configuration: %s
--disable-static --enable-shared --enable-gpl --enable-version3 --enable-runtime-cpudetect --enable-avisynth --enable-bzlib --enable-frei0r --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libfreetype --enable-libgsm --enable-libmp3lame --enable-libopenjpeg --enable-librtmp --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxavs --enable-libxvid --enable-zlib
现在我现在收到一个包含以下属性的视频:
ID : 1
Format : AVC
Format/Info : Advanced Video Codec
Format profile : Main@L3.2
Format settings, CABAC : No
Format settings, ReFrames : 1 frame
Format settings, GOP : M=1, N=10
Codec ID : avc1
Codec ID/Info : Advanced Video Coding
Duration : 4s 320ms
我希望个人资料为" High"和3个ReFrames的CABAC是肯定的。我如何实现这一目标?我尝试设置配置文件,coder_type和max_b_frames但没有帮助。有时生成的文件甚至没有播放。任何人都可以帮忙。感谢。
我也尝试过使用av_opt_set()方式但找不到该功能。只有我有的功能是av_opt_set_dict(),我错过了什么 - 过时的FFMPEG或缺少#include。
也试过这个,没有帮助 -
ffmpeg::AVDictionary *opt = NULL;
int iRes = av_dict_set(&opt, "profile", "high", 0);
av_opt_set_dict(pFormatCtx->priv_data, &opt);
av_opt_set_dict(pFormatCtx, &opt);
请帮忙。
编辑: 我通过改变qmin和qmax值获得了高质量的mp4,然后通过命令行重新编码大尺寸输出。我将按照Ronald的建议尝试升级FFMPEG。请暂时关闭此问题。
答案 0 :(得分:1)
AVCodec version %d 3476480
该版本(libavcodec 53.12.0)是从2011年10月开始,请更新为更新的版本。正如您在H264 encoding wiki docs中看到的,您的设置将适用于最新版本的ffmpeg。 (另外请分享您的其余代码,您只是显示设置您的设置的代码,但不是代码的任何其他部分,因此我无法重现任何内容。)