Вы также можете использовать настраиваемое связующее вместо связующего по умолчанию в случаях, когда у вас нет возможности конвертировать поля в свойства.
Прокрутите входные данные формы и установите их с помощью отражения. MemberInformation
- это мой класс, но вы можете просто использовать FieldInfo
.
Это не делает граф объектов, но если мне нужна эта способность, я усилю свой ответ. Кортеж в foreach
использует c # 7.0. Он также предполагает, что вы сохранили свой объект из предыдущего GET
до этого POST
.
using CommonBusinessModel.Metadata;
using GHCOMvc.Controllers;
using System;
using System.Linq;
using System.Web.Mvc;
namespace AtlasMvcWebsite.Binders
{
public class FieldModelBinder : DefaultModelBinder
{
// this runs before any filters (except auth filters)
public override object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
{
var form = controllerContext.HttpContext.Request.Form;
Type type = typeof(GHCOBusinessModel.GHCOPPAType);
AtlasKernelBusinessModel.VersionedObject instance = PolicyController.Policy;
foreach ((var value, var member) in (from string input in form
let fi = type.GetField(input)
where fi != null
let mi = new MemberInformation(fi, instance)
where !mi.ReadOnly
select (form[input], mi)))
member.SetValue(value);
return instance;
}
}
}
GStreamer является популярным выбором. Это - полная мультимедийная платформа во многом как DirectShow или QuickTime, имеет преимущество имения в наличии юридически лицензированных кодеков и имеет превосходную привязку Python.
ffmpeg является замечательной программой (с открытым исходным кодом) для создания всех видов видео и преобразования одного типа видео (последовательность изображений в этом случае) в другие типы видео.
Обычно это используется из командной строки, но это - действительно просто обертка вокруг ее внутренних библиотек. Это явно доступно, чтобы использоваться из другой программы.
Существует также привязка Python, которая переносит c API, хотя этот конкретный проект, кажется, не получает лучшую поддержку (существуют, вероятно, другие проекты, там делающие то же самое).
Существует также эта ссылка, где кто-то использовал ffmpeg, чтобы сделать что-то подобное тому, что Вы ищете.
Не библиотека, но mplayer имеет способность закодировать последовательности JPEG к любому виду формата. Это работает на Linux, Windows, BSD и других платформах, и можно записать сценарий Python, если Вы хотите использовать его с Python.
в C++ OpenCV (библиотека Computer Vision с открытым исходным кодом от Intel) позволяют Вам создать файл AVI и просто продвинуть кадры внутри...
но это похоже на стрельбу с орудием мухе.
ffmpeg имеет API и также привязку Python, кажется, способ пойти!
Спасибо