gpt4 book ai didi

libavcodec - Avformat无法搜索文件开头

转载 作者:行者123 更新时间:2023-12-01 15:47:29 24 4
gpt4 key购买 nike

我需要在H.264容器中快速搜索MP4编码的视频流。我使用libav解码帧,因此偶然发现avformat_seek_file()方法。

我的问题是,假设H.264流以关键帧开头,而当我寻求时间戳0(无论time_base如何)时,我应该处于流的开始。但我不是。我通常会花几秒钟观看视频。另外,如果我寻求例如10秒,我通常会达到12左右。关键帧是否有可能如此“稀有”?看来AVSEEK_FLAG_ANY对搜索结果没有影响。在多个FullHD H.264 MP4视频上进行了测试。

码:

unsigned long seekTo = 0;
//Doesen´t actually matter for 0 since it will be also 0
seekTo = av_rescale_q(seekTo, AVRational{1, AV_TIME_BASE}, pFormatCtx->streams[videoStream]->time_base);
int result = avformat_seek_file(pFormatCtx, videoStream, INT_FAST64_MIN, seekTo, seekTo, AVSEEK_FLAG_ANY);
avcodec_flush_buffers(pCodecCtx);

最佳答案

尝试改用av_seek_frame。阅读here,了解有关使用它和四处寻找的一些技巧。

关于libavcodec - Avformat无法搜索文件开头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22416396/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com