จัดการเฟรมวิดีโอในงานนำเสนอด้วย .NET
บทนำ
วิดีโอที่วางอย่างเหมาะสมในงานนำเสนอสามารถทำให้ข้อความของคุณน่าสนใจยิ่งขึ้นและเพิ่มระดับการมีส่วนร่วมกับผู้ชมของคุณ.
PowerPoint อนุญาตให้คุณเพิ่มวิดีโอลงในสไลด์ของงานนำเสนอได้สองวิธี:
- เพิ่มหรือฝังวิดีโอในเครื่อง (เก็บไว้บนเครื่องของคุณ)
- เพิ่มวิดีโอออนไลน์ (จากแหล่งเว็บเช่น YouTube).
เพื่อให้คุณสามารถเพิ่มวิดีโอ (วิดีโออ็อบเจกต์) ลงในงานนำเสนอได้ Aspose.Slides มีการให้บริการอินเทอร์เฟซ IVideo , อินเทอร์เฟซ IVideoFrame และประเภทที่เกี่ยวข้องอื่น ๆ.
สร้างเฟรมวิดีโอที่ฝังไว้
หากไฟล์วิดีโอที่คุณต้องการเพิ่มไปยังสไลด์ของคุณถูกเก็บไว้ในเครื่องคุณสามารถสร้างเฟรมวิดีโอเพื่อฝังวิดีโอในงานนำเสนอของคุณได้.
- สร้างอินสแตนซ์ของคลาส Presentation class.
- รับอ้างอิงของสไลด์ผ่านดัชนีของมัน.
- เพิ่มอ็อบเจกต์ IVideo และส่งพาธไฟล์วิดีโอเพื่อฝังวิดีโอเข้ากับงานนำเสนอ.
- เพิ่มอ็อบเจกต์ IVideoFrame เพื่อสร้างเฟรมสำหรับวิดีโอ.
- บันทึกงานนำเสนอที่แก้ไขแล้ว.
โค้ด C# นี้แสดงวิธีการเพิ่มวิดีโอที่เก็บไว้ในเครื่องลงในงานนำเสนอ:
// สร้างอินสแตนซ์ของคลาส Presentation
using (Presentation pres = new Presentation("pres.pptx"))
{
// โหลดวิดีโอ
using (FileStream fileStream = new FileStream("Wildlife.mp4", FileMode.Open, FileAccess.Read))
{
IVideo video = pres.Videos.AddVideo(fileStream, LoadingStreamBehavior.KeepLocked);
// รับสไลด์แรกและเพิ่มเฟรมวิดีโอ
pres.Slides[0].Shapes.AddVideoFrame(10, 10, 150, 250, video);
// บันทึกงานนำเสนอลงดิสก์
pres.Save("pres-with-video.pptx", SaveFormat.Pptx);
}
}
หรือคุณสามารถเพิ่มวิดีโอโดยส่งพาธไฟล์ของมันโดยตรงไปยังเมธอด AddVideoFrame:
using (Presentation pres = new Presentation())
{
ISlide sld = pres.Slides[0];
IVideoFrame vf = sld.Shapes.AddVideoFrame(50, 150, 300, 150, "video1.avi");
}
สร้างเฟรมวิดีโอด้วยวิดีโอจากแหล่งเว็บ
Microsoft PowerPoint 2013 and newer รองรับวิดีโอ YouTube ในงานนำเสนอ หากวิดีโอที่คุณต้องการใช้มีให้บริการออนไลน์ (เช่นบน YouTube) คุณสามารถเพิ่มมันลงในงานนำเสนอของคุณผ่านลิงก์เว็บของมันได้.
- สร้างอินสแตนซ์ของคลาส Presentation class
- รับอ้างอิงของสไลด์ผ่านดัชนีของมัน.
- เพิ่มอ็อบเจกต์ IVideo และส่งลิงก์ไปยังวิดีโอ.
- ตั้งค่า thumbnail สำหรับเฟรมวิดีโอ.
- บันทึกงานนำเสนอ.
โค้ด C# นี้แสดงวิธีการเพิ่มวิดีโอจากเว็บไปยังสไลด์ในงานนำเสนอ PowerPoint:
public static void Run()
{
// สร้างอ็อบเจกต์ Presentation ที่แทนไฟล์งานนำเสนอ
using (Presentation pres = new Presentation())
{
AddVideoFromYouTube(pres, "Tj75Arhq5ho");
pres.Save("AddVideoFrameFromWebSource_out.pptx", SaveFormat.Pptx);
}
}
private static void AddVideoFromYouTube(Presentation pres, string videoId)
{
// เพิ่ม VideoFrame
IVideoFrame videoFrame = pres.Slides[0].Shapes.AddVideoFrame(10, 10, 427, 240, "https://www.youtube.com/embed/" + videoId);
videoFrame.PlayMode = VideoPlayModePreset.Auto;
// โหลดภาพย่อ
using (WebClient client = new WebClient())
{
string thumbnailUri = "http://img.youtube.com/vi/" + videoId + "/hqdefault.jpg";
videoFrame.PictureFormat.Picture.Image = pres.Images.AddImage(client.DownloadData(thumbnailUri));
}
}
จัดการคำบรรยายวิดีโอ
Aspose.Slides อนุญาตให้คุณจัดการคำบรรยายปิดสำหรับเฟรมวิดีโอในงานนำเสนอ PowerPoint คำบรรยายถูกเก็บในรูปแบบ WebVTT และเข้าถึงได้ผ่านคุณสมบัติ IVideoFrame.CaptionTracks.
เพิ่มคำบรรยายให้กับเฟรมวิดีโอ
เพื่อเพิ่มคำบรรยายให้กับเฟรมวิดีโอ:
- สร้างอินสแตนซ์ของคลาส Presentation .
- เพิ่มวิดีโอลงในงานนำเสนอ.
- เพิ่มอ็อบเจกต์ IVideoFrame ไปยังสไลด์.
- ใช้คอลเลกชัน CaptionTracks เพื่อเพิ่มแทร็กคำบรรยาย WebVTT.
- บันทึกงานนำเสนอที่แก้ไขแล้ว.
โค้ดต่อไปนี้แสดงวิธีการเพิ่มคำบรรยายให้กับเฟรมวิดีโอ:
using (Presentation presentation = new Presentation())
{
byte[] videoData = File.ReadAllBytes("video.mp4");
IVideo video = presentation.Videos.AddVideo(videoData);
ISlide slide = presentation.Slides[0];
IVideoFrame videoFrame = slide.Shapes.AddVideoFrame(0, 0, 100, 100, video);
// เพิ่มแทร็กคำบรรยายใหม่จากไฟล์ WebVTT.
videoFrame.CaptionTracks.Add("English", "track.vtt");
presentation.Save("video_with_captions.pptx", SaveFormat.Pptx);
}
อินเทอร์เฟซ ICaptionsCollection ยังมีโอเวอร์โหลดที่ให้คุณเพิ่มคำบรรยายจากสตรีมได้.
ดึงคำบรรยายจากเฟรมวิดีโอ
เพื่อดึงคำบรรยายจากเฟรมวิดีโอ:
- โหลดงานนำเสนอที่มีวิดีโอ.
- ค้นหาอ็อบเจกต์ IVideoFrame ที่ต้องการ.
- ทำการวนรอบผ่านคอลเลกชัน CaptionTracks.
- บันทึกแต่ละแทร็กคำบรรยายเป็นไฟล์
.vtt.
โค้ดต่อไปนี้แสดงวิธีการดึงคำบรรยายจากเฟรมวิดีโอ:
using (Presentation presentation = new Presentation("video_with_captions.pptx"))
{
ISlide slide = presentation.Slides[0];
foreach (IShape shape in slide.Shapes)
{
if (shape is IVideoFrame videoFrame)
{
foreach (ICaptions captionTrack in videoFrame.CaptionTracks)
{
// บันทึกแทร็กคำบรรยายเป็นไฟล์ WebVTT.
string filePath = $"{captionTrack.CaptionId}.vtt";
File.WriteAllBytes(filePath, captionTrack.BinaryData);
}
}
}
}
แต่ละอ็อบเจกต์ ICaptions จะเผยให้เห็นตัวระบุคำบรรยาย, ป้ายชื่อ, ข้อมูลไบนารี และข้อความคำบรรยายในรูปแบบสตริง UTF-8.
ลบคำบรรยายจากเฟรมวิดีโอ
เพื่อเอาคำบรรยายออกจากเฟรมวิดีโอ:
- โหลดงานนำเสนอที่มีวิดีโอ.
- รับอ็อบเจกต์ IVideoFrame ที่ต้องการ.
- ลบแทร็กคำบรรยายจากคอลเลกชัน CaptionTracks.
- บันทึกงานนำเสนอที่แก้ไขแล้ว.
โค้ดต่อไปนี้แสดงวิธีการลบคำบรรยายทั้งหมดจากเฟรมวิดีโอ:
using (Presentation presentation = new Presentation("video_with_captions.pptx"))
{
ISlide slide = presentation.Slides[0];
IVideoFrame videoFrame = slide.Shapes[0] as IVideoFrame;
// ลบคำบรรยายทั้งหมดจากเฟรมวิดีโอ.
videoFrame.CaptionTracks.Clear();
presentation.Save("video_without_captions.pptx", SaveFormat.Pptx);
}
หากคุณต้องการลบเพียงแทร็กคำบรรยายเดียว ให้ใช้เมธอด Remove หรือ RemoveAt แทนการใช้ Clear.
ดึงวิดีโอจากสไลด์
นอกจากการเพิ่มวิดีโอลงในสไลด์แล้ว Aspose.Slides ยังอนุญาตให้คุณดึงวิดีโอที่ฝังอยู่ในงานนำเสนอออกมาได้.
- สร้างอินสแตนซ์ของคลาส Presentation เพื่อโหลดงานนำเสนอที่มีวิดีโอ.
- ทำการวนรอบผ่านอ็อบเจกต์ทั้งหมดของ ISlide.
- ทำการวนรอบผ่านอ็อบเจกต์ทั้งหมดของ IShape เพื่อค้นหา VideoFrame.
- บันทึกวิดีโอลงดิสก์.
โค้ด C# นี้แสดงวิธีการดึงวิดีโอจากสไลด์ในงานนำเสนอ:
// สร้างอ็อบเจกต์ Presentation ที่แทนไฟล์งานนำเสนอ
Presentation presentation = new Presentation("Video.pptx");
// วนซ้ำผ่านสไลด์
foreach (ISlide slide in presentation.Slides)
{
// วนซ้ำผ่านรูปร่าง
foreach (IShape shape in presentation.Slides[0].Shapes)
{
// บันทึกวิดีโอลงดิสก์เมื่อพบ VideoFrame ที่มีวิดีโอ
if (shape is VideoFrame)
{
IVideoFrame vf = shape as IVideoFrame;
String type = vf.EmbeddedVideo.ContentType;
int ss = type.LastIndexOf('/');
type = type.Remove(0, type.LastIndexOf('/') + 1);
Byte[] buffer = vf.EmbeddedVideo.BinaryData;
using (FileStream stream = new FileStream("NewVideo_out." + type, FileMode.Create, FileAccess.Write, FileShare.Read))
{
stream.Write(buffer, 0, buffer.Length);
}
}
}
}
คำถามที่พบบ่อย
พารามิเตอร์การเล่นวิดีโอใดบ้างที่สามารถเปลี่ยนแปลงได้สำหรับ VideoFrame?
คุณสามารถควบคุม playback mode (อัตโนมัติหรือเมื่อคลิก) และ looping. ตัวเลือกเหล่านี้สามารถเข้าถึงได้ผ่านคุณสมบัติของอ็อบเจกต์ VideoFrame.
การเพิ่มวิดีโอมีผลต่อขนาดไฟล์ PPTX หรือไม่?
ใช่. เมื่อคุณฝังวิดีโอในเครื่องข้อมูลไบนารีจะถูกรวมไว้ในเอกสาร ทำให้ขนาดงานนำเพิ่มขึ้นตามขนาดไฟล์ของวิดีโอ เมื่อคุณเพิ่มวิดีโอออนไลน์เพียงลิงก์และ thumbnail จะถูกฝังไว้ ดังนั้นการเพิ่มขนาดจึงน้อยกว่า.
ฉันสามารถแทนที่วิดีโอใน VideoFrame ที่มีอยู่โดยไม่เปลี่ยนตำแหน่งและขนาดได้หรือไม่?
ใช่. คุณสามารถสลับ video content ภายในเฟรมโดยคงรูปทรงของ shape ไว้ได้ ซึ่งเป็นสถานการณ์ทั่วไปสำหรับการอัปเดตสื่อในเลย์เอาต์ที่มีอยู่.
สามารถกำหนดประเภทเนื้อหา (MIME) ของวิดีโอที่ฝังอยู่ได้หรือไม่?
ได้. วิดีโอที่ฝังอยู่มี content type ที่คุณสามารถอ่านและใช้ได้ ตัวอย่างเช่นเมื่อบันทึกลงดิสก์.