3

我正在尝试在 Win10 Pro Insider Preview 上使用 H.265 编码器 MFT 对视频进行编码。

  • 最初我在自己的程序中创建/初始化一个 H.265 编码器并调用 ProcessInput/ProcessOuput,它在 ProcessOuput 内部崩溃(它没有在第一帧崩溃,而是在处理了几帧后崩溃)。
  • 为了简化问题,我使用 IMFSinkWriter 创建了一个接收器,因此帧编码/写入完全由 sinkwriter 处理。但不幸的是,mfh265enc.dll 内部仍然发生崩溃。

    请注意,在上述两种情况下,我所做的更改是针对可以成功编码 H.264 视频的程序。我只更改了 Encoder/SinkWriter 的输出媒体类型(将子类型从 H.264 更改为 H.265)。视频帧的构建方式,提供给编码器/接收器的方式保持不变。使用 H.264 编码时一切正常,但一旦更改为 H.265,它就崩溃了。

  • 然后我转向Win7 SDK 附带的示例程序:MFCaptureToFile,它可以将视频捕获为 MP4 文件。

    我确定 H.265 编码器可以接受来自摄像机的视频格式。

    我所做的唯一更改是传递给 SinkWrite.AddStream 的输出媒体类型。

    我已将子类型更改为 MFVideoFormat_HEVC,并将 MF_MT_MPEG2_PROFILE 设置为 1 (eAVEncH265VProfile_Main_420_8)。

    但是通过上述 2 项更改,程序仍然崩溃。显示“MFCaptureToFile.exe 中 0x5A025085 (mfh265enc.dll) 处的未处理异常:0xC0000005:访问冲突读取位置 0xFFFFFFFF”

    这是我对 MFCaptureToFile 程序所做的更改。 https://www.dropbox.com/s/oytqen13m7bcs23/DIFF.PNG?dl=0

希望有人可以提供帮助。谢谢

4

1 回答 1

1

这是 Windows 10(内部版本 10240)的 RTM 版本和任何以前的 Windows Insider 版本中的错误。

我可以确认此错误已在最新的 Insider 版本 (10532)中得到修复,但目前还没有公开发布日期来确定何时将修复推送给所有 Windows 用户。

我注意到在 Visual Studio 中的 x64 版本上不会出现此问题,因此如果构建 64 位版本的应用程序是可接受的解决方法,这可能有助于在此修复程序公开之前解除阻止人们。

于 2015-09-03T17:33:44.100 回答