4

我编写了一些 C 代码来访问 ffmpeg 并将其包装在 C++/CLI(.NET 托管)类中。该程序获取实时视频流并提取帧并将其转换为 PNG 文件。

不幸的是,保存到磁盘的图像总是黑色的(在 Notepad++ 中打开它们显示它们充满了空值)。

我正在使用程序集 aformat/codec-55.dll 以及开发头文件和库从 ffmpeg-20131120-git-e502783-win64-dev 进行编译。整个项目是使用 64 位的托管 C++ (Cpp/cli) .NET 4.0 编译的。

经过一番调查,问题似乎是 av_read_frame 正确填充了 AVPacket->size 值,但 AVPAcket->data 始终为空。当帧完成(得到==1)时,AVFrame 的数据只是一个空矩阵。:(

这是代码: 示例代码(抱歉,它没有很好地粘贴到 SO)

我认为当数据包返回时,问题出在第 34 行,如下所示: 大小已设置但数据为空

请问,我怎样才能让它工作?我做错了什么?

4

1 回答 1

1

解码部分对我来说似乎很好。我不太确定编码和保存到 PNG。为什么不尝试使用 fwrite 将(frame->linesize*frame->height)字节转储frame->data到磁盘并使用 Irfanview(例如)查看它?

于 2013-12-11T11:21:19.803 回答