Videókeretek kezelése prezentációkban Python használatával
Bevezetés
Egy jól elhelyezett videó a prezentációban meggyőzőbbé teheti az üzenetedet, és növelheti a közönség elköteleződését.
A PowerPoint lehetővé teszi, hogy videókat adj hozzá egy diára a prezentációban két módon:
- 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).
Ahhoz, hogy videókat (videoobjektumokat) adhass a prezentációhoz, az Aspose.Slides biztosítja a Video osztályt, a VideoFrame osztályt és a többi kapcsolódó típust.
Beágyazott videókeretek létrehozása
Ha a diára felvenni kívánt videófájl helyileg van tárolva, létrehozhatsz egy videókeretet a videó prezentációba való beágyazásához.
- Hozz létre egy példányt a Presentation osztályból.
- Szerezz referenciát egy diára az indexe alapján.
- Adj hozzá egy Video objektumot, és add át a videófájl adatát a videó prezentációba való beágyazásához.
- Adj hozzá egy VideoFrame objektumot a videó keretének létrehozásához.
- Mentsd el a módosított prezentációt.
Ez a Python kód megmutatja, hogyan adhatsz hozzá egy helyileg tárolt videót a prezentációhoz:
from pathlib import Path
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SaveFormat
presentation = Presentation("pres.pptx")
try:
video_data = Path("Wildlife.mp4").read_bytes()
java_video_data = jpype.JArray(jpype.JByte)(video_data)
video = presentation.getVideos().addVideo(java_video_data)
presentation.getSlides().get_Item(0).getShapes().addVideoFrame(10, 10, 150, 250, video)
presentation.save("pres-with-video.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Alternatívaként egy videót is hozzáadhatsz úgy, hogy a fájl útvonalát közvetlenül az addVideoFrame metódusnak adod át:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation
presentation = Presentation()
try:
slide = presentation.getSlides().get_Item(0)
video_frame = slide.getShapes().addVideoFrame(50, 150, 300, 150, "video1.avi")
finally:
presentation.dispose()
Videókeretek létrehozása webes forrásból származó videóval
A Microsoft PowerPoint 2013 és újabb támogatja a YouTube‑videókat a prezentációkban. Ha a felhasználandó videó online érhető el (például a YouTube‑on), a webes hivatkozásával adhatod hozzá a prezentációhoz.
- Hozz létre egy példányt a Presentation osztályból.
- Szerezz referenciát egy diára az indexe alapján.
- Adj hozzá egy VideoFrame objektumot, és add meg a videó hivatkozását.
- Állíts be egy bélyegképet a videókerethez.
- Mentsd el a prezentációt.
Ez a Python kód megmutatja, hogyan adhatsz hozzá egy webes videót egy PowerPoint diasorhoz:
from urllib.request import urlopen
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SaveFormat, VideoPlayModePreset
video_id = "Tj75Arhq5ho"
presentation = Presentation()
try:
video_frame = presentation.getSlides().get_Item(0).getShapes().addVideoFrame(10, 10, 427, 240, "https://www.youtube.com/embed/" + video_id)
video_frame.setPlayMode(VideoPlayModePreset.Auto)
# Betölti a bélyegképet.
thumbnail_uri = "https://img.youtube.com/vi/" + video_id + "/hqdefault.jpg"
try:
with urlopen(thumbnail_uri) as response:
thumbnail_data = response.read()
java_thumbnail_data = jpype.JArray(jpype.JByte)(thumbnail_data)
thumbnail = presentation.getImages().addImage(java_thumbnail_data)
video_frame.getPictureFormat().getPicture().setImage(thumbnail)
except OSError as error:
print("Could not load the thumbnail:", error)
presentation.save("out.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Videókeret vágása
Az Aspose.Slides lehetővé teszi, hogy a videó lejátszott részét úgy szabályozd, hogy a trim-from-start és trim-from-end értékeket állítsd be a VideoFrame.setTrimFromStart és a VideoFrame.setTrimFromEnd segítségével. Mindkét érték ezredmásodpercben van megadva, és meghatározza, mennyi időt hagy ki a videó elejéről és végéről. Ezek a beállítások a videó lejátszási beállításait módosítják a prezentációban; nem vágják vagy módosítják a beágyazott videó bináris adatát.
Trim beállítások beállítása
Videókeret létrehozásához és a trim beállításainak megadásához:
- Hozz létre egy példányt a Presentation osztályból.
- Adj hozzá egy Video objektumot a prezentációhoz.
- Adj hozzá egy VideoFrame objektumot egy diára.
- Állítsd be a trim-from-start és trim-from-end értékeket a VideoFrame.setTrimFromStart és a VideoFrame.setTrimFromEnd segítségével.
- Mentsd el a módosított prezentációt.
A következő kódrészlet kihagyja a beágyazott videó első 2,5 másodpercét és az utolsó másodpercét a lejátszás során:
from pathlib import Path
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SaveFormat
presentation = Presentation()
try:
video_data = Path("video.mp4").read_bytes()
java_video_data = jpype.JArray(jpype.JByte)(video_data)
video = presentation.getVideos().addVideo(java_video_data)
slide = presentation.getSlides().get_Item(0)
video_frame = slide.getShapes().addVideoFrame(50, 50, 640, 360, video)
video_frame.setTrimFromStart(2500.0)
video_frame.setTrimFromEnd(1000.0)
presentation.save("video_with_trim.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Trim beállítások beolvasása
A meglévő trim beállítások ellenőrzéséhez tölts be egy prezentációt, keresd meg a [VideoFrame] objektumot az első dia alakzatai között, és olvasd ki az értékeket a VideoFrame.getTrimFromStart és a VideoFrame.getTrimFromEnd segítségével.
A következő kódrészlet megtalálja az első videókeretet az első dián, és millimásodpercben jelzi a trim beállításait:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, VideoFrame
presentation = Presentation("video_with_trim.pptx")
try:
slide = presentation.getSlides().get_Item(0)
for shape in slide.getShapes():
if isinstance(shape, VideoFrame):
trim_from_start = shape.getTrimFromStart()
trim_from_end = shape.getTrimFromEnd()
print(f"Trim from start: {trim_from_start} ms")
print(f"Trim from end: {trim_from_end} ms")
break
finally:
presentation.dispose()
Videó feliratok kezelése
Az Aspose.Slides lehetővé teszi a videókeretek zárt feliratainak kezelését a PowerPoint prezentációkban. A feliratok WebVTT formátumban tárolódnak, és a VideoFrame.getCaptionTracks metóduson keresztül érhetők el.
Feliratok hozzáadása videókerethez
- Hozz létre egy példányt a Presentation osztályból.
- Adj hozzá egy videót a prezentációhoz.
- Adj hozzá egy VideoFrame objektumot egy diára.
- Használd a CaptionsCollection gyűjteményt, amelyet a getCaptionTracks visszaad, egy WebVTT feliratnyomtatás hozzáadásához.
- Mentsd el a módosított prezentációt.
A következő kód megmutatja, hogyan adj feliratokat egy videókerethez:
from pathlib import Path
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SaveFormat
presentation = Presentation()
try:
video_data = Path("video.mp4").read_bytes()
java_video_data = jpype.JArray(jpype.JByte)(video_data)
video = presentation.getVideos().addVideo(java_video_data)
slide = presentation.getSlides().get_Item(0)
video_frame = slide.getShapes().addVideoFrame(0, 0, 100, 100, video)
# Új feliratnyomtatás hozzáadása egy WebVTT fájlból.
video_frame.getCaptionTracks().add("English", "track.vtt")
presentation.save("video_with_captions.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
A CaptionsCollection osztály további overloaddal is rendelkezik, amely lehetővé teszi feliratok hozzáadását egy adatfolyamból.
Feliratok kinyerése videókeretből
- Töltsd be a videót tartalmazó prezentációt.
- Találd meg a cél VideoFrame objektumot.
- Iterálj végig a CaptionsCollection feliratnyomtatásain.
- Mentsd el minden feliratnyomtatást egy
.vttfájlba.
A következő kód megmutatja, hogyan nyerheted ki a feliratokat egy videókeretből:
from pathlib import Path
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, VideoFrame
presentation = Presentation("video_with_captions.pptx")
try:
slide = presentation.getSlides().get_Item(0)
for shape in slide.getShapes():
if isinstance(shape, VideoFrame):
for caption_track in shape.getCaptionTracks():
# Mentse a feliratnyomtatást egy WebVTT fájlba.
file_path = Path(str(caption_track.getCaptionId()) + ".vtt")
caption_data = bytes(caption_track.getBinaryData())
file_path.write_bytes(caption_data)
finally:
presentation.dispose()
Minden Captions objektum megjeleníti a felirat azonosítóját, címkéjét, bináris adatát és a felirat szövegét UTF‑8 karakterláncként.
Feliratok eltávolítása videókeretből
- Töltsd be a videót tartalmazó prezentációt.
- Szerezd meg a cél VideoFrame objektumot.
- Távolítsd el a feliratnyomtatásokat a CaptionsCollection gyűjteményből.
- Mentsd el a módosított prezentációt.
A következő kód megmutatja, hogyan távolíthatók el az összes felirat egy videókeretből:
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, SaveFormat, VideoFrame
presentation = Presentation("video_with_captions.pptx")
try:
slide = presentation.getSlides().get_Item(0)
video_frame = slide.getShapes().get_Item(0)
if isinstance(video_frame, VideoFrame):
# Az összes felirat eltávolítása a videókeretről.
video_frame.getCaptionTracks().clear()
presentation.save("video_without_captions.pptx", SaveFormat.Pptx)
else:
print("The shape is not a video frame.")
finally:
presentation.dispose()
Ha csak egy feliratrakárt szeretnél eltávolítani, használd a remove vagy a removeAt metódust a clear helyett.
Videó kinyerése diákból
A videók diákhoz való hozzáadása mellett az Aspose.Slides lehetővé teszi a prezentációkban beágyazott videók kinyerését.
- Hozz létre egy példányt a Presentation osztályból a videót tartalmazó prezentáció betöltéséhez.
- Iterálj végig az összes Slide objektumon.
- Iterálj végig az összes Shape objektumon, hogy megtaláld a VideoFrame elemet.
- Mentsd el a videót a lemezen.
Ez a Python kód megmutatja, hogyan nyerheted ki a videót egy prezentációs diáról:
from pathlib import Path
import jpype
import asposeslides
if not jpype.isJVMStarted():
jpype.startJVM()
from asposeslides.api import Presentation, VideoFrame
presentation = Presentation("VideoSample.pptx")
try:
for slide in presentation.getSlides():
for shape in slide.getShapes():
if isinstance(shape, VideoFrame):
video = shape.getEmbeddedVideo()
if video is not None:
content_type = str(video.getContentType())
file_extension = content_type.split("/", 1)[-1]
video_data = bytes(video.getBinaryData())
Path("testing2." + file_extension).write_bytes(video_data)
else:
print("The video frame has no embedded video.")
finally:
presentation.dispose()
FAQ
Mely videólejátszási paraméterek módosíthatók egy VideoFrame esetén?
A playback mode (automata vagy kattintásra) és a looping beállításait szabályozhatod. Ezek az opciók a VideoFrame objektum tulajdonságain keresztül érhetők el.
A videó hozzáadása befolyásolja 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ájlmérettel. Online videó hozzáadásakor egy hivatkozás és egy bélyegkép kerül beágyazásra, ezért a méretnövekedés kisebb.
Lecserélhetem egy meglévő VideoFrame videóját 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 az alakzat geometriáját; ez gyakori forgatókönyv a meglévő elrendezés média frissítéséhez.
Megállapítható a beágyazott videó tartalomtípusa (MIME)?
Igen. A beágyazott videó rendelkezik egy content type értékkel, amelyet kiolvashatsz és felhasználhatsz, például a lemezre mentéskor.