C++ Kullanarak Sunumlarda Video Çerçevelerini Yönetme

Giriş

Sunumda iyi yerleştirilmiş bir video, mesajınızı daha etkileyici hale getirebilir ve izleyicilerinizle etkileşim seviyesini artırabilir.

PowerPoint, bir sunumdaki slayta video eklemenizi iki şekilde sağlar:

  • Yerel bir video ekleyin veya gömün (makinenizde depolanmış)
  • Çevrimiçi bir video ekleyin (YouTube gibi bir web kaynağından).

Bir sunuma videolar (video nesneleri) eklemenizi sağlamak için Aspose.Slides, IVideo arayüzünü, IVideoFrame arayüzünü ve diğer ilgili türleri sunar.

Gömülü Video Çerçevesi Oluşturma

Slaytınıza eklemek istediğiniz video dosyası yerel olarak depolanmışsa, videoyu sunuma gömmek için bir video çerçevesi oluşturabilirsiniz.

  1. Bir Presentation sınıfının örneğini oluşturun.
  2. Bir slaydın referansını indeksine göre alın.
  3. IVideo nesnesi ekleyin ve videoyu sunuma gömmek için video dosyasının yolunu geçirin.
  4. IVideoFrame nesnesi ekleyerek video için bir çerçeve oluşturun.
  5. Değiştirilmiş sunumu kaydedin.

Bu C++ kodu, yerel olarak depolanmış bir videoyu sunuma nasıl ekleyeceğinizi gösterir:

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);

Alternatif olarak, videoyu doğrudan dosya yolunu AddVideoFrame() yöntemine geçirerek ekleyebilirsiniz:

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");

Web Kaynağından Video ile Video Çerçevesi Oluşturma

Microsoft PowerPoint 2013 ve sonrası sürümleri, sunumlarda YouTube videolarını destekler. Kullanmak istediğiniz video çevrimiçi olarak mevcutsa (ör. YouTube’da), web bağlantısı aracılığıyla sunuma ekleyebilirsiniz.

  1. Bir Presentation sınıfının örneğini oluşturun
  2. Bir slaydın referansını indeksine göre alın.
  3. IVideo nesnesi ekleyin ve videonun bağlantısını geçirin.
  4. Video çerçevesi için bir küçük resim ayarlayın.
  5. Sunumu kaydedin.

Bu C++ kodu, web üzerindeki bir videoyu PowerPoint sunumundaki bir slayta nasıl ekleyeceğinizi gösterir:

// Belgeler dizininin yolu.
const String outPath = u"../out/AddVideoFrameFromWebSource_out.pptx";
const String filePath = u"../templates/video1.avi";

// Sunum dosyasını temsil eden bir Presentation nesnesi oluşturur
SharedPtr<Presentation> pres = MakeObject<Presentation>();

// İlk slayta erişir
SharedPtr<ISlide> slide = pres->get_Slides()->idx_get(0);

// Bir Video Çerçevesi ekler 
System::SharedPtr<IVideoFrame> vf = slide->get_Shapes()->AddVideoFrame(10, 10, 427, 240,u"https://www.youtube.com/embed/Tj75Arhq5ho");

// Videonun Oynatma Modu ve Ses Düzeyini ayarlar
vf->set_PlayMode(VideoPlayModePreset::Auto);

//Sunumu diske kaydeder
pres->Save(outPath, Aspose::Slides::Export::SaveFormat::Pptx);

Video Altyazılarını Yönetme

Aspose.Slides, PowerPoint sunumlarındaki video çerçeveleri için kapalı altyazıları yönetmenizi sağlar. Altyazılar WebVTT formatında depolanır ve IVideoFrame::get_CaptionTracks yöntemi aracılığıyla sunulur.

Video Çerçevesine Altyazı Ekleme

Bir video çerçevesine altyazı eklemek için:

  1. Bir Presentation sınıfının örneğini oluşturun.
  2. Sunuma bir video ekleyin.
  3. Bir slayta IVideoFrame nesnesi ekleyin.
  4. get_CaptionTracks tarafından döndürülen ICaptionsCollection kullanarak bir WebVTT altyazı izi ekleyin.
  5. Değiştirilmiş sunumu kaydedin.

Aşağıdaki kod, bir video çerçevesine altyazı nasıl ekleneceğini gösterir:

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 arayüzü ayrıca bir akıştan altyazı eklemenizi sağlayan bir aşırı yükleme sunar.

Video Çerçevesinden Altyazı Çıkarma

Bir video çerçevesinden altyazı çıkarmak için:

  1. Videoyu içeren sunumu yükleyin.
  2. Hedef IVideoFrame nesnesini bulun.
  3. get_CaptionTracks tarafından döndürülen altyazı izleri arasında döngü yapın.
  4. Her bir altyazı izini bir .vtt dosyasına kaydedin.

Aşağıdaki kod, bir video çerçevesinden altyazı nasıl çıkarılacağını gösterir:

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())
        {
            // Altyazı izini bir WebVTT dosyasına kaydeder.
            auto filePath = captionTrack->get_CaptionId().ToString() + u".vtt";
            File::WriteAllBytes(filePath, captionTrack->get_BinaryData());
        }
    }
}

presentation->Dispose();

Her ICaptions nesnesi, altyazı tanımlayıcısını, etiketini, ikili verisini ve altyazı verisini UTF-8 dizesi olarak sunar.

Video Çerçevesinden Altyazı Kaldırma

Bir video çerçevesinden altyazı kaldırmak için:

  1. Videoyu içeren sunumu yükleyin.
  2. Hedef IVideoFrame nesnesini alın.
  3. get_CaptionTracks tarafından döndürülen koleksiyondan altyazı izlerini kaldırın.
  4. Değiştirilmiş sunumu kaydedin.

Aşağıdaki kod, bir video çerçevesinden tüm altyazıların nasıl kaldırılacağını gösterir:

auto presentation = MakeObject<Presentation>(u"video_with_captions.pptx");
auto slide = presentation->get_Slide(0);
auto videoFrame = ExplicitCast<IVideoFrame>(slide->get_Shape(0));

// Video çerçevesindeki tüm altyazıları kaldırır.
videoFrame->get_CaptionTracks()->Clear();

presentation->Save(u"video_without_captions.pptx", SaveFormat::Pptx);
presentation->Dispose();

Yalnızca bir altyazı izini kaldırmanız gerekiyorsa, Clear yerine Remove veya RemoveAt yöntemlerini kullanın.

Bir Slayttan Video Çıkarma

Slaytlara video eklemenin yanı sıra, Aspose.Slides sunumlara gömülmüş videoları çıkarmanıza da olanak tanır.

  1. Videoyu içeren sunumu yüklemek için bir Presentation sınıfının örneğini oluşturun.
  2. Tüm ISlide nesneleri üzerinde döngü yapın.
  3. Bir VideoFrame bulmak için tüm IShape nesneleri üzerinde döngü yapın.
  4. Videoyu diske kaydedin.

Bu C++ kodu, sunum slaytındaki videoyu nasıl çıkaracağınızı gösterir:

// Belgeler dizininin yolu.
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());
        }
    }
}

SSS

Bir VideoFrame için hangi video oynatma parametreleri değiştirilebilir?

Oynatma modunu (playback mode – otomatik veya tıklamayla) ve döngüyü (looping) kontrol edebilirsiniz. Bu seçenekler, VideoFrame nesnesinin özellikleri aracılığıyla kullanılabilir.

Bir video eklemek PPTX dosya boyutunu etkiler mi?

Evet. Yerel bir videoyu gömdüğünüzde, ikili veri belgeye eklenir ve bu nedenle sunumun boyutu dosya boyutuyla orantılı olarak artar. Çevrimiçi bir video eklediğinizde ise bir bağlantı ve küçük resim gömülür, bu nedenle boyut artışı daha küçüktür.

Mevcut bir VideoFrame içindeki videoyu konum ve boyutunu değiştirmeden değiştirebilir miyim?

Evet. Çerçevedeki video content öğesini, şeklin geometrisini koruyarak değiştirebilirsiniz; bu, mevcut bir yerleşimde medyanın güncellenmesi için yaygın bir senaryodur.

Gömülü bir videonun içerik türü (MIME) belirlenebilir mi?

Evet. Gömülü bir videonun okuyabileceğiniz ve örneğin diske kaydederken kullanabileceğiniz bir content type (içerik türü) vardır.