Διαχείριση Πλαισίων Βίντεο σε Παρουσιάσεις Χρησιμοποιώντας Python
Εισαγωγή
Ένα καλά τοποθετημένο βίντεο σε μια παρουσίαση μπορεί να κάνει το μήνυμά σας πιο ελκυστικό και να αυξήσει τα επίπεδα εμπλοκής με το κοινό σας.
PowerPoint σας επιτρέπει να προσθέσετε βίντεο σε μια διαφάνεια σε μια παρουσίαση με δύο τρόπους:
- Προσθήκη ή ενσωμάτωση τοπικού βίντεο (αποθηκευμένο στον υπολογιστή σας)
- Προσθήκη διαδικτυακού βίντεο (από πηγή στο web όπως το YouTube).
Για να μπορέσετε να προσθέσετε βίντεο (αντικείμενα βίντεο) σε μια παρουσίαση, Aspose.Slides παρέχει τις κλάσεις Video και VideoFrame και άλλους σχετικούς τύπους.
Δημιουργία Ενσωματωμένων Πλαισίων Βίντεο
Εάν το αρχείο βίντεο που θέλετε να προσθέσετε στη διαφάνειά σας είναι αποθηκευμένο τοπικά, μπορείτε να δημιουργήσετε ένα πλαίσιο βίντεο για να ενσωματώσετε το βίντεο στην παρουσίασή σας.
- Δημιουργήστε μια παρουσία της κλάσης Presentation.
- Λάβετε μια αναφορά σε μια διαφάνεια με βάση τον δείκτη της.
- Προσθέστε ένα αντικείμενο Video και περάστε τα δεδομένα του αρχείου βίντεο για να ενσωματώσετε το βίντεο στην παρουσίαση.
- Προσθέστε ένα αντικείμενο VideoFrame για να δημιουργήσετε ένα πλαίσιο για το βίντεο.
- Αποθηκεύστε την τροποποιημένη παρουσίαση.
Αυτός ο κώδικας Python σας δείχνει πώς να προσθέσετε ένα βίντεο που είναι αποθηκευμένο τοπικά σε μια παρουσίαση:
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()
Εναλλακτικά, μπορείτε να προσθέσετε ένα βίντεο περνώντας απευθείας τη διαδρομή του αρχείου στη μέθοδο addVideoFrame:
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()
Δημιουργία Πλαισίων Βίντεο από Πηγές στο Web
Microsoft PowerPoint 2013 and newer υποστηρίζει βίντεο YouTube σε παρουσιάσεις. Εάν το βίντεο που θέλετε να χρησιμοποιήσετε είναι διαθέσιμο διαδικτυακά (π.χ. στο YouTube), μπορείτε να το προσθέσετε στην παρουσίασή σας μέσω του συνδέσμου του.
- Δημιουργήστε μια παρουσία της κλάσης Presentation.
- Λάβετε μια αναφορά σε μια διαφάνεια με βάση τον δείκτη της.
- Προσθέστε ένα αντικείμενο VideoFrame και περάστε το σύνδεσμο προς το βίντεο.
- Ορίστε μια μικρογραφία (thumbnail) για το πλαίσιο βίντεο.
- Αποθηκεύστε την παρουσίαση.
Αυτός ο κώδικας Python σας δείχνει πώς να προσθέσετε ένα βίντεο από το web σε μια διαφάνεια σε παρουσίαση PowerPoint:
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)
# Φόρτωση μικρογραφίας.
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()
Περικοπή Πλαισίου Βίντεο
Aspose.Slides σάς επιτρέπει να ελέγχετε ποιο τμήμα ενός βίντεο θα αναπαράγεται ορίζοντας τις τιμές trim-from-start και trim-from-end μέσω των μεθόδων VideoFrame.setTrimFromStart και VideoFrame.setTrimFromEnd. Και οι δύο τιμές ορίζονται σε χιλιοστά του δευτερολέπτου και καθορίζουν πόσο χρόνο θα παραλειφθεί από την αρχή και το τέλος του βίντεο, αντίστοιχα. Αυτές οι ρυθμίσεις αλλάζουν τις ρυθμίσεις αναπαραγωγής βίντεο στην παρουσίαση· δεν κόβουν ή τροποποιούν τα ενσωματωμένα δυαδικά δεδομένα του βίντεο.
Ορισμός Ρυθμίσεων Περικοπής
Για να δημιουργήσετε ένα πλαίσιο βίντεο και να ορίσετε τις ρυθμίσεις περικοπής του:
- Δημιουργήστε μια παρουσία της κλάσης Presentation.
- Προσθέστε ένα αντικείμενο Video στην παρουσίαση.
- Προσθέστε ένα αντικείμενο VideoFrame σε μια διαφάνεια.
- Ορίστε τις τιμές trim-from-start και trim-from-end μέσω των μεθόδων VideoFrame.setTrimFromStart και VideoFrame.setTrimFromEnd.
- Αποθηκεύστε την τροποποιημένη παρουσίαση.
Το παρακάτω παράδειγμα κώδικα παραλείπει τα πρώτα 2,5 δευτερόλεπτα και το τελευταίο δευτερόλεπτο ενός ενσωματωμένου βίντεο κατά την αναπαραγωγή:
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()
Ανάγνωση Ρυθμίσεων Περικοπής
Για να εξετάσετε τις υπάρχουσες ρυθμίσεις περικοπής, φορτώστε μια παρουσίαση, βρείτε ένα αντικείμενο VideoFrame μεταξύ των σχημάτων στη πρώτη διαφάνεια και διαβάστε τις τιμές μέσω των μεθόδων VideoFrame.getTrimFromStart και VideoFrame.getTrimFromEnd.
Το παρακάτω παράδειγμα κώδικα βρίσκει το πρώτο πλαίσιο βίντεο στην πρώτη διαφάνεια και αναφέρει τις ρυθμίσεις περικοπής του σε χιλιοστά του δευτερολέπτου:
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()
Διαχείριση Υπότιτλων Βίντεο
Aspose.Slides σάς επιτρέπει να διαχειρίζεστε κλειστά υπότιτλους για πλαίσια βίντεο σε παρουσιάσεις PowerPoint. Οι υπότιτλοι αποθηκεύονται σε μορφή WebVTT και εκτίθενται μέσω της μεθόδου VideoFrame.getCaptionTracks.
Προσθήκη Υπότιτλων σε Πλαίσιο Βίντεο
Για να προσθέσετε υπότιτλους σε ένα πλαίσιο βίντεο:
- Δημιουργήστε μια παρουσία της κλάσης Presentation.
- Προσθέστε ένα βίντεο στην παρουσίαση.
- Προσθέστε ένα αντικείμενο VideoFrame σε μια διαφάνεια.
- Χρησιμοποιήστε την CaptionsCollection που επιστρέφει η μέθοδος getCaptionTracks για να προσθέσετε ένα κομμάτι υπότιτλου WebVTT.
- Αποθηκεύστε την τροποποιημένη παρουσίαση.
Ο παρακάτω κώδικας σας δείχνει πώς να προσθέσετε υπότιτλους σε ένα πλαίσιο βίντεο:
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)
# Προσθήκη νέας γραμμής υπότιτλων από αρχείο WebVTT.
video_frame.getCaptionTracks().add("English", "track.vtt")
presentation.save("video_with_captions.pptx", SaveFormat.Pptx)
finally:
presentation.dispose()
Η κλάση CaptionsCollection παρέχει επίσης μια υπερφόρτωση που σάς επιτρέπει να προσθέσετε υπότιτλους από ένα ρεύμα (stream).
Εξαγωγή Υπότιτλων από Πλαίσιο Βίντεο
Για να εξαγάγετε υπότιτλους από ένα πλαίσιο βίντεο:
- Φορτώστε την παρουσίαση που περιέχει το βίντεο.
- Βρείτε το επιθυμητό αντικείμενο VideoFrame.
- Επανάληψη μέσω των κομματιών υπότιτλου στην CaptionsCollection.
- Αποθηκεύστε κάθε κομμάτι υπότιτλου σε αρχείο
.vtt.
Ο παρακάτω κώδικας σας δείχνει πώς να εξαγάγετε υπότιτλους από ένα πλαίσιο βίντεο:
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():
# Αποθήκευση της γραμμής υπότιτλου σε αρχείο WebVTT.
file_path = Path(str(caption_track.getCaptionId()) + ".vtt")
caption_data = bytes(caption_track.getBinaryData())
file_path.write_bytes(caption_data)
finally:
presentation.dispose()
Κάθε αντικείμενο Captions εκθέτει το αναγνωριστικό του υπότιτλου, την ετικέτα, τα δυαδικά δεδομένα και το κείμενο του υπότιτλου ως συμβολοσειρά UTF-8.
Αφαίρεση Υπότιτλων από Πλαίσιο Βίντεο
Για να αφαιρέσετε υπότιτλους από ένα πλαίσιο βίντεο:
- Φορτώστε την παρουσίαση που περιέχει το βίντεο.
- Λάβετε το επιθυμητό αντικείμενο VideoFrame.
- Αφαιρέστε τα κομμάτια υπότιτλου από την CaptionsCollection.
- Αποθηκεύστε την τροποποιημένη παρουσίαση.
Ο παρακάτω κώδικας σας δείχνει πώς να αφαιρέσετε όλους τους υπότιτλους από ένα πλαίσιο βίντεο:
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):
# Αφαίρεση όλων των υποτίτλων από το πλαίσιο βίντεο.
video_frame.getCaptionTracks().clear()
presentation.save("video_without_captions.pptx", SaveFormat.Pptx)
else:
print("The shape is not a video frame.")
finally:
presentation.dispose()
Εάν χρειάζεται να αφαιρέσετε μόνο ένα κομμάτι υπότιτλου, χρησιμοποιήστε τις μεθόδους remove ή removeAt αντί για τη μέθοδο clear.
Εξαγωγή Βίντεο από Διαφάνειες
Εκτός από την προσθήκη βίντεο σε διαφάνειες, το Aspose.Slides σας επιτρέπει να εξάγετε βίντεο που είναι ενσωματωμένα σε παρουσιάσεις.
- Δημιουργήστε μια παρουσία της κλάσης Presentation για να φορτώσετε την παρουσίαση που περιέχει το βίντεο.
- Επανάληψη σε όλα τα αντικείμενα Slide.
- Επανάληψη σε όλα τα αντικείμενα Shape για να βρείτε ένα VideoFrame.
- Αποθηκεύστε το βίντεο στο δίσκο.
Αυτός ο κώδικας Python σας δείχνει πώς να εξάγετε το βίντεο από μια διαφάνεια παρουσίασης:
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()
Συχνές Ερωτήσεις
Ποια παραμέτρους αναπαραγωγής βίντεο μπορούν να αλλάξουν για ένα VideoFrame;
Μπορείτε να ελέγχετε τη λειτουργία αναπαραγωγής (αυτόματα ή με κλικ) και την επανάληψη. Αυτές οι επιλογές είναι διαθέσιμες μέσω των ιδιοτήτων του αντικειμένου VideoFrame.
Επηρεάζει η προσθήκη βίντεο το μέγεθος του αρχείου PPTX;
Ναι. Όταν ενσωματώνετε ένα τοπικό βίντεο, τα δυαδικά δεδομένα συμπεριλαμβάνονται στο έγγραφο, οπότε το μέγεθος της παρουσίασης αυξάνεται ανάλογα με το μέγεθος του αρχείου. Όταν προσθέτετε ένα διαδικτυακό βίντεο, ενσωματώνεται ένας σύνδεσμος και μια μικρογραφία, οπότε η αύξηση του μεγέθους είναι μικρότερη.
Μπορώ να αντικαταστήσω το βίντεο σε ένα υπάρχον VideoFrame χωρίς να αλλάξω τη θέση και το μέγεθός του;
Ναι. Μπορείτε να ανταλλάξετε το περιεχόμενο βίντεο μέσα στο πλαίσιο διατηρώντας τη γεωμετρία του σχήματος· αυτό είναι ένα συχνό σενάριο για την ενημέρωση μέσων σε υπάρχουσα διάταξη.
Μπορεί να προσδιοριστεί ο τύπος περιεχομένου (MIME) ενός ενσωματωμένου βίντεο;
Ναι. Ένα ενσωματωμένο βίντεο έχει έναν τύπο περιεχομένου που μπορείτε να διαβάσετε και να χρησιμοποιήσετε, για παράδειγμα όταν το αποθηκεύετε στο δίσκο.