C# 如何从视频流中获取图像或帧?

C# 如何从视频流中获取图像或帧?,c#,arm,win-universal-app,C#,Arm,Win Universal App,我试图找到一种从流中获取视频帧的方法,这样帧就可以通过网络实时发送。视频流来自USB网络摄像头并记录到(strm) 我尝试在Windows 10应用程序中使用AForge.Video.dll和AForge.Video.Directshow.dll使用AForge和Directshow,但据我测试,这些库不受支持,并且。在不知道流格式的情况下,任何人都很难帮助您请查看我的编辑。希望我能理解你所说的“格式”。我指的是流格式,因为我看到的是mp4流?是的,它是mp4。尽管它最好只录制视频。请参阅编辑。

我试图找到一种从流中获取视频帧的方法,这样帧就可以通过网络实时发送。视频流来自USB网络摄像头并记录到(strm)


我尝试在Windows 10应用程序中使用AForge.Video.dll和AForge.Video.Directshow.dll使用AForge和Directshow,但据我测试,这些库不受支持,并且。

在不知道流格式的情况下,任何人都很难帮助您请查看我的编辑。希望我能理解你所说的“格式”。我指的是流格式,因为我看到的是mp4流?是的,它是mp4。尽管它最好只录制视频。请参阅编辑。如果其编码为mp4,则可能使用h264编解码器,在这种情况下,您将无法按您希望的方式从中获取单个帧。如果是MJPEG,你可以把图像拿出来。这里有一个技巧,将数据写入文件,然后使用MediaInfo打开文件,它可以检测数据是否是h264流的一部分,并让您知道。这里有一段视频,我反向设计了一个安全摄像头协议,并让它在FFPlay中播放。我认为它应该给你一些反向工程你的流的提示。不知道流的格式将是非常困难的任何人帮助你,请查看我的编辑。希望我能理解你所说的“格式”。我指的是流格式,因为我看到的是mp4流?是的,它是mp4。尽管它最好只录制视频。请参阅编辑。如果其编码为mp4,则可能使用h264编解码器,在这种情况下,您将无法按您希望的方式从中获取单个帧。如果是MJPEG,你可以把图像拿出来。这里有一个技巧,将数据写入文件,然后使用MediaInfo打开文件,它可以检测数据是否是h264流的一部分,并让您知道。这里有一段视频,我反向设计了一个安全摄像头协议,并让它在FFPlay中播放。我认为它应该给你一些反向工程的提示。
deviceSettings = new MediaCaptureInitializationSettings();
deviceSettings.StreamingCaptureMode = StreamingCaptureMode.Video;
mediaCapture = new MediaCapture();
await mediaCapture.InitializeAsync(deviceSettings);

MediaEncodingProfile recordProfile = MediaEncodingProfile.CreateMp4(VideoEncodingQuality.Auto);
IRandomAccessStream strm = new InMemoryRandomAccessStream();
await mediaCapture.StartRecordToStreamAsync(recordProfile, strm);

strmSize = (uint)strm.Size;
using (var datareader = new DataReader(strm.GetInputStreamAt(strmSize)))
{
    //Here I want to get the byte length that would represent the image to be read
    //but we don't know how many bytes the image is comprised of.
    strmSize = (uint)strm.Size;

    await datareader.LoadAsync(strmSize);
    byte[] frameByte = new byte[strmSize];
    datareader.ReadBytes(frameByte);
}