จัดการเฟรมเสียงในงานนำเสนอใน .NET
ภาพรวม
บทความนี้อธิบายวิธีทำงานกับเฟรมเสียงใน Aspose.Slides โดยแสดงวิธีเพิ่มเสียงฝังในสไลด์ ปรับรูปย่อของเฟรมเสียง ตั้งค่าตัวเลือกการเล่นเช่น ปริมาณเสียง การวนซ้ำ การซ่อน การตัดและระยะเวลาเฟด และดึงเสียงที่ใช้ในการเปลี่ยนสไลด์โชว์ออกมา
สร้างเฟรมเสียง
Aspose.Slides for .NET อนุญาตให้คุณเพิ่มไฟล์เสียงลงในสไลด์ ไฟล์เสียงจะถูกฝังในสไลด์เป็นเฟรมเสียง
- สร้างอินสแตนซ์ของคลาสPresentation
- เรียกอ้างอิงสไลด์ผ่านดัชนีของมัน
- โหลดสตรีมไฟล์เสียงที่คุณต้องการฝังลงในสไลด์
- เพิ่มเฟรมเสียงที่ฝัง (ซึ่งบรรจุไฟล์เสียง) ลงในสไลด์
- ตั้งค่าPlayModeและ
Volumeที่เปิดให้ใช้งานโดยอ็อบเจ็กต์IAudioFrame - บันทึกงานนำเสนอที่แก้ไขแล้ว
โค้ด C# นี้แสดงวิธีเพิ่มเฟรมเสียงที่ฝังลงในสไลด์:
// สร้างอินสแตนซ์ของคลาส Presentation ที่แสดงถึงไฟล์งานนำเสนอ
using (Presentation pres = new Presentation())
{
// ดึงสไลด์แรก
ISlide sld = pres.Slides[0];
// โหลดไฟล์เสียง wav ไปยังสตรีม
FileStream fstr = new FileStream("sampleaudio.wav", FileMode.Open, FileAccess.Read);
// เพิ่ม Audio Frame
IAudioFrame audioFrame = sld.Shapes.AddAudioFrameEmbedded(50, 150, 100, 100, fstr);
// ตั้งค่า Play Mode และ Volume ของ Audio
audioFrame.PlayMode = AudioPlayModePreset.Auto;
audioFrame.Volume = AudioVolumeMode.Loud;
// เขียนไฟล์ PowerPoint ไปยังดิสก์
pres.Save("AudioFrameEmbed_out.pptx", SaveFormat.Pptx);
}
เปลี่ยนรูปย่อของเฟรมเสียง
เมื่อคุณเพิ่มไฟล์เสียงลงในงานนำเสนอ เสียงจะแสดงเป็นเฟรมที่มีรูปภาพค่าเริ่มต้นมาตรฐาน (ดูภาพในส่วนต่อไปนี้) คุณสามารถเปลี่ยนรูปย่อของเฟรมเสียง (ตั้งค่าภาพที่คุณต้องการ) ได้
โค้ด C# นี้แสดงวิธีเปลี่ยนรูปย่อหรือรูปภาพตัวอย่างของเฟรมเสียง:
using (var presentation = new Presentation())
{
var slide = presentation.Slides[0];
// เพิ่มเฟรมเสียงลงในสไลด์ด้วยตำแหน่งและขนาดที่กำหนด
var audioStream = new FileStream("sample2.mp3", FileMode.Open, FileAccess.Read);
var audioFrame = slide.Shapes.AddAudioFrameEmbedded(150, 100, 50, 50, audioStream);
audioStream.Dispose();
// เพิ่มภาพลงในทรัพยากรของงานนำเสนอ
var imageStream = File.OpenRead("eagle.jpeg");
var audioImage = presentation.Images.AddImage(imageStream);
imageStream.Dispose();
// ตั้งค่าภาพสำหรับเฟรมเสียง
audioFrame.PictureFormat.Picture.Image = audioImage; // <-----
//บันทึกงานนำเสนอที่แก้ไขแล้วลงดิสก์
presentation.Save("example_out.pptx", SaveFormat.Pptx);
}
เปลี่ยนตัวเลือกการเล่นเสียง
Aspose.Slides for .NET อนุญาตให้คุณปรับตัวเลือกที่ควบคุมการเล่นหรือคุณสมบัติของเสียง ตัวอย่างเช่น คุณสามารถปรับระดับเสียงของเสียง ตั้งค่าให้เสียงเล่นวนซ้ำ หรือแม้แต่ซ่อนไอคอนเสียง
แผง Audio Options ใน Microsoft PowerPoint:

ตัวเลือก Audio Options ของ PowerPoint ที่สอดคล้องกับคุณสมบัติของ Aspose.SlidesAudioFrame มีดังนี้
- Start เมนูแบบดรอปดาวน์ตรงกับคุณสมบัติAudioFrame.PlayMode
- Volume ตรงกับคุณสมบัติAudioFrame.Volume
- Play Across Slides ตรงกับคุณสมบัติAudioFrame.PlayAcrossSlides
- Loop until Stopped ตรงกับคุณสมบัติAudioFrame.PlayLoopMode
- Hide During Show ตรงกับคุณสมบัติAudioFrame.HideAtShowing
- Rewind after Playing ตรงกับคุณสมบัติAudioFrame.RewindAudio
ตัวเลือก Editing ของ PowerPoint ที่สอดคล้องกับคุณสมบัติของ Aspose.SlidesAudioFrame มีดังนี้
- Fade In ตรงกับคุณสมบัติAudioFrame.FadeInDuration
- Fade Out ตรงกับคุณสมบัติAudioFrame.FadeOutDuration
- Trim Audio Start Time ตรงกับคุณสมบัติAudioFrame.TrimFromStart
- Trim Audio End Time มีค่าเท่ากับระยะเวลาของเสียงลบด้วยค่าของคุณสมบัติAudioFrame.TrimFromEnd
ตัวควบคุม Volume บนแถบควบคุมเสียงของ PowerPoint สอดคล้องกับคุณสมบัติAudioFrame.VolumeValue ซึ่งช่วยให้คุณเปลี่ยนระดับเสียงเป็นเปอร์เซ็นต์
วิธีปรับตัวเลือกการเล่นเสียงมีดังนี้
- Create หรือดึงเอา Audio Frame มา
- ตั้งค่าคุณสมบัติของ Audio Frame ที่ต้องการปรับเป็นค่ใหม่
- บันทึกไฟล์ PowerPoint ที่แก้ไขแล้ว
โค้ด C# นี้สาธิตการปรับตัวเลือกของเสียง:
using (Presentation pres = new Presentation("AudioFrameEmbed_out.pptx"))
{
// ดึงรูปร่าง AudioFrame
AudioFrame audioFrame = (AudioFrame)pres.Slides[0].Shapes[0];
// ตั้งค่า Play mode ให้เล่นเมื่อคลิก
audioFrame.PlayMode = AudioPlayModePreset.OnClick;
// ตั้งค่าปริมาณเสียงเป็น Low
audioFrame.Volume = AudioVolumeMode.Low;
// ตั้งค่าให้เสียงเล่นต่อเนื่องข้ามสไลด์
audioFrame.PlayAcrossSlides = true;
// ปิดการวนลูปสำหรับเสียง
audioFrame.PlayLoopMode = false;
// ซ่อน AudioFrame ระหว่างการนำเสนอ
audioFrame.HideAtShowing = true;
// ทำการรีวินด์เสียงกลับไปเริ่มต้นหลังการเล่น
audioFrame.RewindAudio = true;
// บันทึกไฟล์ PowerPoint ลงดิสก์
pres.Save("AudioFrameEmbed_changed.pptx", SaveFormat.Pptx);
}
ตัวอย่าง C# นี้แสดงวิธีเพิ่มเฟรมเสียงใหม่ที่ฝังเสียง ตัดสั้น และตั้งค่าระยะเวลาเฟด:
using (Presentation pres = new Presentation())
{
ISlide slide = pres.Slides[0];
byte[] audioData = File.ReadAllBytes("sampleaudio.mp3");
IAudio audio = pres.Audios.AddAudio(audioData);
IAudioFrame audioFrame = slide.Shapes.AddAudioFrameEmbedded(50, 50, 100, 100, audio);
// ตั้งค่าออฟเซ็ตการตัดเริ่มต้นเป็น 1.5 วินาที
audioFrame.TrimFromStart = 1500f;
// ตั้งค่าออฟเซ็ตการตัดสิ้นสุดเป็น 2 วินาที
audioFrame.TrimFromEnd = 2000f;
// ตั้งค่าเวลาการเฟดอินเป็น 200 มิลลิวินาที
audioFrame.FadeInDuration = 200f;
// ตั้งค่าเวลาการเฟดเอาท์เป็น 500 มิลลิวินาที
audioFrame.FadeOutDuration = 500f;
pres.Save("AudioFrameTrimFade_out.pptx", SaveFormat.Pptx);
}
โค้ดตัวอย่างต่อไปนี้แสดงวิธีดึง Audio Frame ที่ฝังเสียงและตั้งค่าปริมาณเสียงเป็น 85%:
using (Presentation pres = new Presentation("AudioFrameEmbed_out.pptx"))
{
// ดึงรูปร่าง Audio Frame
IAudioFrame audioFrame = (IAudioFrame)pres.Slides[0].Shapes[0];
// ตั้งค่าปริมาณเสียงเป็น 85%
audioFrame.VolumeValue = 85f;
pres.Save("AudioFrameValue_out.pptx", SaveFormat.Pptx);
}
จัดการคำบรรยายเสียง
Aspose.Slides อนุญาตให้คุณเพิ่มคำบรรยายปิด (closed captions) ให้กับ Audio Frame ผ่านคุณสมบัติCaptionTracks ซึ่งจะคืนค่าเป็นICaptionsCollection ให้คุณเพิ่มแทร็กคำบรรยาย WebVTT, วนลูปผ่านแทร็กที่มีอยู่, และลบออกเมื่อจำเป็น
เพิ่มคำบรรยายเสียง
ใช้คุณสมบัติCaptionTracks เพื่อแนบแทร็กคำบรรยายหนึ่งหรือหลายแทร็กเข้ากับ Audio Frame ตัวอย่างต่อไปนี้แสดงการเพิ่มไฟล์เสียงลงสไลด์แล้วโหลดแทร็กคำบรรยายใหม่จากไฟล์.vtt
using (Presentation presentation = new Presentation())
{
byte[] audioData = File.ReadAllBytes("audio.mp3");
IAudio audio = presentation.Audios.AddAudio(audioData);
ISlide slide = presentation.Slides[0];
IAudioFrame audioFrame = slide.Shapes.AddAudioFrameEmbedded(10, 10, 50, 50, audio);
// เพิ่มแทร็กคำบรรยายใหม่จากไฟล์ WebVTT.
presentation.Save("audio_with_captions.pptx", SaveFormat.Pptx);
}
สกัดคำบรรยายเสียง
คุณสามารถวนลูปผ่านแทร็กคำบรรยายที่เชื่อมโยงกับ Audio Frame และบันทึกเป็นไฟล์.vtt ทุกแทร็กคำบรรยายจะเผยข้อมูลไบนารีและตัวระบุที่ไม่ซ้ำกัน ซึ่งสามารถใช้เมื่อทำการส่งออกคำบรรยาย
using (Presentation presentation = new Presentation("audio_with_captions.pptx"))
{
ISlide slide = presentation.Slides[0];
foreach (IShape shape in slide.Shapes)
{
if (shape is IAudioFrame audioFrame)
{
foreach (ICaptions captionTrack in audioFrame.CaptionTracks)
{
// บันทึกแทร็กคำบรรยายเป็นไฟล์ .vtt.
File.WriteAllBytes($"{captionTrack.CaptionId}.vtt", captionTrack.BinaryData);
}
}
}
}
ลบคำบรรยายเสียง
เพื่อลบคำบรรยายออกจาก Audio Frame ให้ใช้เมธอดของICaptionsCollection เช่นClear,Remove,หรือRemoveAt ตัวอย่างต่อไปนี้ลบแทร็กคำบรรยายทั้งหมดจาก Audio Frame
using (Presentation presentation = new Presentation("audio_with_captions.pptx"))
{
ISlide slide = presentation.Slides[0];
IAudioFrame audioFrame = slide.Shapes[0] as IAudioFrame;
// ลบแทร็กคำบรรยายทั้งหมดจากเฟรมเสียง.
audioFrame.CaptionTracks.Clear();
presentation.Save("audio_without_captions.pptx", SaveFormat.Pptx);
}
สกัดเสียง
Aspose.Slides for .NET อนุญาตให้คุณสกัดเสียงที่ใช้ในการเปลี่ยนสไลด์โชว์ ตัวอย่างเช่น คุณสามารถสกัดเสียงที่ใช้ในสไลด์เฉพาะได้
- สร้างอินสแตนซ์ของคลาสPresentationและโหลดงานนำเสนอที่มีเสียง
- ดึงอ้างอิงสไลด์ที่เกี่ยวข้องผ่านดัชนีของมัน
- เข้าถึงการเปลี่ยนสไลด์โชว์ของสไลด์นั้น
- สกัดเสียงเป็นข้อมูลไบต์
โค้ด C# นี้แสดงวิธีสกัดเสียงที่ใช้ในสไลด์:
string presName = "AudioSlide.pptx";
// สร้างอินสแตนซ์ของคลาส Presentation ที่แสดงถึงไฟล์งานนำเสนอ
Presentation pres = new Presentation(presName);
// เข้าถึงสไลด์
ISlide slide = pres.Slides[0];
// ดึงเอฟเฟกต์การเปลี่ยนสไลด์โชว์สำหรับสไลด์
ISlideShowTransition transition = slide.SlideShowTransition;
//สกัดเสียงเป็นอาร์เรย์ไบต์
byte[] audio = transition.Sound.BinaryData;
System.Console.WriteLine("Length: " + audio.Length);
FAQ
ฉันสามารถใช้ไฟล์เสียงเดียวกันหลายสไลด์โดยไม่ทำให้ขนาดไฟล์เพิ่มขึ้นได้หรือไม่?
ได้ เพียงเพิ่มเสียงครั้งเดียวในaudio collectionที่ใช้ร่วมกันของงานนำเสนอ แล้วสร้าง Audio Frame เพิ่มเติมที่อ้างอิงไปยังแอสเซทนั้น ซึ่งจะช่วยหลีกเลี่ยงการทำสำเนาข้อมูลสื่อและทำให้ขนาดงานนำเสนอคงที่
ฉันสามารถเปลี่ยนเสียงใน Audio Frame ที่มีอยู่ได้โดยไม่ต้องสร้างรูปร่างใหม่หรือไม่?
ได้ สำหรับเสียงที่ลิงก์อยู่ ให้อัปเดตlink pathให้ชี้ไปยังไฟล์ใหม่ สำหรับเสียงที่ฝังอยู่ ให้สลับอ็อบเจ็กต์embedded audioด้วยอ็อบเจ็กต์อื่นจากaudio collectionของงานนำเสนอ รูปแบบของเฟรมและการตั้งค่าการเล่นส่วนใหญ่จะคงเดิม
การตัดสั้น (trim) จะทำให้ข้อมูลเสียงพื้นฐานที่เก็บในงานนำเปลี่ยนแปลงหรือไม่?
ไม่ การตัดสั้นจะปรับเพียงขอบเขตการเล่นเท่านั้น ไบต์เสียงต้นฉบับจะไม่ถูกแก้ไขและยังคงเข้าถึงได้ผ่านเสียงที่ฝังหรือผ่านaudio collectionของงานนำเสนอ