Встраивание видео в презентации PowerPoint с помощью C++

Microsoft PowerPoint предоставляет вам возможность добавлять видеокадры в презентации PowerPoint. Видео можно использовать для повышения качества презентаций и лучшего донесения информации до аудитории. Могут быть ситуации, когда вы хотите добавить видео в презентации PowerPoint программно. С этой целью эта статья научит вас встраивать видео в презентации PowerPoint с помощью C++.

C++ API для встраивания видео в презентации PowerPoint

Мы будем использовать API Aspose.Slides for C++ для встраивания видео в презентации PowerPoint. Это мощный и многофункциональный API, который поддерживает создание, чтение и изменение файлов PowerPoint без необходимости установки Mircosoft PowerPoint. Вы можете либо установить API через NuGet, либо загрузить его напрямую из раздела Загрузки.

PM> Install-Package Aspose.Slides.Cpp

Встраивание видео в презентации PowerPoint с помощью C++

Ниже приведены шаги для встраивания видео в презентацию PowerPoint.

В следующем примере кода показано, как встроить видео в презентацию PowerPoint с помощью C++.

// Пути к файлам
const String videoFilePath = u"SourceDirectory\\Video\\Wildlife.mp4";
const String outputFilePath = u"OutputDirectory\\EmbedVideo_out.pptx";

// Создайте экземпляр класса Presentation
SharedPtr<Presentation> presentation = MakeObject<Presentation>();

// Доступ к первому слайду
SharedPtr<ISlide> slide = presentation->get_Slides()->idx_get(0);

// Загрузите видеофайл для потоковой передачи
System::SharedPtr<System::IO::Stream> stream = System::MakeObject<System::IO::FileStream>(videoFilePath, System::IO::FileMode::Open, System::IO::FileAccess::Read);

// Добавьте видео в презентацию
System::SharedPtr<IVideo> vid = presentation->get_Videos()->AddVideo(stream);

// Добавить кадр видео
System::SharedPtr<IVideoFrame> videoFrame = slide->get_Shapes()->AddVideoFrame(50, 150, 300, 150, vid);

// Вставить видео внутрь видеокадра
videoFrame->set_EmbeddedVideo(vid);

// Установите режим воспроизведения и громкость видео
videoFrame->set_PlayMode(VideoPlayModePreset::Auto);
videoFrame->set_Volume(AudioVolumeMode::Loud);

// Сохранить презентацию
presentation->Save(outputFilePath, Aspose::Slides::Export::SaveFormat::Pptx);

Встраивание видео из веб-источника в презентации PowerPoint

Ниже приведены шаги для встраивания видео из веб-источника в презентацию PowerPoint.

В следующем примере кода показано, как внедрить видео из веб-источника в презентацию PowerPoint с помощью C++.

// Путь к файлу
const String outputFilePath = u"OutputDirectory\\EmbedVideoFromWeb_out.pptx";

// Создайте экземпляр класса Presentation
SharedPtr<Presentation> presentation = MakeObject<Presentation>();

// Доступ к первому слайду
SharedPtr<ISlide> slide = presentation->get_Slides()->idx_get(0);

// Добавьте видеокадр из веб-источника
System::SharedPtr<IVideoFrame> videoFrame = slide->get_Shapes()->AddVideoFrame(10, 10, 427, 240, u"https://www.youtube.com/embed/sZJorZmHiIk");

// Установите режим воспроизведения и громкость видео
videoFrame->set_PlayMode(VideoPlayModePreset::Auto);

// Сохранить презентацию
presentation->Save(outputFilePath, Aspose::Slides::Export::SaveFormat::Pptx);

Извлечение видео из презентаций PowerPoint с помощью C++

Ниже приведены шаги для извлечения видео из презентации PowerPoint с помощью C++.

  • Во-первых, загрузите файл PowerPoint с помощью класса Presentation.
  • Пролистайте слайды презентации.
  • Прокрутите фигуры на каждом слайде.
  • Для каждой фигуры проверьте, является ли фигура VideoFrame. Если это видеокадр, извлеките встроенное видео и сохраните его.

В следующем примере кода показано, как извлечь видео из презентации PowerPoint с помощью C++.

// Пути к файлам
const String sourceFilePath = u"OutputDirectory\\EmbedVideo_out.pptx";
const String outputFilePath = u"OutputDirectory\\ExtractVideoFromSlide_out.";

// Загрузите файл презентации
System::SharedPtr<Presentation> presentation = System::MakeObject<Presentation>(sourceFilePath);
{
	// Пролистайте слайды
	auto slide_enumerator = (presentation->get_Slides())->GetEnumerator();
	decltype(slide_enumerator->get_Current()) slide;
	while (slide_enumerator->MoveNext() && (slide = slide_enumerator->get_Current(), true))
	{
		// Цикл по фигурам
		auto shape_enumerator = (presentation->get_Slides()->idx_get(0)->get_Shapes())->GetEnumerator();
		decltype(shape_enumerator->get_Current()) shape;
		while (shape_enumerator->MoveNext() && (shape = shape_enumerator->get_Current(), true))
		{
			// Проверьте, является ли фигура видеокадром
			if (System::ObjectExt::Is<VideoFrame>(shape))
			{
				// Извлеките видеофайл
				System::SharedPtr<VideoFrame> vf = System::DynamicCast_noexcept<Aspose::Slides::VideoFrame>(shape);
				System::String type = vf->get_EmbeddedVideo()->get_ContentType();
				int32_t ss = type.LastIndexOf(L'/');
				type = type.Remove(0, type.LastIndexOf(L'/') + 1);
				System::ArrayPtr<uint8_t> buffer = vf->get_EmbeddedVideo()->get_BinaryData();
				{
					System::SharedPtr<System::IO::FileStream> stream = System::MakeObject<System::IO::FileStream>(outputFilePath + type, System::IO::FileMode::Create, System::IO::FileAccess::Write, System::IO::FileShare::Read);

					// Очистка ресурсов под оператором «using»
					//System::Details::DisposeGuard __dispose_guard_0{поток, ASPOSE_CURRENT_FUNCTION};
					// ---------------------------------------------------------
					stream->Write(buffer, 0, buffer->get_Length());
				}
			}
		}
	}
}

Получить бесплатную лицензию

Чтобы попробовать API без ограничений на пробную версию, вы можете запросить бесплатную временную лицензию.

Вывод

В этой статье вы узнали, как встраивать видео в презентации PowerPoint с помощью C++. Кроме того, вы видели, как извлекать встроенные видео из презентаций PowerPoint с помощью Aspose.Slides for C++ API. Это надежный API, предоставляющий множество дополнительных функций для работы с файлами PowerPoint. Вы можете подробно изучить API, посетив официальную документацию. Если у вас возникнут вопросы, обращайтесь к нам на бесплатный форум поддержки.

Смотрите также

Совет. Возможно, вы захотите попробовать БЕСПЛАТНЫЙ конвертер Aspose PowerPoint to Video, поскольку он позволяет преобразовывать презентации в потрясающие видеоролики с эффектами перехода.