在Xamarin中将图像的阵列\图像列表编码为视频MP4

时间:2019-10-24 06:47:37

标签: xamarin xamarin.forms encode video-conversion

我正在构建一个应用,该应用将Xamarin形式的图像流或图像阵列编码为MP4视频。 我找不到适用于xamarin表单的任何内容,而我已经尝试过这些:

1。。FFmpeg-(不适用于xamarin本机,需要.netCore(安装任何相关的NuGet软件包时出现错误)
2。 libvlc-我认为它没有任何转换或编码功能。
3。。在Google,此处和xamarin论坛中搜索了解决方案。
4。 skiasharp-显然仅用于绘制2D,而不用于视频编码。
5。-Nreco-需要许可证。
6。。AviSharp/ Aforge / Mediacodec / etc-仅适用于iOS \ Android
7。从头开始对MP4进行编码-注意到工作量太大。

有没有办法在每个平台特定的视频上不对视频进行编码?

谢谢!

1 个答案:

答案 0 :(得分:0)

正如您从研究中已经注意到的那样,在尝试执行此类操作时,您根本无法绕过特定于平台的层。从技术上讲,您可以在C#核心层上几乎完成所有工作,而只是文件加载和保存是特定于平台的,但这当然需要您自己编写编码代码。

我可能会通过以下方式进行处理:

Android上的FFmpeg

  1. Xamarin.Android.MP4Transcoder NuGet安装到您的Android项目中(根本不要安装到核心项目中)。如果这不起作用,请评论确切的错误。
  2. 请查看GitHub存储库中的README.md,以获取有关如何使用该库对mp4文件进行编码的示例。
  3. 在核心项目中使用DependencyService在Android项目中调用视频编码代码。

iOS上的AVAssetWriter

iOS具有开箱即用的支持,用于创建,播放和编辑由AVFoundation框架提供的mp4(和其他)视频文件。使用它是有道理的,因为它已经得到了充分的文档记录,测试并可以作为核心组件使用(没有麻烦的开源库许可等)。

同样,您应该在iOS项目上实现代码,并使用DependencyService从核心调用它。关于如何使用AVAssetWriter编码来自流或一堆图像的mp4文件的示例很多。

如果您想了解编码过程涉及哪些不同的类,也许看一下Xamarin的PhotoFilter示例。