จัดการ Video Frames ในงานนำเสนอบน Android

บทนำ

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

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

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

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

สร้าง Video Frame ฝัง

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

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

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

// สร้างอินสแตนซ์ของคลาส Presentation
Presentation pres = new Presentation("pres.pptx");
try {
    // โหลดวิดีโอ
    FileInputStream fileStream = new FileInputStream("Wildlife.mp4");
    
    IVideo video = pres.getVideos().addVideo(fileStream, LoadingStreamBehavior.KeepLocked);

    // ดึงสไลด์แรกและเพิ่ม video frame
    pres.getSlides().get_Item(0).getShapes().addVideoFrame(10, 10, 150, 250, video);

    // บันทึกงานนำเสนอลงดิสก์
    pres.save("pres-with-video.pptx", SaveFormat.Pptx);
} catch (IOException e) {
} finally {
    if (pres != null) pres.dispose();
}

หรืออีกทางหนึ่ง, คุณสามารถเพิ่มวิดีโอโดยส่งพาธไฟล์โดยตรงไปยังเมธอด addVideoFrame(float x, float y, float width, float height, IVideo video):

Presentation pres = new Presentation();
try {
	ISlide sld = pres.getSlides().get_Item(0);
	IVideoFrame vf = sld.getShapes().addVideoFrame(50, 150, 300, 150, "video1.avi");
} finally {
	if (pres != null) pres.dispose();
}

สร้าง Video Frame จากวิดีโอบนเว็บ

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

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

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

// สร้างอ็อบเจ็กต์ Presentation ที่เป็นตัวแทนของไฟล์งานนำเสนอ 
Presentation pres = new Presentation();
try {
    addVideoFromYouTube(pres, "Tj75Arhq5ho");
    pres.save("out.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}
private static void addVideoFromYouTube(Presentation pres, String videoID)
{
    // เพิ่ม videoFrame
    IVideoFrame videoFrame = pres.getSlides().get_Item(0).getShapes().addVideoFrame(
            10, 10, 427, 240, "https://www.youtube.com/embed/" + videoID);
    videoFrame.setPlayMode(VideoPlayModePreset.Auto);

    // โหลดภาพย่อ
    String thumbnailUri = "http://img.youtube.com/vi/" + videoID + "/hqdefault.jpg";
    URL url;

    try {
        url = new URL(thumbnailUri);
        videoFrame.getPictureFormat().getPicture().setImage(pres.getImages().addImage(url.openStream()));
    } catch (MalformedURLException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    }
}

จัดการคำบรรยายวิดีโอ

Aspose.Slides ให้คุณจัดการ closed captions สำหรับ video frames ใน PowerPoint presentations. คำบรรยายถูกเก็บในรูปแบบ WebVTT และเข้าถึงผ่านเมธอด IVideoFrame.getCaptionTracks

เพิ่มคำบรรยายลงใน Video Frame

เพื่อเพิ่มคำบรรยายลงใน video frame:

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

โค้ดต่อไปนี้แสดงวิธีเพิ่มคำบรรยายลงใน video frame:

Presentation presentation = new Presentation();
try {
    byte[] videoData = // "video.mp4";
    IVideo video = presentation.getVideos().addVideo(videoData);

    ISlide slide = presentation.getSlides().get_Item(0);
    IVideoFrame videoFrame = slide.getShapes().addVideoFrame(0, 0, 100, 100, video);

    // เพิ่มแทร็กคำบรรยายใหม่จากไฟล์ WebVTT.
    videoFrame.getCaptionTracks().add("English", "track.vtt");

    presentation.save("video_with_captions.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

อินเทอร์เฟซ ICaptionsCollection ยังมีโอเวอร์โหลดที่ให้คุณเพิ่มคำบรรยายจากสตรีมได้

สกัดคำบรรยายจาก Video Frame

เพื่อสกัดคำบรรยายจาก video frame:

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

โค้ดต่อไปนี้แสดงวิธีสกัดคำบรรยายจาก video frame:

Presentation presentation = new Presentation("video_with_captions.pptx");
try {
    ISlide slide = presentation.getSlides().get_Item(0);
    for (IShape shape : slide.getShapes()) {
        if (shape instanceof IVideoFrame) {
            IVideoFrame videoFrame = (IVideoFrame) shape;
            for (ICaptions captionTrack : videoFrame.getCaptionTracks()) {
                // บันทึกแทร็กคำบรรยายเป็นไฟล์ WebVTT.
                FileOutputStream outputStream = new FileOutputStream(captionTrack.getCaptionId() + ".vtt");
                outputStream.write(captionTrack.getBinaryData());
                outputStream.close();
            }
        }
    }
} finally {
    presentation.dispose();
}

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

ลบคำบรรยายจาก Video Frame

เพื่อเปลียนคำบรรยายจาก video frame:

  1. โหลดงานนำเสนอที่มีวิดีโออยู่.
  2. รับอ็อบเจ็กต์ IVideoFrame ที่ต้องการ.
  3. ลบ caption tracks ออกจากคอลเลกชันที่ส่งคืนโดย getCaptionTracks.
  4. บันทึกงานนำเสนอที่แก้ไขแล้ว.

โค้ดต่อไปนี้แสดงวิธีลบคำบรรยายทั้งหมดจาก video frame:

Presentation presentation = new Presentation("video_with_captions.pptx");
try {
    ISlide slide = presentation.getSlides().get_Item(0);
    IVideoFrame videoFrame = (IVideoFrame) slide.getShapes().get_Item(0);

    // ลบคำบรรยายทั้งหมดจากเฟรมวิดีโอ.
    videoFrame.getCaptionTracks().clear();

    presentation.save("video_without_captions.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

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

สกัดวิดีโอจากสไลด์

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

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

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

// สร้างอ็อบเจ็กต์ Presentation ที่แทนไฟล์งานนำเสนอ 
Presentation pres = new Presentation("VideoSample.pptx");
try {
    for (ISlide slide : pres.getSlides()) 
    {
        for (IShape shape : slide.getShapes()) 
        {
            if (shape instanceof VideoFrame) 
            {
                IVideoFrame vf = (IVideoFrame) shape;
                String type = vf.getEmbeddedVideo().getContentType();
                int ss = type.lastIndexOf('-');
                byte[] buffer = vf.getEmbeddedVideo().getBinaryData();

                //รับส่วนขยายของไฟล์
                int charIndex = type.indexOf("/");
                type = type.substring(charIndex + 1);

                FileOutputStream fop = new FileOutputStream("testing2." + type);
                fop.write(buffer);
                fop.flush();
                fop.close();
            }
        }
    }
} catch (IOException e) {
} finally {
    if (pres != null) pres.dispose();
}

คำถามที่พบบ่อย

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

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

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

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

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

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

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

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