Как вы уже заметили из своего исследования, вы просто не можете обойти определенные уровни платформы, пытаясь сделать что-то подобное. Технически, вы могли бы делать почти все на уровне ядра в C #, просто загружая и сохраняя файл в зависимости от платформы, но это, конечно, потребовало бы написания кода кодировки самостоятельно.
Я бы, наверное, пошел следующим образом:
FFmpeg на Android
- Установите Xamarin.Android.MP4Transcoder NuGet в свой проект Android (не устанавливайте наосновной проект вообще). Если это не сработает, пожалуйста, прокомментируйте точную ошибку.
- Посмотрите на README.md в репозитории GitHub для примера того, как библиотека может использоваться для кодированияфайл mp4.
- Используйте DependencyService в основном проекте для вызова кода кодирования видео в проекте Android.
AVAssetWriter на iOS
iOS имеет встроенную поддержку для создания, воспроизведения и редактирования видеофайлов в формате mp4 (и других), предоставляемую платформой AVFoundation. Было бы целесообразно использовать это, поскольку он уже хорошо документирован, протестирован и доступен в качестве основного компонента (нет проблем с лицензированием библиотек с открытым исходным кодом и т. Д.).
Опять же, вы должны реализовать код в проекте iOS и вызывать его из ядра, используя DependencyService. Существует множество примеров того, как использовать AVAssetWriter для кодирования файла mp4 из потока или набора изображений.
Может быть, посмотрите на образец PhotoFilter из Xamarin, если хотитепосмотрите, какие классы участвуют в процессе кодирования.