今天我将给大家介绍《将视频中的帧获取到矩阵中》,这篇文章主要会讲到等等知识点,不知道大家对其都有多少了解,下面我们就一起来看一吧!当然,非常希望大家能多多评论,给出合理的建议,我们一起学习,一起进步!
问题内容
我目前正在尝试为作业实现压缩算法(帧预测)。 我不是在寻找缩略图文件,甚至只是一个 shell 命令来为我生成一些东西。我的问题是专门将它与 golang 程序集成。
我才刚刚开始,就已经陷入困境了。我应该从视频中取出每一帧,将其分为IP帧和B帧并执行帧间编码(压缩帧本身),然后执行帧内编码(帧之间)。
现在我什至无法开始解决上述问题,因为我不知道如何将视频读取为可以在代码中使用的东西。显然,我能想到的唯一库是 FFmpeg。 FFMPEG 可以获取单独的帧,显然甚至是 i p 和 b 帧。
ffmpeg -i <inputfile> -vf '[in]select=eq(pict_type\,B)[out]' b.frames.mp4
但这只是另一个视频输出,我不知道如何打开。 我的想法是将帧输出到位图(?),然后分别读取每个位图,以重建 i 帧、p 帧和 b 帧的三个 3D 矩阵。然而,这似乎是一项壮举。某个地方的某个人肯定尝试过将视频解析为 3D 矩阵,并且找到了比我想象的更好的解决方案。
简而言之,我有一个视频,我需要一个 3D 矩阵。 3D 矩阵是 2D 矩阵的矩阵,代表视频中的帧。 3D 矩阵中的每个点都是一个像素(或视频中的任何等效项)。
解决方案
I/P/B 帧仅存在于原始比特流中。视频解码后,所有帧都是 I 帧。您可能想使用 ffmprg 解码为 yuv4mpegpipe 之类的内容,然后解析 Golang 程序中的输出。
以上就是本文的全部内容了。