จัดการ Video Frames ในงานนำเสนอบน Android
บทนำ
วิดีโอที่วางอย่างเหมาะสมในงานนำเสนอสามารถทำให้ข้อความของคุณน่าสนใจยิ่งขึ้นและเพิ่มระดับการมีส่วนร่วมกับผู้ชมของคุณ
PowerPoint อนุญาตให้คุณเพิ่มวิดีโอลงในสไลด์ของงานนำเสนอได้สองวิธี:
- เพิ่มหรือฝังวิดีโอในเครื่อง (จัดเก็บบนเครื่องของคุณ)
- เพิ่มวิดีโอออนไลน์ (จากแหล่งเว็บเช่น YouTube).
เพื่อให้คุณเพิ่มวิดีโอ (วัตถุวิดีโอ) ลงในงานนำเสนอ, Aspose.Slides มีอินเทอร์เฟซ IVideo อินเทอร์เฟซ IVideoFrame และประเภทที่เกี่ยวข้องอื่น ๆ
สร้าง Video Frame ฝัง
หากไฟล์วิดีโอที่คุณต้องการเพิ่มลงในสไลด์จัดเก็บในเครื่อง, คุณสามารถสร้าง video frame เพื่อฝังวิดีโอลงในงานนำเสนอของคุณได้
- สร้างอินสแตนซ์ของคลาส Presentation.
- รับการอ้างอิงของสไลด์ผ่านดัชนีของมัน.
- เพิ่มอ็อบเจ็กต์ IVideo และส่งพาธของไฟล์วิดีโอเพื่อฝังวิดีโอเข้ากับงานนำเสนอ.
- เพิ่มอ็อบเจ็กต์ IVideoFrame เพื่อสร้างเฟรมสำหรับวิดีโอ.
- บันทึกงานนำเสนอที่แก้ไขแล้ว.
โค้ด 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) คุณสามารถเพิ่มลงในงานนำเสนอผ่านลิงก์เว็บของมัน
- สร้างอินสแตนซ์ของคลาส Presentation
- รับการอ้างอิงของสไลด์ผ่านดัชนีของมัน.
- เพิ่มอ็อบเจ็กต์ IVideo และส่งลิงก์ของวิดีโอ.
- ตั้งค่า thumbnail สำหรับ video frame.
- บันทึกงานนำเสนอ.
โค้ด 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:
- สร้างอินสแตนซ์ของคลาส Presentation
- เพิ่มวิดีโอลงในงานนำเสนอ.
- เพิ่มอ็อบเจ็กต์ IVideoFrame ไปยังสไลด์.
- ใช้ ICaptionsCollection ที่ส่งคืนโดย getCaptionTracks เพื่อเพิ่ม WebVTT caption track.
- บันทึกงานนำเสนอที่แก้ไขแล้ว.
โค้ดต่อไปนี้แสดงวิธีเพิ่มคำบรรยายลงใน 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:
- โหลดงานนำเสนอที่มีวิดีโออยู่.
- ค้นหาอ็อบเจ็กต์ IVideoFrame ที่ต้องการ.
- วนลูปผ่าน caption tracks ที่ส่งคืนโดย getCaptionTracks.
- บันทึกแต่ละ 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:
- โหลดงานนำเสนอที่มีวิดีโออยู่.
- รับอ็อบเจ็กต์ IVideoFrame ที่ต้องการ.
- ลบ caption tracks ออกจากคอลเลกชันที่ส่งคืนโดย getCaptionTracks.
- บันทึกงานนำเสนอที่แก้ไขแล้ว.
โค้ดต่อไปนี้แสดงวิธีลบคำบรรยายทั้งหมดจาก 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 ยังให้คุณสกัดวิดีโอที่ฝังอยู่ในงานนำเสนอ
- สร้างอินสแตนซ์ของคลาส Presentation เพื่อโหลดงานนำเสนอที่มีวิดีโอ.
- วนลูปผ่านอ็อบเจ็กต์ ISlide ทั้งหมด.
- วนลูปผ่านอ็อบเจ็กต์ IShape ทั้งหมดเพื่อค้นหา VideoFrame.
- บันทึกวิดีโอลงดิสก์.
โค้ด 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 ที่คุณสามารถอ่านและใช้ได้ ตัวอย่างเช่นเมื่อต้องบันทึกลงดิสก์