เพิ่มวิดีโอในงานนำเสนอด้วย Python

บทนำ

วิดีโอที่วางอย่างเหมาะสมในงานนำเสนอสามารถทำให้ข้อความของคุณน่าสนใจยิ่งขึ้นและเพิ่มระดับการมีส่วนร่วมกับผู้ชมของคุณ

PowerPoint ให้คุณเพิ่มวิดีโอลงในสไลด์ของงานนำเสนอได้สองวิธี:

  • เพิ่มหรือฝังวิดีโอในเครื่อง (เก็บไว้บนคอมพิวเตอร์ของคุณ)
  • เพิ่มวิดีโอออนไลน์ (จากแหล่งเว็บเช่น YouTube)

เพื่อให้คุณสามารถเพิ่มวิดีโอโค้ด (วัตถุวิดีโอ) ลงในงานนำเสนอ Aspose.Slides มีคลาส Video , VideoFrame และประเภทที่เกี่ยวข้องอื่น ๆ

สร้าง VideoFrame ที่ฝังวิดีโอ

หากไฟล์วิดีโอที่คุณต้องการเพิ่มลงในสไลด์เก็บไว้ในเครื่องคุณสามารถสร้าง VideoFrame เพื่อฝังวิดีโอในงานนำเสนอของคุณได้

  1. สร้างอินสแตนซ์ของคลาส Presentation
  2. รับอ้างอิงสไลด์ผ่านดัชนีของมัน
  3. เพิ่มอ็อบเจกต์ Video แล้วส่งพาธไฟล์วิดีโอเพื่อฝังวิดีโอกับงานนำเสนอ
  4. เพิ่มอ็อบเจกต์ VideoFrame เพื่อสร้างกรอบสำหรับวิดีโอ
  5. บันทึกงานนำเสนอที่ดัดแปลงแล้ว

โค้ด Python นี้แสดงวิธีเพิ่มวิดีโอที่เก็บไว้ในเครื่องลงในงานนำเสนอ:

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)

        # ดึงสไลด์แรกและเพิ่มกรอบวิดีโอ
        pres.slides[0].shapes.add_video_frame(10, 10, 150, 250, video)

        # บันทึกงานนำเสนอลงดิสก์
        pres.save(path + "pres-with-video.pptx", slides.export.SaveFormat.PPTX)

หรือคุณสามารถเพิ่มวิดีโอโดยส่งพาธไฟล์โดยตรงไปยังเมธอด add_video_frame(x, y, width, height, fname) :

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

สร้าง VideoFrame ด้วยวิดีโอจากแหล่งเว็บ

Microsoft PowerPoint 2013 and newer รองรับวิดีโอจาก YouTube ในงานนำเสนอ หากวิดีโอที่คุณต้องการใช้มีออนไลน์ (เช่นบน YouTube) คุณสามารถเพิ่มลงในงานนำเสนอผ่านลิงก์เว็บของมันได้

  1. สร้างอินสแตนซ์ของคลาส Presentation
  2. รับอ้างอิงสไลด์ผ่านดัชนีของมัน
  3. เพิ่มอ็อบเจกต์ Video แล้วส่งลิงก์ไปยังวิดีโอ
  4. ตั้งค่า thumbnail สำหรับ VideoFrame
  5. บันทึกงานนำเสนอ

โค้ด Python นี้แสดงวิธีเพิ่มวิดีโอจากเว็บลงในสไลด์ของงานนำเสนอ PowerPoint:

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

def add_video_from_youyube(pres, videoId):
    # เพิ่ม videoFrame
    videoFrame = pres.slides[0].shapes.add_video_frame(10, 10, 427, 240, "https://www.youtube.com/embed/" + videoId)
    videoFrame.play_mode = slides.VideoPlayModePreset.AUTO

    # โหลด thumbnail
    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)

จัดการ Caption ของวิดีโอ

Aspose.Slides ให้คุณจัดการ closed captions สำหรับ VideoFrame ในงานนำเสนอ PowerPoint Caption จะถูกเก็บในรูปแบบ WebVTT และสามารถเข้าถึงได้ผ่านคุณสมบัติ VideoFrame.caption_tracks

เพิ่ม Caption ให้กับ VideoFrame

เพื่อเพิ่ม Caption ให้กับ VideoFrame:

  1. สร้างอินสแตนซ์ของคลาส Presentation
  2. เพิ่มวิดีโอลงในงานนำเสนอ
  3. เพิ่มอ็อบเจกต์ VideoFrame ลงในสไลด์
  4. ใช้ CaptionsCollection ที่คืนค่าจาก caption_tracks เพื่อเพิ่ม WebVTT caption track
  5. บันทึกงานนำเสนอที่ดัดแปลงแล้ว

โค้ดต่อไปนี้แสดงวิธีเพิ่ม Caption ให้กับ VideoFrame:

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)

    # เพิ่มแทร็กคำบรรยายใหม่จากไฟล์ WebVTT.
    presentation.save("video_with_captions.pptx", slides.export.SaveFormat.PPTX)

คลาส CaptionsCollection ยังมี overload ที่ให้คุณเพิ่ม Caption จากสตรีมได้ด้วย

สกัด Caption จาก VideoFrame

เพื่อสกัด Caption จาก VideoFrame:

  1. โหลดงานนำเสนอที่มีวิดีโออยู่
  2. ค้นหาอ็อบเจกต์ VideoFrame เป้าหมาย
  3. วนลูปผ่านคอลเลกชัน caption_tracks
  4. บันทึกแต่ละ caption track เป็นไฟล์ .vtt

โค้ดต่อไปนี้แสดงวิธีสกัด Caption จาก VideoFrame:

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:
                # บันทึกแทร็กคำบรรยายเป็นไฟล์ WebVTT.
                file_path = f"{caption_track.caption_id}.vtt"
                with open(file_path, "wb") as track_stream:
                    track_stream.write(bytes(caption_track.binary_data))

แต่ละอ็อบเจกต์ Captions จะเปิดเผยตัวระบุ Caption, ป้ายกำกับ, ข้อมูลไบนารี และข้อความ Caption ในรูปแบบสตริง UTF‑8

ลบ Caption จาก VideoFrame

เพื่อเอา Caption ออกจาก VideoFrame:

  1. โหลดงานนำเสนอที่มีวิดีโออยู่
  2. รับอ็อบเจกต์ VideoFrame เป้าหมาย
  3. ลบ caption track จาก CaptionsCollection
  4. บันทึกงานนำเสนอที่ดัดแปลงแล้ว

โค้ดต่อไปนี้แสดงวิธีลบ Caption ทั้งหมดจาก VideoFrame:

import aspose.slides as slides

with slides.Presentation("video_with_captions.pptx") as presentation:
    slide = presentation.slides[0]
    video_frame = slide.shapes[0]  # ประเภท: slides.VideoFrame

    # ลบคำบรรยายทั้งหมดออกจากวิดีโอเฟรม.
    video_frame.caption_tracks.clear()

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

หากคุณต้องการลบเพียงหนึ่ง caption track ให้ใช้เมธอด remove หรือ remove_at แทนการใช้ clear

สกัด Video จากสไลด์

นอกเหนือจากการเพิ่มวิดีโอลงในสไลด์ Aspose.Slides ยังอนุญาตให้คุณสกัดวิดีโอที่ฝังอยู่ในงานนำเสนอได้

  1. สร้างอินสแตนซ์ของคลาส Presentation เพื่อโหลดงานนำเสนอที่มีวิดีโอ
  2. วนลูปผ่านอ็อบเจกต์ Slide ทั้งหมด
  3. วนลูปผ่านอ็อบเจกต์ Shape ทั้งหมดเพื่อค้นหา VideoFrame
  4. บันทึกวิดีโอลงดิสก์

โค้ด Python นี้แสดงวิธีสกัดวิดีโอจากสไลด์ของงานนำเสนอ:

import aspose.slides as slides

# สร้างอ็อบเจกต์ Presentation ที่เป็นตัวแทนของไฟล์งานนำเสนอ
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)

FAQ

พารามิเตอร์การเล่นวิดีโอใดบ้างที่สามารถเปลี่ยนแปลงได้สำหรับ VideoFrame?

คุณสามารถควบคุม playback mode (อัตโนมัติหรือคลิก) และ looping ตัวเลือกเหล่านี้สามารถเข้าถึงได้ผ่านคุณสมบัติของอ็อบเจกต์ VideoFrame

การเพิ่มวิดีโอส่งผลต่อขนาดไฟล์ PPTX หรือไม่?

ใช่ เมื่อคุณฝังวิดีโอในเครื่อง ข้อมูลไบนารีจะถูกรวมอยู่ในเอกสาร ทำให้ขนาดงานนำเสนอเพิ่มตามขนาดไฟล์ เมื่อคุณเพิ่มวิดีโอออนไลน์ จะฝังลิงก์และ thumbnail เท่านั้น ทำให้การเพิ่มขนาดน้อยกว่า

ฉันสามารถแทนที่วิดีโอใน VideoFrame ที่มีอยู่ได้โดยไม่เปลี่ยนตำแหน่งและขนาดหรือไม่?

ใช่ คุณสามารถสลับ video content ภายในกรอบได้โดยยังคงรักษาเรขาคณิตของรูปร่างไว้ นี่เป็นสถานการณ์ทั่วไปสำหรับการอัปเดตสื่อในเค้าโครงที่มีอยู่

สามารถระบุประเภทเนื้อหา (MIME) ของวิดีโอที่ฝังไว้ได้หรือไม่?

ใช่ วิดีโอที่ฝังไว้มี content type ที่คุณสามารถอ่านและใช้ได้ เช่นเมื่อต้องการบันทึกลงดิสก์