3
我試圖用毫秒與ffmpeg尋求視頻。我一直在嘗試使用this question中的代碼,它使用avformat_seek_file
(我將它與-1一起用於流號碼和AVSEEK_FLAG_ANY標誌)。如何用mfc尋找ffmpeg?
後調用,我試着讀下一幀,即:
if (av_read_frame(fmt_ctx, &pkt) >= 0)
{
int ret = 0;
if (pkt.stream_index == video_stream_idx) {
/* decode video frame */
ret = avcodec_decode_video2(video_dec_ctx, frame, got_frame, &pkt);
if (ret < 0) {
fprintf(stderr, "Error decoding video frame\n");
return ret;
}
//do something with frame
}
然而,檢索到的幀的frame->pts
始終保存着之前讀取最後幀後立刻幀的時間求。
編輯:儘管frame-> pts形成了不間斷的序列,但尋找確實發生。對於一些奇怪的原因,我讀的第一幀是第一幀。事實上,在我運行後:
int got_frame = 0;
do
if (av_read_frame(fmt_ctx, &pkt) >= 0) {
decode_packet_ro(&got_frame, 0);
av_free_packet(&pkt);
}
else
{
read_cache = true;
pkt.data = NULL;
pkt.size = 0;
break;
}
while(!got_frame || this->frame->pts*av_q2d(video_dec_ctx->time_base) * 1000 < tsms);
我讀的下一幀總是第一個。
你能解決這個問題嗎?我也遇到了同樣的問題,無論我在哪裏總是得到第一幀(關鍵幀?) – autonomy
我是;我會嘗試找到最終的代碼並將其作爲答案發布 – Srv19