Слияние видео в C#

(Обратите внимание, что этот пример был написан в Visual Studio 2010.)

Моя первоначальная проблема заключалась в том, что я создал кучу видео и вам нужно было добавить заставку в начале каждого. Этот пример объединяет видео, поэтому он позволяет мне делать именно это.

Прежде чем приступать к написанию кода, вам нужно добавить ссылки на библиотеки Microsoft Expression Encoder. См. Предыдущее сообщение Изменение качества видео в C# для получения подробной информации о том, как получить начало.

Когда вы нажимаете кнопку этого примера +, программа отображает 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 в медиа-элементе и создает комбинированное видео.

Источник: http://csharphelper.com/blog/2015/04/merge-videos-in-c/

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Adblock
detector