จัดการเฟรมวิดีโอในงานนำเสนอด้วย PHP
บทนำ
วิดีโอที่วางไว้ในตำแหน่งที่เหมาะสมในการนำเสนอสามารถทำให้ข้อความของคุณน่าสนใจยิ่งขึ้นและเพิ่มระดับการมีส่วนร่วมกับผู้ชมของคุณ
PowerPoint อนุญาตให้คุณเพิ่มวิดีโอลงในสไลด์ของการนำเสนอได้สองวิธี:
- เพิ่มหรือฝังวิดีโอท้องถิ่น (จัดเก็บบนเครื่องของคุณ)
- เพิ่มวิดีโอออนไลน์ (จากแหล่งเว็บเช่น YouTube)
เพื่อให้คุณสามารถเพิ่มวิดีโอ (วัตถุวิดีโอ) ลงในการนำเสนอ Aspose.Slides มีคลาส Video , VideoFrame และประเภทที่เกี่ยวข้องอื่น ๆ
สร้างเฟรมวิดีโอแบบฝัง
หากไฟล์วิดีโอที่คุณต้องการเพิ่มลงในสไลด์ของคุณถูกจัดเก็บในเครื่อง คุณสามารถสร้างเฟรมวิดีโอเพื่อฝังวิดีโอลงในการนำเสนอของคุณได้
- สร้างอินสแตนซ์ของคลาส Presentation
- รับอ้างอิงของสไลด์ผ่านดัชนีของมัน
- เพิ่มวัตถุ Video และส่งพาธไฟล์วิดีโอเพื่อฝังวิดีโอกับการนำเสนอ
- เพิ่มวัตถุ VideoFrame เพื่อสร้างเฟรมสำหรับวิดีโอ
- บันทึกการนำเสนอที่แก้ไขแล้ว
โค้ด PHP นี้แสดงวิธีเพิ่มวิดีโอที่จัดเก็บในเครื่องลงในการนำเสนอ:
# สร้างอินสแตนซ์ของคลาส Presentation
$pres = new Presentation("pres.pptx");
try {
# โหลดวิดีโอ
$fileStream = new Java("java.io.FileInputStream", "Wildlife.mp4");
$video = $pres->getVideos()->addVideo($fileStream, LoadingStreamBehavior->KeepLocked);
# ดึงสไลด์แรกและเพิ่ม videoframe
$pres->getSlides()->get_Item(0)->getShapes()->addVideoFrame(10, 10, 150, 250, $video);
# บันทึกการนำเสนอลงดิสก์
$pres->save("pres-with-video.pptx", SaveFormat::Pptx);
} catch (JavaException $e) {
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
อีกทางเลือกหนึ่ง คุณสามารถเพิ่มวิดีโอโดยส่งพาธไฟล์โดยตรงไปยังเมธอด addVideoFrame(float x, float y, float width, float height, Video video):
$pres = new Presentation();
try {
$sld = $pres->getSlides()->get_Item(0);
$vf = $sld->getShapes()->addVideoFrame(50, 150, 300, 150, "video1.avi");
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
สร้างเฟรมวิดีโอด้วยวิดีโอจากแหล่งเว็บ
Microsoft PowerPoint 2013 และใหม่กว่า รองรับวิดีโอ YouTube ในการนำเสนอ หากวิดีโอที่คุณต้องการใช้มีออนไลน์ (เช่นบน YouTube) คุณสามารถเพิ่มลงในการนำเสนอของคุณผ่านลิงก์เว็บของมัน
- สร้างอินสแตนซ์ของคลาส Presentation
- รับอ้างอิงของสไลด์ผ่านดัชนีของมัน
- เพิ่มวัตถุ Video และส่งลิงก์ไปยังวิดีโอ
- ตั้งค่า thumbnail สำหรับเฟรมวิดีโอ
- บันทึกการนำเสนอ
โค้ด PHP นี้แสดงวิธีเพิ่มวิดีโอจากเว็บลงในสไลด์ของการนำเสนอ PowerPoint:
# สร้างอ็อบเจกต์ Presentation ที่เป็นตัวแทนของไฟล์งานนำเสนอ
$pres = new Presentation();
try {
addVideoFromYouTube($pres, "Tj75Arhq5ho");
$pres->save("out.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
จัดการคำบรรยายวิดีโอ
Aspose.Slides อนุญาตให้คุณจัดการคำบรรยายปิดสำหรับเฟรมวิดีโอในการนำเสนอ PowerPoint คำบรรยายถูกจัดเก็บในรูปแบบ WebVTT และเปิดเผยผ่านเมธอด VideoFrame::getCaptionTracks
เพิ่มคำบรรยายให้กับเฟรมวิดีโอ
เพื่อเพิ่มคำบรรยายให้กับเฟรมวิดีโอ:
- สร้างอินสแตนซ์ของคลาส Presentation
- เพิ่มวิดีโอลงในการนำเสนอ
- เพิ่มวัตถุ VideoFrame ลงในสไลด์
- ใช้คอล렉ชัน CaptionsCollection ที่คืนค่าจาก getCaptionTracks เพื่อเพิ่มแทร็กคำบรรยาย WebVTT
- บันทึกการนำเสนอที่แก้ไขแล้ว
โค้ดต่อไปนี้แสดงวิธีเพิ่มคำบรรยายให้กับเฟรมวิดีโอ:
$presentation = new Presentation();
try {
$videoData = file_get_contents("video.mp4");
$video = $presentation->getVideos()->addVideo($videoData);
$slide = $presentation->getSlides()->get_Item(0);
$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();
}
คลาส CaptionsCollection ยังมี overload ที่ให้คุณเพิ่มคำบรรยายจากสตรีมได้
ดึงคำบรรยายจากเฟรมวิดีโอ
เพื่อดึงคำบรรยายจากเฟรมวิดีโอ:
- โหลดการนำเสนอที่มีวิดีโออยู่
- ค้นหาอ็อบเจ็กต์ VideoFrame ที่ต้องการ
- วนลูปผ่านคอล렉ชัน getCaptionTracks
- บันทึกแต่ละแทร็กคำบรรยายเป็นไฟล์
.vtt
โค้ดต่อไปนี้แสดงวิธีดึงคำบรรยายจากเฟรมวิดีโอ:
$presentation = new Presentation("video_with_captions.pptx");
try {
$slide = $presentation->getSlides()->get_Item(0);
$shapeCount = java_values($slide->getShapes()->size());
for ($shapeIndex = 0; $shapeIndex < $shapeCount; $shapeIndex++) {
$shape = $slide->getShapes()->get_Item($shapeIndex);
if (java_instanceof($shape, new JavaClass("com.aspose.slides.VideoFrame"))) {
$videoFrame = $shape;
$trackCount = java_values($videoFrame->getCaptionTracks()->getCount());
for ($trackIndex = 0; $trackIndex < $trackCount; $trackIndex++) {
$captionTrack = $videoFrame->getCaptionTracks()->get_Item($trackIndex);
// บันทึกแทร็กคำบรรยายเป็นไฟล์ WebVTT.
$filePath = $captionTrack->getCaptionId() . ".vtt";
file_put_contents($filePath, $captionTrack->getBinaryData());
}
}
}
} finally {
$presentation->dispose();
}
แต่ละวัตถุ Captions จะเปิดเผยรหัสประจำคำบรรยาย, ป้ายชื่อ, ข้อมูลไบนารี, และข้อความคำบรรยายเป็นสตริง UTF-8
ลบคำบรรยายจากเฟรมวิดีโอ
เพื่อทำการลบคำบรรยายจากเฟรมวิดีโอ:
- โหลดการนำเสนอที่มีวิดีโออยู่
- รับอ็อบเจ็กต์ VideoFrame ที่ต้องการ
- ลบแทร็กคำบรรยายจากคอล렉ชัน getCaptionTracks
- บันทึกการนำเสนอที่แก้ไขแล้ว
โค้ดต่อไปนี้แสดงวิธีลบคำบรรยายทั้งหมดจากเฟรมวิดีโอ:
$presentation = new Presentation("video_with_captions.pptx");
try {
$slide = $presentation->getSlides()->get_Item(0);
$videoFrame = $slide->getShapes()->get_Item(0); // ประเภท: VideoFrame
// ลบคำบรรยายทั้งหมดจากเฟรมวิดีโอ.
$videoFrame->getCaptionTracks()->clear();
$presentation->save("video_without_captions.pptx", SaveFormat::Pptx);
} finally {
$presentation->dispose();
}
หากคุณต้องการลบเฉพาะแทร็กคำบรรยายหนึ่งรายการ ให้ใช้เมธอด remove หรือ removeAt แทน clear
ดึงวิดีโอจากสไลด์
นอกเหนือจากการเพิ่มวิดีโอลงในสไลด์แล้ว Aspose.Slides ยังอนุญาตให้คุณดึงวิดีโอที่ฝังอยู่ในการนำเสนอได้
- สร้างอินสแตนซ์ของคลาส Presentation เพื่อโหลดการนำเสนอที่มีวิดีโออยู่
- วนลูปผ่านอ็อบเจ็กต์ Slide ทั้งหมด
- วนลูปผ่านอ็อบเจ็กต์ Shape ทั้งหมดเพื่อค้นหา VideoFrame
- บันทึกวิดีโอลงดิสก์
โค้ด PHP นี้แสดงวิธีดึงวิดีโอจากสไลด์ของการนำเสนอ:
# สร้างอ็อบเจกต์ Presentation ที่เป็นตัวแทนของไฟล์งานนำเสนอ
$pres = new Presentation("VideoSample.pptx");
try {
foreach($pres->getSlides() as $slide) {
foreach($slide->getShapes() as $shape) {
if (java_instanceof($shape, new JavaClass("com.aspose.slides.VideoFrame"))) {
$vf = $shape;
$type = $vf->getEmbeddedVideo()->getContentType();
$ss = $type->lastIndexOf('-');
$buffer = $vf->getEmbeddedVideo()->getBinaryData();
# รับส่วนขยายไฟล์
$charIndex = $type->indexOf("/");
$type = $type->substring($charIndex + 1);
$fop = new Java("java.io.FileOutputStream", "testing2." . $type);
$fop->write($buffer);
$fop->flush();
$fop->close();
}
}
}
} catch (JavaException $e) {
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
คำถามที่พบบ่อย
พารามิเตอร์การเล่นวิดีโอใดบ้างที่สามารถเปลี่ยนแปลงได้สำหรับ VideoFrame?
คุณสามารถควบคุม playback mode (อัตโนมัติหรือเมื่อคลิก) และ looping. ตัวเลือกเหล่านี้สามารถใช้ได้ผ่านคุณสมบัติของวัตถุ VideoFrame
การเพิ่มวิดีโอทำให้ขนาดไฟล์ PPTX เพิ่มขึ้นหรือไม่?
ใช่ เมื่อคุณฝังวิดีโอท้องถิ่น ไฟล์ข้อมูลไบนารีจะถูกใส่ในเอกสาร ดังนั้นขนาดการนำเสนอจะเพิ่มขึ้นตามขนาดของไฟล์นั้น เมื่อคุณเพิ่มวิดีโอออนไลน์ ลิงก์และภาพย่อจะถูกฝังไว้ ทำให้การเพิ่มขนาดน้อยลง
ฉันสามารถแทนที่วิดีโอใน VideoFrame ที่มีอยู่โดยไม่เปลี่ยนตำแหน่งและขนาดได้หรือไม่?
ใช่ คุณสามารถสลับ video content ภายในเฟรมขณะยังคงรักษาเรขาคณิตของรูปร่างไว้; นี่เป็นสถานการณ์ทั่วไปสำหรับการอัปเดตสื่อในเค้าโครงที่มีอยู่
สามารถระบุประเภทเนื้อหา (MIME) ของวิดีโอที่ฝังได้หรือไม่?
ใช่ วิดีโอที่ฝังไว้มี content type ซึ่งคุณสามารถอ่านและใช้ได้ เช่นเมื่อต้องการบันทึกลงดิสก์