我正在构建一个应用,该应用将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进行编码-注意到工作量太大。
有没有办法在每个平台特定的视频上不对视频进行编码?
谢谢!
答案 0 :(得分:0)
正如您从研究中已经注意到的那样,在尝试执行此类操作时,您根本无法绕过特定于平台的层。从技术上讲,您可以在C#核心层上几乎完成所有工作,而只是文件加载和保存是特定于平台的,但这当然需要您自己编写编码代码。
我可能会通过以下方式进行处理:
Android上的FFmpeg
iOS上的AVAssetWriter
iOS具有开箱即用的支持,用于创建,播放和编辑由AVFoundation框架提供的mp4(和其他)视频文件。使用它是有道理的,因为它已经得到了充分的文档记录,测试并可以作为核心组件使用(没有麻烦的开源库许可等)。
同样,您应该在iOS项目上实现代码,并使用DependencyService从核心调用它。关于如何使用AVAssetWriter编码来自流或一堆图像的mp4文件的示例很多。
如果您想了解编码过程涉及哪些不同的类,也许看一下Xamarin的PhotoFilter示例。