[Libav-user] ffmpeg read multiple packets and keep them in buffer.
Mohamed-Ismail Mejri
imejri at sabsystem.com
Tue Jan 24 12:59:33 EET 2017
Hi,
I want to decode same packets before send it to the player, because
avformat_find_stream_info() take long time to scan, I want to replace it
by a simple function, but now I am losing the decoded packets after this
function and this make the player take time to show the first picture.
So, how I can read multiple packets in ffmpeg without deleting it after
"av_packet_unref()"?
In otherwise how I can repointing to the first packet decoded after
terminate scanning with this function.
Or if you have any another idea to speed up the scan process?
my function:
found=av_read_frame(m_pFormatContext,&pkt1);
if (found == AVERROR(EAGAIN))
{
Close();
return false;
}
pkt = &pkt1;
str = m_pFormatContext->streams[pkt->stream_index];
if (str->codec->codec_type == AVMEDIA_TYPE_VIDEO && testv < 2) {
gotFrame = 0;
frame = av_frame_alloc();
m_codec=avcodec_find_decoder(str->codec->codec_id);
str->codec=avcodec_alloc_context3(m_codec);
if (avcodec_open2(str->codec, m_codec, NULL) >= 0) {
fine = avcodec_decode_video2(str->codec, frame, &gotFrame, pkt);
if (fine >= 0)
{
testv = testv + gotFrame + 1;
}
av_frame_free(&frame);
}
}
Reply to me if you need more information.
I hope what I have requested is possible.
Best regards,
Ismail MEJRI.
More information about the Libav-user
mailing list