UWP:如何对原始视频帧进行H.264编码并获得编码的帧

时间:2019-02-06 14:41:10

标签: video uwp h.264

嗨,我是 UWP 编程的新手。 我们有一个现有的视频通话应用程序,正在UWP中移植到Windows。 我们现有的系统设计为,将摄像机原始帧(YUV帧)馈送到视频编码器(H.264或H.263)和编码的视频数据将打包并发送到网络。

要获取YUV相机数据,我正在使用 MediaCapture MediaFrameReader ,如https://docs.microsoft.com/en-us/windows/uwp/audio-video-camera/process-media-frames-with-mediaframereader

中所述

但是,我无法找到API来对这些视频帧进行编码并获取已编码的视频帧。

请帮助我,如何获得UWP中的编码视频帧

1 个答案:

答案 0 :(得分:0)

我几乎可以确定您无法在C#中做到这一点。我最近还没有接触媒体,但是直到几年前,您还必须使用C ++中的Media Foundation(MF)来完成所有视频转换工作。

Media Foundation Programming Guide

当一个MKV编解码器不存在时,我尝试(并且只有一半成功)将其制作回去,这就是我必须要解决的问题。这些编解码器基本上是黑匣子,MF会自动选择解码视频所需的编解码器。

要编写自己的编解码器(或使现有的编解码器与MF配合使用),您必须使用此tutorial。问题在于它使用WRL而不是较新的C ++ / WinRT。但是,哦。

此外,如果您想看看我制作MKV编解码器的糟糕尝试,请在此处查看:https://github.com/limefrogyank/MKVSource 我还是C ++的新手,还是MF的新手。但这行得通...有点。

2019年2月2日编辑

可以肯定的是,您看到了吗?显然,您现在可以使用内置工具更轻松地对视频进行转码: https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/MediaTranscoding

但是要合并您自己的编解码器,您可以按照本教程将使用MF和UWP创建的内容进行组合。 https://docs.microsoft.com/en-us/cpp/windows/wrl/walkthrough-creating-a-windows-store-app-using-wrl-and-media-foundation?view=vs-2017