إدارة إطارات الفيديو في العروض التقديمية باستخدام C++
يمكن للفيديو الموضوع بشكل مناسب في عرض تقديمي أن يجعل رسالتك أكثر إقناعًا ويزيد من مستويات التفاعل مع جمهورك.
PowerPoint يتيح لك إضافة مقاطع فيديو إلى شريحة في عرض تقديمي بطريقتين:
- أضف أو تضمّن فيديو محلي (محفوظ على جهازك)
- أضف فيديوًا عبر الإنترنت (من مصدر ويب مثل YouTube).
لتمكينك من إضافة مقاطع فيديو (كائنات فيديو) إلى عرض تقديمي، توفر Aspose.Slides الواجهة IVideo والواجهة IVideoFrame وأنواع أخرى ذات صلة.
إنشاء إطار فيديو مضمن
إذا كان ملف الفيديو الذي تريد إضافته إلى شريحتك مخزنًا محليًا، يمكنك إنشاء إطار فيديو لتضمين الفيديو في عرضك التقديمي.
- إنشاء مثيل من الفئة Presentation class.
- احصل على مرجع الشريحة عبر فهرسها.
- أضف كائنًا من النوع IVideo ومرّر مسار ملف الفيديو لتضمين الفيديو في العرض التقديمي.
- أضف كائنًا من النوع IVideoFrame لإنشاء إطار للفيديو.
- احفظ العرض التقديمي المعدل.
يعرض لك هذا الكود C++ كيفية إضافة فيديو مخزن محليًا إلى عرض تقديمي:
System::SharedPtr<Presentation> pres = System::MakeObject<Presentation>(u"pres.pptx");
// Loads the video
System::SharedPtr<System::IO::FileStream> fileStream = System::MakeObject<System::IO::FileStream>(u"Wildlife.mp4", System::IO::FileMode::Open, System::IO::FileAccess::Read);
System::SharedPtr<IVideo> video = pres->get_Videos()->AddVideo(fileStream, LoadingStreamBehavior::KeepLocked);
// Gets the first slide and adds a videoframe
pres->get_Slide(0)->get_Shapes()->AddVideoFrame(10.0f, 10.0f, 150.0f, 250.0f, video);
// Saves the presentation to disk
pres->Save(u"pres-with-video.pptx", SaveFormat::Pptx);
بدلاً من ذلك، يمكنك إضافة فيديو بتمرير مسار الملف مباشرةً إلى طريقة AddVideoFrame() :
System::SharedPtr<Presentation> pres = System::MakeObject<Presentation>();
System::SharedPtr<ISlide> sld = pres->get_Slide(0);
System::SharedPtr<IVideoFrame> vf = sld->get_Shapes()->AddVideoFrame(50.0f, 150.0f, 300.0f, 150.0f, u"video1.avi");
إنشاء إطار فيديو باستخدام فيديو من مصدر ويب
يدعم Microsoft PowerPoint 2013 والإصدارات الأحدث مقاطع فيديو YouTube في العروض التقديمية. إذا كان الفيديو الذي تريد استخدامه متاحًا على الإنترنت (مثلًا على YouTube)، يمكنك إضافته إلى عرضك التقديمي عبر رابطه على الويب.
- إنشاء مثيل من الفئة Presentation class
- احصل على مرجع الشريحة عبر فهرسها.
- أضف كائنًا من النوع IVideo ومرّر الرابط إلى الفيديو.
- حدد صورة مصغرة لإطار الفيديو.
- احفظ العرض التقديمي.
يعرض لك هذا الكود C++ كيفية إضافة فيديو من الويب إلى شريحة في عرض PowerPoint:
// مسار دليل المستندات.
const String outPath = u"../out/AddVideoFrameFromWebSource_out.pptx";
const String filePath = u"../templates/video1.avi";
// ينشئ كائن Presentation يمثل ملف عرض تقديمي
SharedPtr<Presentation> pres = MakeObject<Presentation>();
// يَصل إلى الشريحة الأولى
SharedPtr<ISlide> slide = pres->get_Slides()->idx_get(0);
// يضيف إطار فيديو
System::SharedPtr<IVideoFrame> vf = slide->get_Shapes()->AddVideoFrame(10, 10, 427, 240,u"https://www.youtube.com/embed/Tj75Arhq5ho");
// يحدد وضع التشغيل ومستوى الصوت للفيديو
vf->set_PlayMode(VideoPlayModePreset::Auto);
//يحفظ العرض التقديمي إلى القرص
pres->Save(outPath, Aspose::Slides::Export::SaveFormat::Pptx);
إدارة تسميات الفيديو
تمكنك Aspose.Slides من إدارة التسميات المغلقة لإطارات الفيديو في عروض PowerPoint. يتم تخزين التسميات بصيغة WebVTT وتتوفر عبر طريقة IVideoFrame::get_CaptionTracks .
إضافة تسميات إلى إطار فيديو
لإضافة تسميات إلى إطار فيديو:
- إنشاء مثيل من الفئة Presentation class.
- إضافة فيديو إلى العرض التقديمي.
- إضافة كائن IVideoFrame إلى شريحة.
- استخدم ICaptionsCollection التي تُرجعها get_CaptionTracks لإضافة مسار تسميات WebVTT.
- احفظ العرض التقديمي المعدل.
يعرض لك الكود التالي كيفية إضافة تسميات إلى إطار فيديو:
auto presentation = MakeObject<Presentation>();
auto videoData = File::ReadAllBytes(u"video.mp4");
auto video = presentation->get_Videos()->AddVideo(videoData);
auto slide = presentation->get_Slide(0);
auto videoFrame = slide->get_Shapes()->AddVideoFrame(0, 0, 100, 100, video);
// Adds a new captions track from a WebVTT file.
videoFrame->get_CaptionTracks()->Add(u"English", u"track.vtt");
presentation->Save(u"video_with_captions.pptx", SaveFormat::Pptx);
presentation->Dispose();
توفر الواجهة ICaptionsCollection أيضًا نسخة محملة تتيح لك إضافة تسميات من دفق.
استخراج التسميات من إطار فيديو
لاستخراج التسميات من إطار فيديو:
- حمّل العرض التقديمي الذي يحتوي على الفيديو.
- اعثر على كائن IVideoFrame المستهدف.
- تجول عبر مسارات التسميات التي تُرجعها get_CaptionTracks .
- احفظ كل مسار تسمية في ملف
.vtt.
يعرض لك الكود التالي كيفية استخراج التسميات من إطار فيديو:
auto presentation = MakeObject<Presentation>(u"video_with_captions.pptx");
auto slide = presentation->get_Slide(0);
for (auto&& shape : slide->get_Shapes())
{
if (ObjectExt::Is<IVideoFrame>(shape))
{
auto videoFrame = ExplicitCast<IVideoFrame>(shape);
for (auto&& captionTrack : videoFrame->get_CaptionTracks())
{
// يحفظ مسار التسميات إلى ملف WebVTT.
auto filePath = captionTrack->get_CaptionId().ToString() + u".vtt";
File::WriteAllBytes(filePath, captionTrack->get_BinaryData());
}
}
}
presentation->Dispose();
كل كائن ICaptions يُظهر معرف التسمية، التسمية، البيانات الثنائية، وبيانات التسمية كسلسلة UTF-8.
إزالة التسميات من إطار فيديو
لإزالة التسميات من إطار فيديو:
- حمّل العرض التقديمي الذي يحتوي على الفيديو.
- احصل على كائن IVideoFrame المستهدف.
- إزالة مسارات التسميات من المجموعة التي تُرجعها get_CaptionTracks .
- احفظ العرض التقديمي المعدل.
يعرض لك الكود التالي كيفية إزالة جميع التسميات من إطار فيديو:
auto presentation = MakeObject<Presentation>(u"video_with_captions.pptx");
auto slide = presentation->get_Slide(0);
auto videoFrame = ExplicitCast<IVideoFrame>(slide->get_Shape(0));
// يزيل جميع التسميات من إطار الفيديو.
videoFrame->get_CaptionTracks()->Clear();
presentation->Save(u"video_without_captions.pptx", SaveFormat::Pptx);
presentation->Dispose();
إذا كنت بحاجة إلى إزالة مسار تسمية واحد فقط، استخدم طرق Remove أو RemoveAt بدلاً من Clear .
استخراج الفيديو من شريحة
إلى جانب إضافة مقاطع فيديو إلى الشرائح، تمكنك Aspose.Slides من استخراج مقاطع الفيديو المضمّنة في العروض التقديمية.
- إنشاء مثيل من الفئة Presentation لتحميل العرض التقديمي الذي يحتوي على الفيديو.
- التنقل عبر جميع كائنات ISlide .
- التنقل عبر جميع كائنات IShape للعثور على VideoFrame .
- احفظ الفيديو إلى القرص.
يعرض لك هذا الكود C++ كيفية استخراج الفيديو الموجود على شريحة عرض تقديمي:
// مسار دليل المستندات.
const System::String templatePath = u"../templates/Video.pptx";
const System::String outPath = u"../out/Video_out";
auto presentation = System::MakeObject<Presentation>(templatePath);
for (auto&& slide : presentation->get_Slides())
{
for (auto&& shape : slide->get_Shapes())
{
if (System::ObjectExt::Is<VideoFrame>(shape))
{
System::SharedPtr<VideoFrame> vf = System::AsCast<VideoFrame>(shape);
System::String type = vf->get_EmbeddedVideo()->get_ContentType();
type = type.Remove(0, type.LastIndexOf('/') + 1);
auto buffer = vf->get_EmbeddedVideo()->get_BinaryData();
auto stream = System::MakeObject<System::IO::FileStream>(
outPath + type, System::IO::FileMode::Create, System::IO::FileAccess::Write,
System::IO::FileShare::Read);
stream->Write(buffer, 0, buffer->get_Length());
}
}
}
الأسئلة الشائعة
ما هي معلمات تشغيل الفيديو التي يمكن تغييرها لإطار الفيديو؟
يمكنك التحكم في وضع التشغيل (تلقائي أو عند النقر) والتكرار. تتوفر هذه الخيارات عبر خصائص كائن VideoFrame .
هل يؤدي إضافة فيديو إلى تأثير حجم ملف PPTX؟
نعم. عند تضمين فيديو محلي، تُدرج البيانات الثنائية في المستند، لذا يزداد حجم العرض التقديمي بما يتناسب مع حجم الملف. عندما تضيف فيديوًا عبر الإنترنت، يتم تضمين رابط وصورة مصغرة، لذا يكون الزيادة في الحجم أصغر.
هل يمكنني استبدال الفيديو في إطار فيديو موجود دون تغيير موقعه وحجمه؟
نعم. يمكنك استبدال محتوى الفيديو داخل الإطار مع الحفاظ على هندسة الشكل؛ هذا سيناريو شائع لتحديث الوسائط في تخطيط موجود.
هل يمكن تحديد نوع المحتوى (MIME) للفيديو المضمّن؟
نعم. للفيديو المضمّن نوع محتوى content type يمكنك قراءته واستخدامه، على سبيل المثال عند حفظه على القرص.