在Windows 8 Metro应用中音频/视频捕获

4

我正在处理从网络摄像头捕获音视频的问题,这是针对Windows 8 Metro Style而不是桌面模式。我计划编写一个库,以便任何应用程序都可以使用这个库来流式传输视频。 Windows 8为Windows 8 Metro模式提供了Direct X和Win RT。 我有点困惑,不知道该用哪个来完成这个任务。 Win RT是否足够检测摄像头并捕获音视频? 这里需要Direct X参与吗?

2个回答

2

现在的问题是我应该使用哪种语言。我们可以使用WinRT同时在C++和C#中开发库。使用C++和C#有什么利弊,请考虑这个库将被UI用于显示视频。UI可以使用任何适合Windows 8 Metro模式的技术。请给出您的意见。 - Vikram Ranabhatt
该样例的“技术”标明为“HTML5,Windows Runtime”。鉴于它明确表示使用WinRT,您为什么说WinRT不足够呢? - Joe White
@JoeWhite 之前我感到困惑,因为在以前的 Windows 版本中,媒体相关的内容大多由 DirectX 覆盖。但在 Windows 8 中,DirectX 处于低级别状态,所有的 Win RT Api 反过来都调用 Direct X api。 - Vikram Ranabhatt

1

WinRT本身提供了音频/视频捕获API,位于Windows.Media.Capture命名空间下。您不需要使用DirectX。以下C#代码记录带有声音的视频并保存到当前用户的“视频”文件夹中。

var settings = new MediaCaptureInitializationSettings();
settings.StreamingCaptureMode = StreamingCaptureMode.AudioAndVideo;
var capture = new MediaCapture();
await capture.InitializeAsync(settings);

var profile = MediaEncodingProfile.CreateMp4(VideoEncodingQuality.Auto);
var file = await KnownFolders.VideosLibrary.CreateFileAsync("captured.mp4", CreationCollisionOption.GenerateUniqueName);
await capture.StartRecordToStorageFileAsync(profile, file);

如果只需要音频捕获,请使用 StreamingCaptureMode.AudioMediaEncodingProfile.CreateM4a()


1
如何在控件中显示它? - Kumar Ravi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接