Как раз работаю с подобным проектом, для создания видео, WPF/.Net.
Первая библиотека - Accord.Video.FFMPEG;
Пример:
writer = new VideoFileWriter();
writer.Open("_temp.mkv", 1280, 720, 5, VideoCodec.MPEG4, 1900000);
// Затем закидываем кадры:
RenderTargetBitmap rtb = new RenderTargetBitmap(
(int)canvas.ActualWidth, (int)canvas.ActualHeight, 96, 96,
PixelFormats.Default);
rtb.Render(canvas);
var bi = rtb.GetBitmap(1280, 720);
writer.WriteVideoFrame(bi);
С чего хватать кадры, не важно, у меня Canvas, можно и WebView.
Звук чуть сложней, либа - NAudio.Wave
var mixer = new MixingSampleProvider();
// Закидываем звук по времени.
var off = new OffsetSampleProvider(sampleSource);
off.DelayBy = TimeSpan.FromSeconds(sec);
mixer.AddMixerInput(off);
// Энкодим в файл
MediaFoundationEncoder.EncodeToMp3(mixer.ToWaveProvider16(), audioTempFileName, AUDIO_BITRATE);
// Затем эту пару скармливаем FFMpeg
string args = @"-err_detect ignore_err -i " + audioTempFileName + " -i " +
"_temp.mkv" + " -c copy -c:v libx264 -c:a libmp3lame -shortest " + outFileName; //libvorbis libfaac libmp3lame
RunProcess(args);
Более кардинальное решение это игровой движок Unity (C#), там море вкусностей, хотя и придется его полностью учить: 3D, GPU, камеры, запись в реальном времени и покадрово, редакторы анимаций и спец-эффектов.
Там есть компонент для записи камеры в видео файл, готовите сцену по данным, запускаете запись. Никакой возни с таймингами и промежуточным форматами.