0
我想生成的視頻只有FLV文件,我使用:視頻編碼只FLV
- libx264 + ffmpeg的 使用VLC 2.0.1
- 30 FPS(固定)
- 播放完成和的Flowplayer
當播放幀速率似乎每秒〜1幀中的FLV,以下是這樣我CFG的ffmpeg:
AVOutputFormat* fmtOutput = av_oformat_next(0);
while((0 != fmtOutput) && (0 != strcmp(fmtOutput->name, "flv")))
fmtOutput = av_oformat_next(fmtOutput);
m_pFmtCtxOutput = avformat_alloc_context();
m_pFmtCtxOutput->oformat = fmtOutput;
AVStream* pOutVideoStream= av_new_stream(m_pFmtCtxOutput, pInVideoStream->id);
AVCodec* videoEncoder = avcodec_find_encoder(CODEC_ID_H264);
pOutVideoStream->codec->width = 640;
pOutVideoStream->codec->height = 480;
pOutVideoStream->codec->level = 30;
pOutVideoStream->codec->pix_fmt = PIX_FMT_YUV420P;
pOutVideoStream->codec->bit_rate = 3000000;
pOutVideoStream->cur_dts = 0;
pOutVideoStream->first_dts = 0;
pOutVideoStream->index = 0;
pOutVideoStream->avg_frame_rate = (AVRational){ 30, 1 };
pOutVideoStream->time_base =
pOutVideoStream->codec->time_base= (AVRational){ 1, 30000 };
pOutVideoStream->codec->gop_size = 30;
%% Some specific libx264 settings %%
m_dVideoStep = 1000;// packet dts/pts is incremented by this amount each frame
pOutVideoStream->codec->flags |= CODEC_FLAG_GLOBAL_HEADER;
avcodec_open(pOutVideoStream->codec, videoEncoder);
除了播放幀率之外,生成的文件似乎還行,。具有記住
:
- pOutVideoStream-> avg_frame_rate =(AVRational){30,1};
- pOutVideoStream-> time_base =(AVRational){1,30000};
- pOutVideoStream-> codec-> time_base =(AVRational){1,30000};
- 對於每一幀我增加了1000
的DTS/PTS我在做什麼錯在這裏?爲什麼文件播放起伏不定(〜1 fps)?
任何幫助將不勝感激。
Nadav在Sophin
1/1000是flv格式的限制。 – szatmary 2013-07-13 00:07:21