Слияние видео в C#
(Обратите внимание, что этот пример был написан в Visual Studio 2010.)
Моя первоначальная проблема заключалась в том, что я создал кучу видео и вам нужно было добавить заставку в начале каждого. Этот пример объединяет видео, поэтому он позволяет мне делать именно это.
Прежде чем приступать к написанию кода, вам нужно добавить ссылки на библиотеки Microsoft Expression Encoder. См. Предыдущее сообщение для получения подробной информации о том, как получить начало.
Когда вы нажимаете кнопку этого примера +, программа отображает OpenFileDialog, чтобы добавить новый видеофайл в список. Если вы выберете файл в списке и нажмите кнопку & times; , программа удаляет его из списка.
После выбора файлов нажмите кнопку «Слияние». Следующий код объединяет видео в одно выходное видео.
// Создаем объединенное видео.
private void btnMerge_Click(object sender, EventArgs e)
{
if (sfdMerged.ShowDialog() != DialogResult.OK) return;
Cursor = Cursors.WaitCursor;
prgEncode.Value = 0;
prgEncode.Visible = true;
Refresh();
try
{
// Создаем задание.
using (Job job = new Job())
{
// Создаем один MediaItem, содержащий все источники.
MediaItem media_item =
new MediaItem(lstFiles.Items[0].ToString());
job.MediaItems.Add(media_item);
for (int i = 1; i < lstFiles.Items.Count; i++)
{
media_item.Sources.Add(
new Source(lstFiles.Items[i].ToString()));
}
// Установите выходной каталог.
FileInfo file_info = new FileInfo(sfdMerged.FileName);
job.OutputDirectory = file_info.DirectoryName;
// Задайте имя выходного файла.
media_item.OutputFileName = file_info.Name;
// Не создавайте подкаталог.
job.CreateSubfolder = false;
// Использовать оригинальный размер.
media_item.OutputFormat.VideoProfile.Size =
media_item.OriginalVideoSize;
// Установите обработчик события прогресса.
job.EncodeProgress += job_EncodeProgress;
// Кодировать.
job.Encode();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
Cursor = Cursors.Default;
prgEncode.Visible = false;
}
В коде сначала используется SaveFileDialog, чтобы вы могли выбрать имя выходного файла. Если вы выберете файл и нажмите «Сохранить», программа отобразит ProgressBar с именем prgEncode.
В коде сначала используется SaveFileDialog, чтобы вы могли выбрать имя выходного файла. Если вы выберете файл и нажмите «Сохранить», программа отобразит ProgressBar с именем prgEncode.
...
Затем код перебирается через другие видеофайлы, создавая Source для каждого и добавляя Source в MediaItem объект Источники. Когда цикл закончен, Job содержит один MedieItem, который содержит все источники видео.
Затем программа устанавливает каталог вывода задания и имя выходного файла медиафайла. Он присваивает свойству свойства CreateSubfolder задание значение false, устанавливает размер вывода элемента мультимедиа равным его исходному размеру видео (поэтому размеры видео не изменяются) и устанавливает обработчик события прогресса.
Наконец, код вызывает метод задания Encode. Этот метод объединяет видео в коллекции Sources в медиа-элементе и создает комбинированное видео.
