gpt4 book ai didi

ffmpeg - 在 FFmpeg 中获取宏 block 信息

转载 作者:行者123 更新时间:2023-12-04 22:59:04 35 4
gpt4 key购买 nike

我有一个 .mp4 文件,其中包含 h.264 视频和 AAC 音频。我想在解码时提取每帧的宏 block 和运动矢量信息。请在下面找到我的伪代码。

avformat_open_input(file_name) //opening file 
avcodec_open2(pCodecContext, pCodec, NULL) // opening decoder
while (response >= 0) // reading each frame
{
response = avcodec_receive_frame(pCodecContext, pFrame);
if (response == AVERROR(EAGAIN) || response == AVERROR_EOF || response < 0) {
break;
}
// extract macroblock of pFrame here
av_frame_unref(pFrame);
}

我在其他帖子中看到提到我们可以通过 MpegEncContext 结构获取 MB 信息,但我很困惑,以及如何实例化该结构的对象,结构的 MB 数据如何为每一帧更新。?

最终,我想使用 SAD(绝对差之和)比较一帧与另一帧的宏 block ,并在宏 block 级别有任何失真时触发警报。

如果有人对此提供帮助,我将不胜感激。

最佳答案

您可以从 AVFrame 结构中获取 MB 信息(MV 和其他)。在 AVFrame 中有一个成员 int16_t (*motion_val[2])[2] 可以获取 MV。

关于ffmpeg - 在 FFmpeg 中获取宏 block 信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55648705/

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