Videók hozzáadása prezentációkhoz Pythonban

Bevezetés

A jól elhelyezett videó egy prezentációban hatékonyabbá teheti az üzenetet, és növelheti a közönség elköteleződését.

A PowerPoint két módon teszi lehetővé, hogy videókat adjunk hozzá egy diára a prezentációban:

  • Helyi videó hozzáadása vagy beágyazása (a gépeden tárolt)
  • Online videó hozzáadása (webes forrásból, például a YouTube-ról).

A videók (video objektumok) prezentációba való hozzáadásához az Aspose.Slides a Video osztályt, a VideoFrame osztályt és egyéb releváns típusokat biztosít.

Beágyazott videókeret létrehozása

Ha a diára felvenni kívánt videófájl helyileg van tárolva, létrehozhatsz egy videókeretet, hogy beágyazd a videót a prezentációba.

  1. Hozz létre egy példányt a Presentation osztályból.
  2. Szerezz meg egy diára hivatkozást az indexe alapján.
  3. Adj hozzá egy Video objektumot, és add meg a videófájl útvonalát a videó prezentációba való beágyazásához.
  4. Adj hozzá egy VideoFrame objektumot a videó keret létrehozásához.
  5. Mentsd el a módosított prezentációt.

Ez a Python kód bemutatja, hogyan adj hozzá egy helyileg tárolt videót a prezentációhoz:

import aspose.slides as slides

with slides.Presentation(path + "pres.pptx") as pres:
    with open("Wildlife.mp4", "br") as fileStream:
        video = pres.videos.add_video(fileStream, slides.LoadingStreamBehavior.KEEP_LOCKED)

        # Megkapja az első diát és hozzáad egy videókeretet
        pres.slides[0].shapes.add_video_frame(10, 10, 150, 250, video)

        # A prezentáció mentése a lemezre
        pres.save(path + "pres-with-video.pptx", slides.export.SaveFormat.PPTX)

Alternatívaként a videót közvetlenül a add_video_frame(x, y, width, height, fname) metódusnak átadott fájlútvonal megadásával is hozzáadhatod:

import aspose.slides as slides

with slides.Presentation() as pres:
    sld = pres.slides[0]
    vf = sld.shapes.add_video_frame(50, 150, 300, 150, "video1.avi")

Videókeret létrehozása webes forrásból származó videóval

Microsoft a PowerPoint 2013 és újabb verziók támogatják a YouTube videókat a prezentációkban. Ha a használni kívánt videó online elérhető (például a YouTube-on), hozzáadhatod a prezentációhoz a webes hivatkozásán keresztül.

  1. Hozz létre egy példányt a Presentation osztályból
  2. Szerezz meg egy diára hivatkozást az indexe alapján.
  3. Adj hozzá egy Video objektumot, és add meg a videó hivatkozását.
  4. Állíts be egy bélyegképet a videókerethez.
  5. Mentsd el a prezentációt.

Ez a Python kód bemutatja, hogyan adj hozzá egy videót a webről egy diához egy PowerPoint prezentációban:

import aspose.slides as slides
from urllib.request import urlopen

def add_video_from_youyube(pres, videoId):
    # Videókeretet ad hozzá
    videoFrame = pres.slides[0].shapes.add_video_frame(10, 10, 427, 240, "https://www.youtube.com/embed/" + videoId)
    videoFrame.play_mode = slides.VideoPlayModePreset.AUTO

    # Bélyegképet tölt be
    thumbnail_uri = "http://img.youtube.com/vi/" + videoId + "/hqdefault.jpg"
    f = urlopen(thumbnail_uri)
    videoFrame.picture_format.picture.image = pres.images.add_image(f.read())


with slides.Presentation() as pres:
    add_video_from_youyube(pres, "s5JbfQZ5Cc0")
    pres.save("AddVideoFrameFromWebSource_out.pptx", slides.export.SaveFormat.PPTX)

Videó feliratok kezelése

Az Aspose.Slides lehetővé teszi a videókeretekhez tartozó zárt feliratok kezelését a PowerPoint prezentációkban. A feliratok WebVTT formátumban tárolódnak, és a VideoFrame.caption_tracks tulajdonságon keresztül érhetők el.

Feliratok hozzáadása egy videókerethez

A feliratok videókerethez való hozzáadásához:

  1. Hozz létre egy példányt a Presentation osztályból.
  2. Adj hozzá egy videót a prezentációhoz.
  3. Adj egy VideoFrame objektumot egy diára.
  4. Használd a caption_tracks által visszaadott CaptionsCollection objektumot egy WebVTT feliratsáv hozzáadásához.
  5. Mentsd el a módosított prezentációt.

A következő kód bemutatja, hogyan adj hozzá feliratokat egy videókerethez:

import aspose.slides as slides

with slides.Presentation() as presentation:
    with open("video.mp4", "rb") as video_stream:
        video_data = video_stream.read()

    video = presentation.videos.add_video(video_data)

    slide = presentation.slides[0]
    video_frame = slide.shapes.add_video_frame(0, 0, 100, 100, video)

    # Új feliratszakaszt ad hozzá egy WebVTT fájlból.
    presentation.save("video_with_captions.pptx", slides.export.SaveFormat.PPTX)

A CaptionsCollection osztály további overloadot is kínál, amely lehetővé teszi feliratok hozzáadását egy adatfolyamból.

Feliratok kinyerése egy videókeretből

A feliratok egy videókeretből történő kinyeréséhez:

  1. Töltsd be a videót tartalmazó prezentációt.
  2. Keresd meg a cél VideoFrame objektumot.
  3. Iterálj a caption_tracks gyűjteményen.
  4. Mentsd el minden feliratsávot egy .vtt fájlba.

A következő kód bemutatja, hogyan nyerj ki feliratokat egy videókeretből:

import aspose.slides as slides

with slides.Presentation("video_with_captions.pptx") as presentation:
    slide = presentation.slides[0]
    for shape in slide.shapes:
        if isinstance(shape, slides.VideoFrame):
            for caption_track in shape.caption_tracks:
                # A feliratszakaszt egy WebVTT fájlba menti.
                file_path = f"{caption_track.caption_id}.vtt"
                with open(file_path, "wb") as track_stream:
                    track_stream.write(bytes(caption_track.binary_data))

Minden Captions objektum a felirat azonosítóját, címkéjét, bináris adatait és a feliratszöveget UTF-8 karakterláncként teszi elérhetővé.

Feliratok eltávolítása egy videókeretből

A feliratok egy videókeretből való eltávolításához:

  1. Töltsd be a videót tartalmazó prezentációt.
  2. Szerezd meg a cél VideoFrame objektumot.
  3. Távolítsd el a feliratsávokat a CaptionsCollection objektumból.
  4. Mentsd el a módosított prezentációt.

A következő kód bemutatja, hogyan távolíts el minden feliratot egy videókeretből:

import aspose.slides as slides

with slides.Presentation("video_with_captions.pptx") as presentation:
    slide = presentation.slides[0]
    video_frame = slide.shapes[0]  # típus: slides.VideoFrame

    # A videókeret összes feliratát eltávolítja.
    video_frame.caption_tracks.clear()

    presentation.save("video_without_captions.pptx", slides.export.SaveFormat.PPTX)

Ha csak egy feliratsávot szeretnél eltávolítani, használd a remove vagy a remove_at metódust a clear helyett.

Videó kinyerése diáról

A videók diákhoz való hozzáadása mellett az Aspose.Slides lehetővé teszi a prezentációkba beágyazott videók kinyerését is.

  1. Hozz létre egy példányt a Presentation osztályból a videót tartalmazó prezentáció betöltéséhez.
  2. Iterálj végig az összes Slide objektumon.
  3. Iterálj végig az összes Shape objektumon, hogy megtaláld a VideoFrame elemet.
  4. Mentsd el a videót a lemezre.

Ez a Python kód bemutatja, hogyan nyerj ki egy videót egy prezentációs diáról:

import aspose.slides as slides

# Létrehozza a Presentation objektumot, amely egy prezentációs fájlt képvisel
with slides.Presentation(path + "Video.pptx") as presentation:
    for shape in presentation.slides[0].shapes:
        if type(shape) is slides.VideoFrame:
            type = shape.embedded_video.content_type
            buffer = shape.embedded_video.binary_data
            with open("NewVideo_out." + type[type.rfind('/') + 1:len(type)], "wb") as stream:
                stream.write(buffer)

GYIK

Mely videolejátszási paraméterek módosíthatók egy VideoFrame esetén?
A playback mode (automatikus vagy kattintásra) és a play_loop_mode beállítások irányíthatók. Ezek a lehetőségek a VideoFrame objektum tulajdonságain keresztül érhetők el.

Milyen mértékben befolyásolja a videó hozzáadása a PPTX fájl méretét?
Igen. Ha helyi videót ágyazol be, a bináris adat a dokumentumba kerül, így a prezentáció mérete arányosan nő a fájl méretével. Online videó esetén egy hivatkozás és egy bélyegkép kerül beágyazásra, ezért a méretnövekedés kisebb.

Lecserélhetem-e a videót egy meglévő VideoFrame-ben anélkül, hogy megváltoztatnám a pozícióját és méretét?
Igen. A video content cseréjével a keretben megőrizheted a forma geometriai tulajdonságait; ez gyakori megoldás a média frissítésére egy meglévő elrendezésben.

Meg lehet határozni egy beágyazott videó tartalomtípusát (MIME)?
Igen. Egy beágyazott videó rendelkezik content type információval, amelyet kiolvashatsz és felhasználhatsz, például a lemezre mentéskor.