C++を使用してPowerPointプレゼンテーションにビデオを埋め込む

Microsoft PowerPointには、PowerPointプレゼンテーションにビデオフレームを追加する機能があります。ビデオを使用して、プレゼンテーションの品質を高め、メッセージを聴衆に伝えるのに役立てることができます。プログラムでPowerPointプレゼンテーションにビデオを追加したい場合があります。そのために、この記事では、C++を使用してPowerPointプレゼンテーションにビデオを埋め込む方法を説明します。

PowerPointプレゼンテーションにビデオを埋め込むためのC++API

Aspose.Slides for C++ APIを使用して、PowerPointプレゼンテーションにビデオを埋め込みます。これは、Mircosoft PowerPointをインストールしなくても、PowerPointファイルの作成、読み取り、および変更をサポートする、強力で機能豊富なAPIです。 APIは、NuGetからインストールするか、ダウンロードセクションから直接ダウンロードできます。

PM> Install-Package Aspose.Slides.Cpp

C++を使用してPowerPointプレゼンテーションにビデオを埋め込む

以下は、PowerPointプレゼンテーションにビデオを埋め込むための手順です。

次のサンプルコードは、C++を使用してPowerPointプレゼンテーションにビデオを埋め込む方法を示しています。

// ファイルパス
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プレゼンテーションへのWebソースからのビデオの埋め込み

以下は、PowerPointプレゼンテーションにWebソースからのビデオを埋め込む手順です。

次のサンプルコードは、C++を使用してWebソースからのビデオをPowerPointプレゼンテーションに埋め込む方法を示しています。

// ファイルパス
const String outputFilePath = u"OutputDirectory\\EmbedVideoFromWeb_out.pptx";

// Presentationクラスのインスタンスを作成します
SharedPtr<Presentation> presentation = MakeObject<Presentation>();

// 最初のスライドにアクセスする
SharedPtr<ISlide> slide = presentation->get_Slides()->idx_get(0);

// Webソースからビデオフレームを追加します
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);

C++を使用してPowerPointプレゼンテーションからビデオを抽出する

以下は、C++を使用してPowerPointプレゼンテーションからビデオを抽出する手順です。

  • まず、Presentationクラスを使用してPowerPointファイルをロードします。
  • プレゼンテーションのスライドをループします。
  • 各スライドの図形をループします。
  • 図形ごとに、その図形がVideoFrameであるかどうかを確認します。ビデオフレームの場合は、埋め込まれたビデオを抽出して保存します。

次のサンプルコードは、C++を使用してPowerPointプレゼンテーションからビデオを抽出する方法を示しています。

// ファイルパス
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 {stream、ASPOSE_CURRENT_FUNCTION};
					// ------------------------------------------
					stream->Write(buffer, 0, buffer->get_Length());
				}
			}
		}
	}
}

無料ライセンスを取得する

評価制限なしでAPIを試すために、無料の一時ライセンスをリクエストできます。

結論

この記事では、C++を使用してPowerPointプレゼンテーションにビデオを埋め込む方法を学習しました。さらに、Aspose.Slides for C++ APIを使用して、PowerPointプレゼンテーションから埋め込みビデオを抽出する方法を見てきました。これは、PowerPointファイルを操作するための多くの追加機能を提供する堅牢なAPIです。 公式ドキュメントにアクセスすると、APIの詳細を調べることができます。ご不明な点がございましたら、無料サポートフォーラムまでお気軽にお問い合わせください。

関連項目

ヒント:プレゼンテーションをトランジション効果のある見事なビデオに変換できるため、Aspose FREE PowerPoint toVideoコンバーターを確認することをお勧めします。