Vkládání videa do prezentací PowerPoint pomocí C++

Microsoft PowerPoint vám poskytuje možnost přidávat snímky videa do vašich prezentací PowerPoint. Videa lze použít ke zvýšení kvality prezentací a pomohou lépe sdělit poselství publiku. Mohou nastat situace, kdy budete chtít přidat videa do prezentací PowerPoint programově. Za tímto účelem vás tento článek naučí, jak vložit video do prezentací PowerPoint pomocí C++.

C++ API pro vkládání videa do PowerPointových prezentací

Pro vkládání videí do prezentací PowerPoint použijeme API Aspose.Slides for C++. Je to výkonné a na funkce bohaté API, které podporuje vytváření, čtení a úpravy souborů PowerPoint bez nutnosti instalace aplikace Mircosoft PowerPoint. API můžete nainstalovat buď prostřednictvím NuGet, nebo si jej stáhnout přímo ze sekce Downloads.

PM> Install-Package Aspose.Slides.Cpp

Vkládání videa do prezentací PowerPoint pomocí C++

Níže jsou uvedeny kroky pro vložení videa do prezentace PowerPoint.

Následující ukázkový kód ukazuje, jak vložit video do prezentace PowerPoint pomocí C++.

// Cesty k souborům
const String videoFilePath = u"SourceDirectory\\Video\\Wildlife.mp4";
const String outputFilePath = u"OutputDirectory\\EmbedVideo_out.pptx";

// Vytvořte instanci třídy Presentation
SharedPtr<Presentation> presentation = MakeObject<Presentation>();

// Otevřete první snímek
SharedPtr<ISlide> slide = presentation->get_Slides()->idx_get(0);

// Načtěte soubor videa, který chcete streamovat
System::SharedPtr<System::IO::Stream> stream = System::MakeObject<System::IO::FileStream>(videoFilePath, System::IO::FileMode::Open, System::IO::FileAccess::Read);

// Přidejte video do prezentace
System::SharedPtr<IVideo> vid = presentation->get_Videos()->AddVideo(stream);

// Přidat rámeček videa
System::SharedPtr<IVideoFrame> videoFrame = slide->get_Shapes()->AddVideoFrame(50, 150, 300, 150, vid);

// Vložte video do rámečku videa
videoFrame->set_EmbeddedVideo(vid);

// Nastavte režim přehrávání a hlasitost videa
videoFrame->set_PlayMode(VideoPlayModePreset::Auto);
videoFrame->set_Volume(AudioVolumeMode::Loud);

// Uložte prezentaci
presentation->Save(outputFilePath, Aspose::Slides::Export::SaveFormat::Pptx);

Vkládání videa z webového zdroje do PowerPointových prezentací

Následují kroky pro vložení videa z webového zdroje do prezentace PowerPoint.

Následující ukázkový kód ukazuje, jak vložit video z webového zdroje do prezentace PowerPoint pomocí C++.

// Cesta k souboru
const String outputFilePath = u"OutputDirectory\\EmbedVideoFromWeb_out.pptx";

// Vytvořte instanci třídy Presentation
SharedPtr<Presentation> presentation = MakeObject<Presentation>();

// Otevřete první snímek
SharedPtr<ISlide> slide = presentation->get_Slides()->idx_get(0);

// Přidejte snímek videa z webového zdroje
System::SharedPtr<IVideoFrame> videoFrame = slide->get_Shapes()->AddVideoFrame(10, 10, 427, 240, u"https://www.youtube.com/embed/sZJorZmHiIk");

// Nastavte režim přehrávání a hlasitost videa
videoFrame->set_PlayMode(VideoPlayModePreset::Auto);

// Uložte prezentaci
presentation->Save(outputFilePath, Aspose::Slides::Export::SaveFormat::Pptx);

Extrahujte video z prezentací PowerPoint pomocí C++

Níže jsou uvedeny kroky k extrahování videa z prezentace PowerPoint pomocí C++.

  • Nejprve načtěte soubor PowerPoint pomocí třídy Presentation.
  • Procházejte snímky prezentace.
  • Procházejte tvary v každém snímku.
  • U každého tvaru zkontrolujte, zda je tvar VideoFrame. V případě, že se jedná o snímek videa, extrahujte vložené video a uložte jej.

Následující ukázkový kód ukazuje, jak extrahovat video z prezentace PowerPoint pomocí C++.

// Cesty k souborům
const String sourceFilePath = u"OutputDirectory\\EmbedVideo_out.pptx";
const String outputFilePath = u"OutputDirectory\\ExtractVideoFromSlide_out.";

// Načtěte soubor prezentace
System::SharedPtr<Presentation> presentation = System::MakeObject<Presentation>(sourceFilePath);
{
	// Procházejte snímky
	auto slide_enumerator = (presentation->get_Slides())->GetEnumerator();
	decltype(slide_enumerator->get_Current()) slide;
	while (slide_enumerator->MoveNext() && (slide = slide_enumerator->get_Current(), true))
	{
		// Procházejte tvary
		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))
		{
			// Zkontrolujte, zda je tvarem snímek videa
			if (System::ObjectExt::Is<VideoFrame>(shape))
			{
				// Extrahujte soubor videa
				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);

					// Vymazání zdrojů pod příkazem 'používá se'
					//Systém::Podrobnosti::DisposeGuard __dispose_guard_0{ stream, ASPOSE_CURRENT_FUNCTION };
					// -------------------------------------------
					stream->Write(buffer, 0, buffer->get_Length());
				}
			}
		}
	}
}

Získejte bezplatnou licenci

Abyste mohli API vyzkoušet bez omezení hodnocení, můžete požádat o bezplatnou dočasnou licenci.

Závěr

V tomto článku jste se naučili vkládat videa do prezentací PowerPoint pomocí C++. Navíc jste viděli, jak extrahovat vložená videa z prezentací PowerPoint pomocí Aspose.Slides for C++ API. Jedná se o robustní API, které poskytuje mnoho dalších funkcí pro práci se soubory PowerPoint. Rozhraní API můžete podrobně prozkoumat na oficiální dokumentaci. V případě jakýchkoli dotazů nás neváhejte kontaktovat na našem bezplatném fóru podpory.

Viz také

Tip: Možná budete chtít vyzkoušet konvertor Aspose FREE PowerPoint to Video, protože vám umožňuje přeměnit vaše prezentace na úžasná videa s přechodovými efekty.