我编写了一些C代码来访问ffmpeg并将其包装在C ++ / CLI(.NET托管)类中。该程序获取实时视频流并提取帧并将其转换为PNG文件。
不幸的是,保存到磁盘的图像总是黑色的(在Notepad ++中打开它们表明它们已经充满了空值)。
我正在使用程序集aformat / codec-55.dll以及用于从ffmpeg-20131120-git-e502783-win64-dev编译的开发头文件和库。整个项目使用托管C ++(Cpp / cli).NET 4.0进行64位编译。
经过一些调查后,问题似乎是av_read_frame正确填充AVPacket->大小值,但AVPAcket->数据始终为空。当帧结束时(got == 1),AVFrame的数据只是一个空矩阵。 :(
这是代码: Example code (sorry, but it didnt paste well into SO)
我认为问题出在第34行,当数据包返回时如下:
请问,我怎样才能让它发挥作用?我做错了什么?
答案 0 :(得分:1)
解码部分对我来说似乎很好。我不太确定编码和编码保存到PNG。为什么不尝试使用fwrite将(frame->linesize*frame->height)
字节从frame->data
转储到磁盘并使用Irfanview查看(例如)?