我通过 swscale 运行 png 图像数据以获取 YUV420P 数据,然后使用 MSMPEG4V1 编解码器对该帧进行编码,从而在 iPhone 上对一些视频进行编码。在 api 文档中,avcodec_encode_video 应该返回该编码操作从输出缓冲区使用的字节数。有 234,000 个字节进入编码器,但 avcodec_encode_video 返回的结果只是“4”。结果与 24 帧完全相同。这里似乎有些可疑……有什么见解吗?
这是代码的pastebin链接:
(对不起,链接远离SO,我只是不想在几个地方重复代码)
编辑:
另外,我已经为 ffmpeg 设置了一个自定义日志回调,并且我将日志级别设置为“详细”(libavutil/log.h),所以 libavcodec 应该将任何错误记录到控制台,但 avcodec 很安静他整个操作。(注意:我做了测试以确保我的日志回调正常工作)