【问题标题】:encode array\list of images to video MP4 in xamarin将数组\图像列表编码为 xamarin 中的视频 MP4
【发布时间】:2019-10-24 06:47:37
【问题描述】:

我正在构建一个应用程序,它将图像流或图像数组编码为 Xamarin 形式的 MP4 视频。 我找不到任何适用于 xamarin 表单的东西,我已经尝试过这些:

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

有什么方法可以在不对每个平台特定的视频进行编码的情况下做到这一点?

提前致谢!

【问题讨论】:

  • 需要支持哪些平台?
  • Android 和 iOS (Xamarin.forms)

标签: xamarin xamarin.forms encode video-conversion


【解决方案1】:

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

我可能会这样做:

Android 上的 FFmpeg

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

iOS 上的 AVAssetWriter

iOS 为创建、播放和编辑 mp4(和其他)视频文件提供了开箱即用的支持,由 AVFoundation 框架提供。使用它是有意义的,因为它已经有很好的文档记录、测试和作为核心组件可用(开源库的许可没有麻烦等)。

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

如果您想了解编码过程中涉及哪些不同的类,不妨看看来自 Xamarin 的 PhotoFilter 示例。

【讨论】:

    猜你喜欢
    • 2023-04-01
    • 1970-01-01
    • 2020-04-19
    • 2018-05-29
    • 2011-04-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-15
    相关资源
    最近更新 更多