Слияние видео в 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 в медиа-элементе и создает комбинированное видео.