嗨,我是 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中的编码视频帧
答案 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的新手。但这行得通...有点。
可以肯定的是,您看到了吗?显然,您现在可以使用内置工具更轻松地对视频进行转码: 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