จัดการเฟรมวิดีโอในงานนำเสนอด้วย Python
บทนำ
วิดีโอสามารถช่วยอธิบายแนวคิดและดึงดูดผู้ชมได้ Aspose.Slides สำหรับ Python ผ่าน .NET ให้คุณเพิ่มเฟรมวิดีโอบนสไลด์ ปรับการตั้งค่าการเล่น จัดการคำบรรยาย และดึงข้อมูลวิดีโอที่ฝังอยู่ออกมา
PowerPoint รองรับวิดีโอในเครื่องและลิงก์ไปยังวิดีโอออนไลน์ เช่น วิดีโอจาก YouTube
เพื่อแสดงข้อมูลวิดีโอและเฟรมวิดีโอ Aspose.Slides มีคลาส Video, VideoFrame และประเภทที่เกี่ยวข้องอื่น ๆ
สร้างเฟรมวิดีโอแบบฝัง
หากไฟล์วิดีโอที่คุณต้องการเพิ่มลงในสไลด์จัดเก็บไว้ในเครื่อง คุณสามารถสร้างเฟรมวิดีโอเพื่อฝังวิดีโอในงานนำเสนอของคุณได้
ตัวอย่างนี้ฝังวิดีโอในเครื่องบนสไลด์แรกของงานนำเสนอที่มีอยู่และบันทึกผลลัพธ์ พิกัดและขนาดของเฟรมเป็นจุด (points) สตรีมจะเปิดอยู่จนกว่าการบันทึกจะเสร็จ เนื่องจาก LoadingStreamBehavior.KEEP_LOCKED ทำให้มันล็อกขณะงานนำเสนอใช้งาน
import aspose.slides as slides
with slides.Presentation("presentation.pptx") as presentation:
slide = presentation.slides[0]
with open("video.mp4", "rb") as video_stream:
video = presentation.videos.add_video(video_stream, slides.LoadingStreamBehavior.KEEP_LOCKED)
slide.shapes.add_video_frame(10, 10, 150, 250, video)
presentation.save("embedded_video.pptx", slides.export.SaveFormat.PPTX)
คุณยังสามารถส่งเส้นทางวิดีโอในเครื่องโดยตรงไปยัง add_video_frame. ตัวอย่างนี้ฝังวิดีโอบนสไลด์แรกของงานนำเสนอใหม่ วิดีโอจะต้องเข้าถึงได้จนกว่าการบันทึกงานนำเสนอจะเสร็จ
import aspose.slides as slides
with slides.Presentation() as presentation:
slide = presentation.slides[0]
slide.shapes.add_video_frame(50, 150, 300, 150, "video.avi")
presentation.save("video_from_path.pptx", slides.export.SaveFormat.PPTX)
สร้างเฟรมวิดีโอด้วยวิดีโอจากแหล่งเว็บ
Microsoft PowerPoint รองรับวิดีโอออนไลน์ในงานนำเสนอ คุณสามารถสร้างเฟรมวิดีโอที่ลิงก์ไปยังวิดีโอออนไลน์ เช่น วิดีโอจาก YouTube
ตัวอย่างนี้เพิ่มลิงก์วิดีโอ YouTube และรูปย่อลงบนสไลด์แรก แทนที่รหัสวิดีโอเพื่อใช้วิดีโออื่น การตั้งค่า play_mode ขอให้เล่นอัตโนมัติ การดาวน์โหลดรูปย่อและการเล่นวิดีโอต้องการการเชื่อมต่ออินเทอร์เน็ต ตัวชมงานนำเสนอจะต้องสนับสนุนการเล่นวิดีโอออนไลน์ด้วย
from urllib.request import urlopen
import aspose.slides as slides
with slides.Presentation() as presentation:
slide = presentation.slides[0]
video_id = "aqz-KE-bpKQ"
video_url = f"https://www.youtube.com/embed/{video_id}"
video_frame = slide.shapes.add_video_frame(10, 10, 427, 240, video_url)
video_frame.play_mode = slides.VideoPlayModePreset.AUTO
thumbnail_url = f"https://img.youtube.com/vi/{video_id}/hqdefault.jpg"
with urlopen(thumbnail_url) as response:
thumbnail_data = response.read()
thumbnail = presentation.images.add_image(thumbnail_data)
video_frame.picture_format.picture.image = thumbnail
presentation.save("online_video.pptx", slides.export.SaveFormat.PPTX)
เล่นวิดีโอในโหมดเต็มหน้าจอ
ในงานนำเสนอการฝึกอบรม คุณสามารถเล่นการสาธิตซอฟต์แวร์ในโหมดเต็มหน้าจอเพื่อให้ผู้ชมเห็นรายละเอียด ตั้งค่า full_screen_mode เป็น True เพื่อเปิดพฤติกรรมนี้ขณะเล่น
ตัวอย่างนี้เปิดงานนำเสนอ ค้นหา VideoFrame แรกบนสไลด์แรกและเปิดการเล่นเต็มหน้าจอ งานนำเข้าต้องมีอย่างน้อยหนึ่งสไลด์ที่มีเฟรมวิดีโออยู่บนสไลด์แรก
import aspose.slides as slides
with slides.Presentation("training.pptx") as presentation:
slide = presentation.slides[0]
for shape in slide.shapes:
if isinstance(shape, slides.VideoFrame):
shape.full_screen_mode = True
break
presentation.save("full_screen_video.pptx", slides.export.SaveFormat.PPTX)
การเล่นเต็มหน้าจอควบคุมวิธีการแสดงวิดีโอ อย่างแยกกัน play_mode ควบคุมว่าจะเริ่มอัตโนมัติหรือเมื่อคลิก และ play_loop_mode ควบคุมว่าจะวนซ้ำหรือไม่ เพื่อเลือกพฤติกรรมการเริ่ม ให้ตั้งโหมดการเล่นเป็น VideoPlayModePreset.AUTO or VideoPlayModePreset.ON_CLICK. ตัวอย่างนี้รักษาการตั้งค่าเริ่มและวนซ้ำเดิมไว้
ย้อนวิดีโอหลังจากการเล่น
ในงานนำเสนอการฝึกอบรม การย้อนวิดีโอสาธิตกลับไปยังจุดเริ่มต้นทำให้พร้อมสำหรับผู้บรรยายเล่นอีกครั้ง ตั้งค่า rewind_video เป็น True เพื่อย้อนวิดีโอไปจุดเริ่มต้นหลังจากการเล่นเสร็จ
ตัวอย่างนี้เปิดงานนำเสนอ ค้นหา VideoFrame แรกบนสไลด์แรกและเปิดการย้อนกลับ ปิดการวนซ้ำเพื่อให้การเล่นเสร็จและตั้งให้เริ่มเมื่อคลิก งานนำเข้าต้องมีอย่างน้อยหนึ่งสไลด์ที่มีเฟรมวิดีโอบนสไลด์แรก
import aspose.slides as slides
with slides.Presentation("training.pptx") as presentation:
slide = presentation.slides[0]
for shape in slide.shapes:
if isinstance(shape, slides.VideoFrame):
shape.rewind_video = True
shape.play_loop_mode = False
shape.play_mode = slides.VideoPlayModePreset.ON_CLICK
break
presentation.save("rewind_video.pptx", slides.export.SaveFormat.PPTX)
การย้อนกลับทำให้วิดีโอย้อนกลับไปจุดเริ่มต้นโดยไม่เริ่มใหม่ ในทางตรงกันข้าม การเปิด play_loop_mode จะทำให้การเล่นวนซ้ำอัตโนมัติ ปิดการวนซ้ำเมื่อคุณต้องการให้วิดีโอเล่นจนจบและพร้อมเล่นซ้ำ play_mode ควบคุมการเริ่มอัตโนมัติหรือเมื่อคลิกโดยแยกจากกัน; ตัวอย่างนี้ใช้ VideoPlayModePreset.ON_CLICK เพื่อให้ผู้บรรยายกำหนดเวลาเริ่มเล่น ตั้งโหมดการเล่นหลังจากตั้งค่าการวนซ้ำตามที่แสดงในตัวอย่าง การย้อนกลับทำงานแยกจาก full_screen_mode
ตัดเฟรมวิดีโอ
ใช้ VideoFrame.trim_from_start และ VideoFrame.trim_from_end เพื่อข้ามส่วนต้นหรือส่วนสุดของวิดีโอขณะเล่น ค่าเป็นมิลลิวินาที การตัดแต่งปรับการตั้งค่าการเล่นโดยไม่แก้ไขข้อมูลวิดีโอที่ฝังอยู่
ตั้งค่าการตัด
ตัวอย่างนี้ฝังวิดีโอในเครื่องและข้าม 2.5 วินาทีแรกและ 1 วินาทีสุดท้ายขณะเล่น ใช้วิดีโอที่ยาวกว่า 3.5 วินาทีเพื่อให้เหลือส่วนที่สามารถเล่นได้
import aspose.slides as slides
with slides.Presentation() as presentation:
slide = presentation.slides[0]
with open("video.mp4", "rb") as video_stream:
video_data = video_stream.read()
video = presentation.videos.add_video(video_data)
video_frame = slide.shapes.add_video_frame(50, 50, 640, 360, video)
video_frame.trim_from_start = 2500.0
video_frame.trim_from_end = 1000.0
presentation.save("video_with_trim.pptx", slides.export.SaveFormat.PPTX)
อ่านค่าการตัด
ตัวอย่างนี้พิมพ์ค่าการตัดของเฟรมวิดีโอแรกบนสไลด์แรกเป็นมิลลิวินาที งานนำเสนอจะต้องมีอย่างน้อยหนึ่งสไลด์ หากสไลด์นั้นไม่มีเฟรมวิดีโอจะไม่มีการพิมพ์ ตัวอย่างก่อนหน้าจะได้ค่า 2500 และ 1000
import aspose.slides as slides
with slides.Presentation("video_with_trim.pptx") as presentation:
slide = presentation.slides[0]
for shape in slide.shapes:
if isinstance(shape, slides.VideoFrame):
print(f"Trim from start: {shape.trim_from_start} ms")
print(f"Trim from end: {shape.trim_from_end} ms")
break
จัดการคำบรรยายวิดีโอ
Aspose.Slides ให้คุณจัดการคำบรรยายปิดสำหรับเฟรมวิดีโอในงานนำเสนอ PowerPoint คำบรรยายถูกจัดเก็บในรูปแบบ WebVTT และเข้าถึงได้ผ่านคุณสมบัติ VideoFrame.caption_tracks
เพิ่มคำบรรยายให้กับเฟรมวิดีโอ
ตัวอย่างนี้ฝังวิดีโอในเครื่องและเพิ่มแทรกคำบรรยาย WebVTT ที่ป้าชื่อว่า English เวลาตราประทับของคำบรรยายควรตรงกับวิดีโอ งานนำเสนอที่บันทึกจะมีทั้งวิดีโอและคำบรรยาย
import aspose.slides as slides
with slides.Presentation() as presentation:
slide = presentation.slides[0]
with open("video.mp4", "rb") as video_stream:
video_data = video_stream.read()
video = presentation.videos.add_video(video_data)
video_frame = slide.shapes.add_video_frame(0, 0, 100, 100, video)
video_frame.caption_tracks.add("English", "track.vtt")
presentation.save("video_with_captions.pptx", slides.export.SaveFormat.PPTX)
คลาส CaptionsCollection ยังมีการโหลดที่ทำให้คุณเพิ่มคำบรรยายจากสตรีมได้
ดึงคำบรรยายจากเฟรมวิดีโอ
ตัวอย่างนี้บันทึกแทรกคำบรรยายทั้งหมดจากเฟรมวิดีโอบนสไลด์แรกเป็นไฟล์ WebVTT แยกตามเลขลำดับ เพื่อให้ไฟล์ผลลัพธ์ไม่ซ้ำกัน คอนโซลแสดงจำนวนแทรกที่ดึงออก งานนำเสนอจะต้องมีอย่างน้อยหนึ่งสไลด์
import aspose.slides as slides
with slides.Presentation("video_with_captions.pptx") as presentation:
slide = presentation.slides[0]
track_count = 0
for shape in slide.shapes:
if isinstance(shape, slides.VideoFrame):
for caption_track in shape.caption_tracks:
track_count += 1
output_path = f"captions_{track_count}.vtt"
with open(output_path, "wb") as track_stream:
track_stream.write(bytes(caption_track.binary_data))
print(f"Caption tracks extracted: {track_count}")
แต่ละอ็อบเจ็กต์ Captions เปิดเผยรหัสคำบรรยาย, ป้ายชื่อ, ข้อมูลไบนารี, และข้อความคำบรรยายเป็นสตริง UTF-8
ลบคำบรรยายจากเฟรมวิดีโอ
ตัวอย่างนี้ลบคำบรรยายทั้งหมดจากเฟรมวิดีโอที่ตำแหน่งรูปร่างแรกบนสไลด์แรกและบันทึกผลลัพธ์ สมมติว่ามีสไลด์และรูปร่างอยู่และรูปร่างเป็นเฟรมวิดีโอ
import aspose.slides as slides
with slides.Presentation("video_with_captions.pptx") as presentation:
slide = presentation.slides[0]
video_frame = slide.shapes[0]
video_frame.caption_tracks.clear()
presentation.save("video_without_captions.pptx", slides.export.SaveFormat.PPTX)
หากต้องการลบเฉพาะแทรกคำบรรยายหนึ่งรายการ ให้ใช้เมธอด remove หรือ remove_at แทน clear
ดึงวิดีโอจากสไลด์
นอกจากการเพิ่มวิดีโอลงสไลด์แล้ว Aspose.Slides ยังให้คุณดึงวิดีโอที่ฝังอยู่ในงานนำเสนอ
ตัวอย่างนี้ดึงวิดีโอที่ฝังจากทุกสไลด์เป็นไฟล์ไบนารีแยกตามหมายเลข วิดีโอที่ลิงก์จะถูกข้ามเพราะไม่มีข้อมูลฝัง คอนโซลพิมพ์ประเภท MIME ของแต่ละวิดีโอและจำนวนทั้งหมด ผลลัพธ์ใช้ส่วนขยาย .bin ทั่วไป; สามารถเปลี่ยนให้ตรงกับสื่อที่รายงานเมื่อจำเป็น
import aspose.slides as slides
with slides.Presentation("presentation_with_videos.pptx") as presentation:
video_count = 0
for slide in presentation.slides:
for shape in slide.shapes:
if isinstance(shape, slides.VideoFrame):
video = shape.embedded_video
if video is None:
print("Skipped a linked video: no embedded data is available.")
continue
video_count += 1
output_path = f"extracted_video_{video_count}.bin"
with open(output_path, "wb") as video_stream:
video_stream.write(bytes(video.binary_data))
print(f"Video {video_count}: {video.content_type}")
print(f"Embedded videos extracted: {video_count}")
คำถามที่พบบ่อย
พารามิเตอร์การเล่นวิดีโอที่สามารถเปลี่ยนแปลงสำหรับเฟรมวิดีโอได้มีอะไรบ้าง?
คุณสามารถควบคุม playback mode (อัตโนมัติหรือเมื่อคลิก) และ looping. ตัวเลือกเหล่านี้ใช้ได้ผ่านคุณสมบัติโปรพเพอร์ตี้ของอ็อบเจ็กต์ VideoFrame
การเพิ่มวิดีโอมีผลต่อขนาดไฟล์ PPTX หรือไม่?
ใช่ เมื่อคุณฝังวิดีโอในเครื่อง ข้อมูลไบนารีจะรวมอยู่ในเอกสารทำให้ขนาดงานนำเพิ่มตามขนาดไฟล์ เมื่อคุณลิงก์ไปยังวิดีโอออนไลน์และเพิ่มรูปย่อ งานนำจัดเก็บลิงก์และภาพตัวอย่างแทนข้อมูลวิดีโอ ดังนั้นการเพิ่มขนาดมักจะน้อยกว่า
ฉันสามารถแทนที่วิดีโอในเฟรมวิดีโอที่มีอยู่โดยไม่เปลี่ยนตำแหน่งและขนาดได้หรือไม่?
ได้ คุณสามารถสลับ video content ภายในเฟรมโดยคงรูปร่างไว้ นี่เป็นสถานการณ์ทั่วไปสำหรับการอัปเดตสื่อในเลเอาต์ที่มีอยู่
สามารถกำหนดประเภทเนื้อหา (MIME) ของวิดีโอที่ฝังได้หรือไม่?
ได้ วิดีโอที่ฝังมี content type ที่คุณสามารถอ่านและใช้ได้ เช่น เมื่อบันทึกลงดิสก์