我目前正在尝试为分配实现压缩算法(帧预测)。 我不是要查找缩略图文件,甚至不是要通过shell命令为我生成内容的命令。我的问题是专门将其与golang程序集成。
我刚刚开始,但已经陷入困境。我应该从视频中取出每个帧,将其分为I和B帧,然后执行帧间编码(压缩帧本身),然后执行帧内编码(在帧之间)。
现在,我什至无法开始解决上述问题,因为我不知道如何像在代码中那样使用视频。显然,我能想到的唯一库是ffmpeg。 FFMPEG可以得到单独的帧,显然甚至可以是i p和b帧。
ffmpeg -i <inputfile> -vf '[in]select=eq(pict_type\,B)[out]' b.frames.mp4
但这只是另一个视频输出,我不知道如何打开。 我当时想的是将帧输出到位图(?),然后分别读取每个位图,以重建三个3D矩阵,即i帧,p帧和b帧。但是,这似乎是一项壮举。肯定有人在某个地方尝试将视频解析为3D矩阵,并且找到了比我所想的更好的解决方案。
简而言之,我有一个视频,我需要一个3D矩阵。 3D矩阵是2D矩阵的矩阵,代表视频中的帧。 3D矩阵中的每个点都是一个像素(或视频中的等效点)。
答案 0 :(得分:1)
I / P / B帧仅存在于原始比特流中。视频解码后,所有帧均为I帧。您可能希望使用ffmprg解码为yuv4mpegpipe之类的内容,然后在golang程序中解析输出。