จัดการเสียงในงานนำเสนอบน Android
ภาพรวม
บทความนี้อธิบายวิธีทำงานกับเฟรมเสียงใน Aspose.Slides แสดงวิธีเพิ่มเสียงฝังลงในสไลด์ ปรับแต่งรูปย่อของเฟรมเสียง กำหนดค่าตัวเลือกการเล่นเช่น ระดับเสียง การวนซ้ำ การซ่อน การตัด และระยะเวลาการจางหาย และสกัดเสียงที่ใช้ในการเปลี่ยนสไลด์โชว์
สร้างเฟรมเสียง
Aspose.Slides for Android ผ่าน Java ช่วยให้คุณเพิ่มไฟล์เสียงลงในสไลด์ ไฟล์เสียงจะถูกฝังในสไลด์เป็นเฟรมเสียง
- สร้างอินสแตนซ์ของคลาส Presentation
- รับอ้างอิงของสไลด์ผ่านดัชนีของมัน
- โหลดสตรีมไฟล์เสียงที่คุณต้องการฝังในสไลด์
- เพิ่มเฟรมเสียงฝัง (ซึ่งประกอบด้วยไฟล์เสียง) ไปยังสไลด์
- ตั้งค่า PlayMode และ
Volumeที่เปิดให้ใช้โดยอ็อบเจกต์ IAudioFrame - บันทึกงานนำเสนอที่ถูกแก้ไข
โค้ด Java นี้แสดงวิธีเพิ่มเฟรมเสียงฝังลงในสไลด์:
// สร้างอินสแตนซ์ของคลาส Presentation ที่แทนไฟล์งานนำเสนอ
Presentation pres = new Presentation();
try {
// ดึงสไลด์แรก
ISlide sld = pres.getSlides().get_Item(0);
// โหลดไฟล์เสียง wav ไปยังสตรีม
FileInputStream fstr = new FileInputStream(new File("audio.wav"));
// เพิ่มเฟรมเสียง
IAudioFrame audioFrame = sld.getShapes().addAudioFrameEmbedded(50, 150, 100, 100, fstr);
fstr.close();
// ตั้งค่าโหมดการเล่นและระดับเสียงของเสียง
audioFrame.setPlayMode(AudioPlayModePreset.Auto);
audioFrame.setVolume(AudioVolumeMode.Loud);
// เขียนไฟล์ PowerPoint ลงดิสก์
pres.save("AudioFrameEmbed_out.pptx", SaveFormat.Pptx);
} catch(IOException e) {
} finally {
if (pres != null) pres.dispose();
}
เปลี่ยนรูปย่อของเฟรมเสียง
เมื่อคุณเพิ่มไฟล์เสียงลงในงานนำเสนอ เสียงจะแสดงเป็นเฟรมพร้อมรูปภาพค่าเริ่มต้นมาตรฐาน (ดูรูปในส่วนด้านล่าง) คุณสามารถเปลี่ยนรูปภาพตัวอย่างของเฟรมเสียง (ตั้งค่าภาพที่คุณต้องการ)
โค้ด Java นี้แสดงวิธีเปลี่ยนรูปย่อหรือรูปภาพตัวอย่างของเฟรมเสียง:
Presentation presentation = new Presentation();
try {
ISlide slide = presentation.getSlides().get_Item(0);
// เพิ่มเฟรมเสียงไปยังสไลด์ด้วยตำแหน่งและขนาดที่ระบุ
FileInputStream audioStream = new FileInputStream("sample2.mp3");
IAudioFrame audioFrame = slide.getShapes().addAudioFrameEmbedded(150, 100, 50, 50, audioStream);
audioStream.close();
// เพิ่มรูปภาพไปยังทรัพยากรของงานนำเสนอ
IPPImage picture;
IImage image = Images.fromFile("eagle.jpeg");
try {
picture = presentation.getImages().addImage(image);
} finally {
if (image != null) image.dispose();
}
// ตั้งค่ารูปภาพสำหรับเฟรมเสียง
audioFrame.getPictureFormat().getPicture().setImage(picture); // <-----
// บันทึกงานนำเสนอที่แก้ไขลงดิสก์
presentation.save("example_out.pptx", SaveFormat.Pptx);
} catch(IOException e) {
} finally {
if (presentation != null) presentation.dispose();
}
เปลี่ยนตัวเลือกการเล่นเสียง
Aspose.Slides for Android ผ่าน Java ให้คุณเปลี่ยนตัวเลือกที่ควบคุมการเล่นหรือคุณสมบัติของเสียง ตัวอย่างเช่น คุณสามารถปรับระดับเสียงของเสียง ตั้งค่าให้เสียงเล่นวนซ้ำ หรือแม้กระทั่งซ่อนไอคอนเสียง
แผง Audio Optionsใน Microsoft PowerPoint:

Audio Optionsของ PowerPointที่สอดคล้องกับคุณสมบัติของ Aspose.Slides AudioFrame :
- 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.Slides AudioFrame :
- Fade In ตรงกับคุณสมบัติ AudioFrame.FadeInDuration
- Fade Out ตรงกับคุณสมบัติ AudioFrame.FadeOutDuration
- Trim Audio Start Time ตรงกับคุณสมบัติ AudioFrame.TrimFromStart
- Trim Audio End Time มีค่าเท่ากับระยะเวลาของเสียงลบด้วยค่าของ AudioFrame.TrimFromEnd
ตัวควบคุม Volumeของ PowerPointบนแผงควบคุมเสียงสอดคล้องกับคุณสมบัติ AudioFrame.VolumeValue ซึ่งช่วยให้คุณเปลี่ยนระดับเสียงเป็นเปอร์เซ็นต์
วิธีเปลี่ยนตัวเลือกการเล่นเสียงคือ:
- Сreate หรือรับ Audio Frame
- ตั้งค่าค่าใหม่สำหรับคุณสมบัติของ Audio Frame ที่คุณต้องการปรับ
- บันทึกไฟล์ PowerPoint ที่ถูกแก้ไข
โค้ด Java นี้สาธิบการดำเนินการที่ปรับตัวเลือกของเสียง:
Presentation pres = new Presentation("AudioFrameEmbed_out.pptx");
try {
// รับรูปร่าง AudioFrame
AudioFrame audioFrame = (AudioFrame)pres.getSlides().get_Item(0).getShapes().get_Item(0);
// ตั้งค่าโหมดการเล่นให้เล่นเมื่อคลิก
audioFrame.setPlayMode(AudioPlayModePreset.OnClick);
// ตั้งค่าระดับเสียงเป็น Low
audioFrame.setVolume(AudioVolumeMode.Low);
// ตั้งค่าให้เสียงเล่นต่อเนื่องหลายสไลด์
audioFrame.setPlayAcrossSlides(true);
// ปิดการวนลูปสำหรับเสียง
audioFrame.setPlayLoopMode(false);
// ซ่อน AudioFrame ระหว่างการแสดงสไลด์
audioFrame.setHideAtShowing(true);
// รีวายด์เสียงกลับไปเริ่มต้นหลังการเล่น
audioFrame.setRewindAudio(true);
// บันทึกไฟล์ PowerPoint ลงดิสก์
pres.save("AudioFrameEmbed_changed.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
ตัวอย่าง Java นี้แสดงวิธีเพิ่มเฟรมเสียงใหม่พร้อมเสียงฝัง, ตัดส่วนและตั้งค่าระยะเวลาการจาง:
Presentation pres = new Presentation();
try {
ISlide slide = pres.getSlides().get_Item(0);
FileInputStream audioData = new FileInputStream("sampleaudio.mp3");
IAudio audio = pres.getAudios().addAudio(audioData, LoadingStreamBehavior.KeepLocked);
IAudioFrame audioFrame = slide.getShapes().addAudioFrameEmbedded(50, 50, 100, 100, audio);
// ตั้งค่าจุดเริ่มต้นการตัดเป็น 1.5 วินาที
audioFrame.setTrimFromStart(1500f);
// ตั้งค่าจุดสิ้นสุดการตัดเป็น 2 วินาที
audioFrame.setTrimFromEnd(2000f);
// ตั้งค่าระยะเวลาการค่อย‑ค่อยปรากฏ (fade‑in) เป็น 200 มิลลิวินาที
audioFrame.setFadeInDuration(200f);
// ตั้งค่าระยะเวลาการค่อย‑ค่อยหายไป (fade‑out) เป็น 500 มิลลิวินาที
audioFrame.setFadeOutDuration(500f);
pres.save("AudioFrameTrimFade_out.pptx", SaveFormat.Pptx);
} finally {
pres.dispose();
}
ตัวอย่างโค้ดต่อไปนี้แสดงวิธีดึงเฟรมเสียงที่มีเสียงฝังและตั้งระดับเสียงเป็น 85%:
Presentation pres = new Presentation("AudioFrameEmbed_out.pptx");
try {
ISlide slide = pres.getSlides().get_Item(0);
// รับรูปร่างเฟรมเสียง
IAudioFrame audioFrame = (IAudioFrame)slide.getShapes().get_Item(0);
// ตั้งค่าระดับเสียงเป็น 85%
audioFrame.setVolumeValue(85f);
pres.save("AudioFrameValue_out.pptx", SaveFormat.Pptx);
}
finally {
pres.dispose();
}
จัดการคำบรรยายเสียง
Aspose.Slides ให้คุณเพิ่มคำบรรยายปิด (closed captions) ให้กับเฟรมเสียงผ่านเมธอด getCaptionTracks เมธอดนี้จะคืนค่าเป็น ICaptionsCollection ซึ่งทำให้คุณสามารถเพิ่มแทร็กคำบรรยาย WebVTT, วนผ่านแทร็กที่มีอยู่, และลบได้เมื่อจำเป็น
เพิ่มคำบรรยายเสียง
ใช้เมธอด getCaptionTracks เพื่อแนบแทร็กคำบรรยายหนึ่งหรือหลายแทร็กให้กับเฟรมเสียง ในตัวอย่างต่อไปนี้ ไฟล์เสียงจะถูกเพิ่มลงในสไลด์ และจากนั้นโหลดแทร็กคำบรรยายใหม่จากไฟล์ .vtt
Presentation presentation = new Presentation();
try {
byte[] audioData = Files.readAllBytes(Paths.get("audio.mp3"));
IAudio audio = presentation.getAudios().addAudio(audioData);
ISlide slide = presentation.getSlides().get_Item(0);
IAudioFrame audioFrame = slide.getShapes().addAudioFrameEmbedded(10, 10, 50, 50, audio);
// เพิ่มแทร็กคำบรรยายใหม่จากไฟล์ WebVTT.
presentation.save("audio_with_captions.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
สกัดคำบรรยายเสียง
คุณสามารถวนผ่านแทร็กคำบรรยายที่เชื่อมกับเฟรมเสียงและบันทึกเป็นไฟล์ .vttแต่ละแทร็กคำบรรยายจะเปิดเผยข้อมูลไบนารีและตัวระบุที่ไม่ซ้ำกัน ซึ่งสามารถใช้เมื่อนำออกคำบรรยาย
Presentation presentation = new Presentation("audio_with_captions.pptx");
try {
ISlide slide = presentation.getSlides().get_Item(0);
for (IShape shape : slide.getShapes()) {
if (shape instanceof IAudioFrame) {
IAudioFrame audioFrame = (IAudioFrame) shape;
for (ICaptions captionTrack : audioFrame.getCaptionTracks()) {
// บันทึกแทร็กคำบรรยายเป็นไฟล์ .vtt.
FileOutputStream fos = new FileOutputStream(captionTrack.getCaptionId() + ".vtt");
fos.write(captionTrack.getBinaryData());
fos.close();
}
}
}
} catch (IOException e){
} finally {
presentation.dispose();
}
ลบคำบรรยายเสียง
เพื่อทำการลบคำบรรยายออกจากเฟรมเสียง ให้ใช้เมธอดที่ ICaptionsCollection มีให้ เช่น clear, remove, หรือ removeAt. ตัวอย่างต่อไปนี้ลบแทร็กคำบรรยายทั้งหมดจากเฟรมเสียง
Presentation presentation = new Presentation("audio_with_captions.pptx");
try {
ISlide slide = presentation.getSlides().get_Item(0);
IAudioFrame audioFrame = (IAudioFrame) slide.getShapes().get_Item(0);
// ลบแทร็กคำบรรยายทั้งหมดออกจากเฟรมเสียง.
audioFrame.getCaptionTracks().clear();
presentation.save("audio_without_captions.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
สกัดเสียง
Aspose.Slides for Android ผ่าน Java ช่วยให้คุณสกัดเสียงที่ใช้ในการเปลี่ยนสไลด์โชว์ ตัวอย่างเช่น คุณสามารถสกัดเสียงที่ใช้ในสไลด์เฉพาะ
- สร้างอินสแตนซ์ของคลาส Presentation และโหลดงานนำเสนอที่มีเสียงอยู่
- รับอ้างอิงของสไลด์ที่เกี่ยวข้องผ่านดัชนีของมัน
- เข้าถึง slideshow transitions ของสไลด์
- สกัดเสียงเป็นข้อมูลไบต์
โค้ด Java นี้แสดงวิธีสกัดเสียงที่ใช้ในสไลด์:
// สร้างอินสแตนซ์ของคลาส Presentation ที่แทนไฟล์งานนำเสนอ
Presentation pres = new Presentation("AudioSlide.pptx");
try {
// เข้าถึงสไลด์ที่ต้องการ
ISlide slide = pres.getSlides().get_Item(0);
// รับเอฟเฟกต์การเปลี่ยนสไลด์โชว์สำหรับสไลด์
ISlideShowTransition transition = slide.getSlideShowTransition();
//สกัดเสียงเป็นอาเรย์ไบต์
byte[] audio = transition.getSound().getBinaryData();
System.out.println("Length: " + audio.length);
} finally {
if (pres != null) pres.dispose();
}
คำถามที่พบบ่อย
ฉันสามารถใช้ไฟล์เสียงเดียวกันซ้ำในหลายสไลด์โดยไม่ทำให้ขนาดไฟล์เพิ่มขึ้นได้หรือไม่?
ใช่. เพิ่มเสียงหนึ่งครั้งในงานนำเสนอ audio collection ที่ใช้ร่วมกันและสร้างเฟรมเสียงเพิ่มเติมที่อ้างอิงถึงแหล่งเสียงที่มีอยู่ นี้จะป้องกันการทำสำเนาข้อมูลสื่อและทำให้ขนาดของงานนำเสนออยู่ในระดับที่สามารถควบคุมได้
ฉันสามารถเปลี่ยนเสียงในเฟรมเสียงที่มีอยู่โดยไม่ต้องสร้างรูปร่างใหม่ได้หรือไม่?
ใช่. สำหรับเสียงที่เป็นลิงก์ ให้อัปเดต link path ให้ชี้ไปยังไฟล์ใหม่ สำหรับเสียงฝัง ให้สลับอ็อบเจกต์ embedded audio กับอ็อบเจกต์อื่นจาก audio collection ของงานนำเสนอ การจัดรูปแบบของเฟรมและการตั้งค่าการเล่นส่วนใหญ่ยังคงอยู่เหมือนเดิม
การตัดส่วนเปลี่ยนแปลงข้อมูลเสียงพื้นฐานที่จัดเก็บในงานนำเสนอหรือไม่?
ไม่. การตัดส่วนจะปรับเฉพาะขอบเขตการเล่นเท่านั้น ไบต์ของเสียงต้นฉบับจะไม่ถูกเปลี่ยนแปลงและยังสามารถเข้าถึงได้ผ่านเสียงฝังหรือ audio collection ของงานนำเสนอ