FFmpeg.AutoGen将h264 MP4解码为图像

时间:2014-07-28 08:37:06

标签: video ffmpeg mp4 h.264

我一直在尝试使用FFmpeg.AutoGen(https://github.com/Ruslan-B/FFmpeg.AutoGen)包装器。我已经成功地将MPG文件解码为.NET流中的位图。但是解码MP4(h264)文件会给我FFmpegInvoke.avcodec_decode_video2的负返回值。

我已尝试设置标记(例如pCodecContext-> flags2 | = FFmpegInvoke.CODEC_FLAG2_CHUNKS;)但我没有从流中获取成功的图像。所以我正在寻找的是使用FFmpeg.AutoGen将h264解码为图像的工作示例。我知道有人有这个工作(见How to get a byte** from managed byte[] buffer)所以有可能!

1 个答案:

答案 0 :(得分:1)

我成功地使用来自项目的演示应用程序和Ernstjan提供的mp4文件成功解码视频,之所以破坏 - 编解码器上下文仅使用编码信息初始化所有默认值,显然这还不够。

幸运的是codecContext变量仍然包含最初由av_find_stream_info发现的编码上下文,因此我们可以重复使用它,它对我来说很好。

因此,快速而肮脏的解决方案将取代这一行:

AVCodecContext* pCodecContext = FFmpegInvoke.avcodec_alloc_context3(pCodec);

使用:

AVCodecContext* pCodecContext = &codecContext;

我将更新演示应用程序,以显示如何获得正确的编解码器上下文的几种不同方法。