Look up the documentation, найти VideoFileWriter Class, посмотрите на это members см WriteVideoFrame method(s), читать line: «Написать новый кадр видео в открытом в данный момент видеофайл». Бинго. Почти на месте.
Если вы не можете соединить точки, читая подписи методов (WriteVideoFrame(Bitmap)
) или не понимают, как использовать Open()
overloads или Close()
method (почему бы не вы, последние две довольно общие для файла I/O) вы всегда можете Google "VideoFileWriter WriteVideoFrame example", find code, идите оттуда. Мясо функции есть:
VideoFileWriter writer = new VideoFileWriter();
writer.Open("myfile.avi", width, height, 25, VideoCodec.MPEG4, 1000000);
// ... here you'll need to load your bitmaps
writer.WriteVideoFrame(image);
}
writer.Close();
Так что-то вроде этого, вероятно, следует работать:
using (VideoFileWriter writer = new VideoFileWriter())
{
writer.Open(@"d:\myfile.avi", 640, 480, 25, VideoCodec.MPEG4);
foreach (var file in Directory.GetFiles(@"d:\foo\bar", "*.jpg"))
{
writer.WriteVideoFrame(Bitmap.FromFile(file) as Bitmap);
}
writer.Close();
}
Который, с несколько минут возился вокруг, дал мне что-то вроде этого:
var size = new Size(1600, 1200); // The desired size of the video
var fps = 25; // The desired frames-per-second
var codec = VideoCodec.MPEG4; // Which codec to use
var destinationfile = @"d:\myfile.avi"; // Output file
var srcdirectory = @"d:\foo\bar"; // Directory to scan for images
var pattern = "*.jpg"; // Files to look for in srcdirectory
var searchoption = SearchOption.TopDirectoryOnly; // Search Top Directory Only or all subdirectories (recursively)?
using (var writer = new VideoFileWriter()) // Initialize a VideoFileWriter
{
writer.Open(destinationfile, size.Width, size.Height, fps, codec); // Start output of video
foreach (var file in Directory.GetFiles(srcdirectory, pattern, searchoption)) // Iterate files
{
using (var original = (Bitmap)Image.FromFile(file)) // Read bitmap
using (var resized = new Bitmap(original, size)) // Resize if necessary
writer.WriteVideoFrame(resized); // Write frame
}
writer.Close(); // Close VideoFileWriter
} // Dispose VideoFileWriter
Изменение размера изображения; не все изображения в последовательности должны быть одинаковыми. Если они являются вы можете пропустить этот шаг, просто изменив
using (var original = (Bitmap)Image.FromFile(file)) // Read bitmap
using (var resized = new Bitmap(original, size)) // Resize if necessary
writer.WriteVideoFrame(resized); // Write frame
к:
using (var mybitmap = (Bitmap)Image.FromFile(file)) // Read bitmap
writer.WriteVideoFrame(mybitmap); // Write frame
Также убедитесь, что вы добавляете правильные using
заявления; Вы, как минимум, необходимо следующее для приведенных выше примеров:
using AForge.Video.FFMPEG;
using System.Drawing;
using System.IO;
Также вам нужно ссылаться на DLL файлы, как описано here:
... Вы должны были создать проект, добавлена ссылка на библиотеку AForge.Video.FFMPEG, установите целевую платформу на x86 и версию целевой платформы до версии 3.5 или ниже. Если это так, это может продолжаться.
... нам нужно еще несколько библиотек из архива AForge. Вы можете найти их в папке «Внешние файлы \ ffmpeg» внутри архива AForge. Все файлы в этой папке должны быть скопированы в выходную папку вашего проекта Visual Studio. (После того, как мы изменили целевую архитектуру это сейчас должно быть «YourProjectFolder \ Bin \ x86 \ Debug».)
Если он все еще не работы, то скажите нам, что происходит, точные сообщения об ошибках и т.д.
[Который «AForge.Net»] (https://www.nuget.org/packages?q=AForge.NET)? Вы посмотрели [документацию и/или образцы] (http://www.aforgenet.com/framework/)? – RobIII
@Roblll => да .. я смотрю документацию. – Yanshof
... и? Вы смотрели на него так, как будто вы смотрите на заднюю часть книги в книжном магазине?Или вы на самом деле * прочитали * его и попытались понять его? Если да: что не ясно? С чем вам нужна помощь? Можете ли вы задать * конкретный * вопрос/код показа, который вы уже пробовали? Также: взгляните на [это] (http://stackoverflow.com/questions/9744026/image-sequence-to-video-stream). – RobIII