【问题标题】:Is It Possible To Concatenate / Combine Video Files In WinRT?是否可以在 WinRT 中连接/合并视频文件?
【发布时间】:2014-11-04 16:40:04
【问题描述】:

我使用 C# 为 Windows 8.1 和 Windows Phone 8.1 编写了一个通用应用程序,允许用户录制视频并将其发送给客户,但现在需要将多个视频合并为一个视频,但看不到任何内容在 WinRT 中可用以支持这一点。

可以吗?

【问题讨论】:

  • 我感觉您需要了解更多有关相关文件编码的信息。如果它像将两个二进制文件合并为一个那样简单,那是非常可行的。如果二进制文件具有需要合并/删除的标题和元数据,那么您必须识别并找到它们。您可以直接访问字节流并且可以这样操作它们。
  • 我目前正在假设它们是相同的视频格式、分辨率等,并使用相同的相机记录在同一设备上
  • 格式等不一定重要。您需要了解的是文件编码的规范。考虑 [Header] + [Video Data] 的编码。合并这两个文件时,如果直接执行,您将得到 [Header1] + [Video1] + [Header2] + [Video2]。但是,如果您删除了 [Header2],那么您将得到 [Header1] + [Video1] + [Video2]。事情不会这么简单。您可能需要更改视频文件的标题以包含更新长度等内容。
  • 也可以简单地将第二个视频“录制”到第一个视频中。考虑指南here 及其对_mediaCapture.StartRecordToStreamAsync 的使用。可以简单地向它传递一个已经包含视频的流。创建一个长度为两者组合的新流,加载第一个流,寻找正确的位置,加载第二个流,从那里写入。您必须进行研究和试验才能找到答案,因为这不是直接支持的方案。

标签: c# windows-8 windows-runtime windows-8.1 windows-phone-8.1


【解决方案1】:

假设视频已经录制到驱动器中,您可以根据平台使用几种不同的技术将它们连接起来。让我们从 Windows 8.1 开始。在这个平台上,我们没有编辑 API,您需要以编程方式连接文件。

这可以使用Source ReaderSink Writer 来完成。这两个组件允许您从文件中读取音频和视频流,然后将它们写入另一个文件。您可以为每个流使用一个 Source Reader 和一个 Sink Writer。

Source Reader 能够解析文件容器并为您提供压缩或未压缩的样本。如果所有输入文件都具有完全相同的媒体类型,那么理论上您可以将未压缩的样本写入接收器写入器。您还需要使用此媒体类型配置接收器写入器。

如果您只是想连接文件,您可以从 Source Reader 1 读取样本并将它们发送到 Sink Writer。编写完 Source Reader 1 中的所有示例后,继续使用 Source Reader 2、3 等。

实现这一点的诀窍是在后续文件中重新设置媒体样本的时间戳。例如:如果您的帧速率为 30 FPS,并且最后写入的时间戳是 00:00:02:25(SMTP 非丢弃),您将需要修改从下一个源读取器获得的第一个时间戳为00:00:02:26。基本上,您需要将 00:00:02:25+1 添加到每个后续时间戳。您需要确保时间戳以预期的节奏 (30 FPS) 单调增加并且永不重复。

在 Windows Phone 8.1 上,这个问题更容易解决。在 WP8.1 中,我们引入了 Windows.Media.Editing 命名空间来帮助完成视频编辑任务。使用这些 API 真的很容易。这是 10,000 英尺的视图:

1) 创建一个MediaComposition 对象。

2) 设置编码配置文件。

3) 创建MediaClip 对象,代表您要连接的文件。

4) 将 MediaClip 对象添加到 MediaComposition 并设置入点和出点。

5) 将 MediaCompositon 渲染到文件中。

我希望我能为这两个提供一个很好的样本,但不幸的是,AFAIK 目前没有任何可用的东西。我实际上已经请求了 MediaComposition 样本,但我不确定它们的状态。

要索取更多样品,请访问此处:https://code.msdn.microsoft.com/windowsapps/site/requests

希望对你有帮助,

詹姆斯

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-01-12
  • 2023-03-15
  • 1970-01-01
  • 2013-06-15
  • 1970-01-01
  • 2016-04-13
  • 2019-04-15
相关资源
最近更新 更多