кодировать массив \ список изображений для видео MP4 в xamarin - PullRequest
0 голосов
/ 24 октября 2019

Я создаю приложение, которое кодирует поток изображений или массив изображений в видео MP4 в формах Xamarin. Я не смог найти ничего, что работает с формами 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 голосов
/ 24 октября 2019

Как вы уже заметили из своего исследования, вы просто не можете обойти определенные уровни платформы, пытаясь сделать что-то подобное. Технически, вы могли бы делать почти все на уровне ядра в C #, просто загружая и сохраняя файл в зависимости от платформы, но это, конечно, потребовало бы написания кода кодировки самостоятельно.

Я бы, наверное, пошел следующим образом:

FFmpeg на Android

  1. Установите Xamarin.Android.MP4Transcoder NuGet в свой проект Android (не устанавливайте наосновной проект вообще). Если это не сработает, пожалуйста, прокомментируйте точную ошибку.
  2. Посмотрите на README.md в репозитории GitHub для примера того, как библиотека может использоваться для кодированияфайл mp4.
  3. Используйте DependencyService в основном проекте для вызова кода кодирования видео в проекте Android.

AVAssetWriter на iOS

iOS имеет встроенную поддержку для создания, воспроизведения и редактирования видеофайлов в формате mp4 (и других), предоставляемую платформой AVFoundation. Было бы целесообразно использовать это, поскольку он уже хорошо документирован, протестирован и доступен в качестве основного компонента (нет проблем с лицензированием библиотек с открытым исходным кодом и т. Д.).

Опять же, вы должны реализовать код в проекте iOS и вызывать его из ядра, используя DependencyService. Существует множество примеров того, как использовать AVAssetWriter для кодирования файла mp4 из потока или набора изображений.

Может быть, посмотрите на образец PhotoFilter из Xamarin, если хотитепосмотрите, какие классы участвуют в процессе кодирования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...