จัดการเสียงในงานนำเสนอด้วย JavaScript

ภาพรวม

บทความนี้อธิบายวิธีการทำงานกับเฟรมเสียงใน Aspose.Slides ซึ่งแสดงวิธีการเพิ่มไฟล์เสียงฝังลงในสไลด์ ปรับแต่งภาพย่อของเฟรมเสียง ตั้งค่าตัวเลือกการเล่น เช่น ระดับเสียง การวนซ้ำ การซ่อน การตัด และระยะเวลาการจาง และสกัดเสียงที่ใช้ในการเปลี่ยนสไลด์โชว์

สร้างเฟรมเสียง

Aspose.Slides for Node.js via Java ทำให้คุณสามารถเพิ่มไฟล์เสียงลงในสไลด์ได้ ไฟล์เสียงจะถูกฝังในสไลด์เป็นเฟรมเสียง

  1. สร้างอินสแตนซ์ของคลาส Presentation
  2. รับอ้างอิงของสไลด์ผ่านดัชนีของมัน
  3. โหลดสตรีมไฟล์เสียงที่คุณต้องการฝังในสไลด์
  4. เพิ่มเฟรมเสียงฝัง (ซึ่งมีไฟล์เสียง) ลงในสไลด์
  5. ตั้งค่า PlayMode และ Volume ที่เผยโดยอ็อบเจกต์ AudioFrame
  6. บันทึกการนำเสนอที่แก้ไขแล้ว

โค้ด JavaScript นี้แสดงวิธีการเพิ่มเฟรมเสียงฝังลงในสไลด์:

// สร้างอินสแตนซ์ของคลาส Presentation ที่แทนไฟล์งานนำเสนอ
const pres = new aspose.slides.Presentation();
try {
    // ดึงสไลด์แรก
    const sld = pres.getSlides().get_Item(0);
    // โหลดไฟล์เสียง wav ไปยังสตรีม
    const fstr = java.newInstanceSync("java.io.FileInputStream", java.newInstanceSync("java.io.File", "audio.wav"));
    // เพิ่มเฟรมเสียง
    const audioFrame = sld.getShapes().addAudioFrameEmbedded(50, 150, 100, 100, fstr);
    fstr.close();
    // ตั้งค่าโหมดการเล่นและระดับเสียงของเสียง
    audioFrame.setPlayMode(aspose.slides.AudioPlayModePreset.Auto);
    audioFrame.setVolume(aspose.slides.AudioVolumeMode.Loud);
    // บันทึกไฟล์ PowerPoint ลงดิสก์
    pres.save("AudioFrameEmbed_out.pptx", aspose.slides.SaveFormat.Pptx);
} catch (e) {console.log(e);
} finally {
    if (pres != null) {
        pres.dispose();
    }
}

เปลี่ยนภาพย่อของเฟรมเสียง

เมื่อคุณเพิ่มไฟล์เสียงเข้าไปในงานนำเสนอ เสียงจะปรากฏเป็นเฟรมพร้อมภาพเริ่มต้นมาตรฐาน (ดูภาพในส่วนด้านล่าง) คุณสามารถเปลี่ยนภาพตัวอย่างของเฟรมเสียง (ตั้งค่าภาพที่คุณต้องการ)

โค้ด JavaScript นี้แสดงวิธีการเปลี่ยนภาพย่อหรือภาพตัวอย่างของเฟรมเสียง:

const presentation = new aspose.slides.Presentation();
try {
    const slide = presentation.getSlides().get_Item(0);
    // เพิ่มเฟรมเสียงลงในสไลด์โดยระบุตำแหน่งและขนาดที่กำหนด.
    const audioStream = java.newInstanceSync("java.io.FileInputStream", "sample2.mp3");
    const audioFrame = slide.getShapes().addAudioFrameEmbedded(150, 100, 50, 50, audioStream);
    audioStream.close();
    // เพิ่มรูปภาพลงในทรัพยากรของงานนำเสนอ.
    let picture;
    const image = aspose.slides.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", aspose.slides.SaveFormat.Pptx);
} catch (e) {console.log(e);
} finally {
    if (presentation != null) {
        presentation.dispose();
    }
}

เปลี่ยนตัวเลือกการเล่นเสียง

Aspose.Slides for Node.js via Java ทำให้คุณสามารถเปลี่ยนตัวเลือกที่ควบคุมการเล่นหรือคุณสมบัติเสียงได้ ตัวอย่างเช่น คุณสามารถปรับระดับเสียงของเสียง ตั้งค่าให้เสียงเล่นวนลูป หรือแม้กระทั่งซ่อนไอคอนเสียง

The Audio Options pane in Microsoft PowerPoint:

example1_image

PowerPoint Audio Options ที่สอดคล้องกับคุณสมบัติของ Aspose.Slides AudioFrame properties:

ตัวเลือก Editing ของ PowerPoint ที่สอดคล้องกับคุณสมบัติของ Aspose.Slides AudioFrame properties:

ส่วนควบคุม Volume ของ PowerPoint บนแผงควบคุมเสียงสอดคล้องกับเมธอด AudioFrame.setVolumeValue ซึ่งช่วยให้คุณเปลี่ยนระดับเสียงเป็นเปอร์เซ็นต์

วิธีการเปลี่ยนตัวเลือกการเล่นเสียง:

  1. สร้าง หรือรับ Audio Frame.
  2. ตั้งค่ามาตรฐานใหม่สำหรับคุณสมบัติของ Audio Frame ที่คุณต้องการปรับ
  3. บันทึกไฟล์ PowerPoint ที่แก้ไขแล้ว

โค้ด JavaScript นี้สาธิตการดำเนินการที่ปรับตัวเลือกของเสียง:

const pres = new aspose.slides.Presentation("AudioFrameEmbed_out.pptx");
try {
    // ดึงรูปร่าง AudioFrame
    const audioFrame = pres.getSlides().get_Item(0).getShapes().get_Item(0);
    // ตั้งค่าโหมดการเล่นให้เล่นเมื่อคลิก
    audioFrame.setPlayMode(aspose.slides.AudioPlayModePreset.OnClick);
    // ตั้งค่าระดับเสียงเป็นต่ำ
    audioFrame.setVolume(aspose.slides.AudioVolumeMode.Low);
    // ตั้งค่าให้เสียงเล่นต่อเนื่องระหว่างสไลด์
    audioFrame.setPlayAcrossSlides(true);
    // ปิดการวนลูปสำหรับเสียง
    audioFrame.setPlayLoopMode(false);
    // ซ่อน AudioFrame ระหว่างการแสดงสไลด์
    audioFrame.setHideAtShowing(true);
    // ถอยกลับเสียงไปที่จุดเริ่มต้นหลังการเล่น
    audioFrame.setRewindAudio(true);
    // บันทึกไฟล์ PowerPoint ลงดิสก์
    pres.save("AudioFrameEmbed_changed.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    if (pres != null) {
        pres.dispose();
    }
}

ตัวอย่าง JavaScript นี้แสดงวิธีการเพิ่มเฟรมเสียงใหม่พร้อมเสียงฝัง, ตัดส่วนเริ่มและสิ้นสุด, และตั้งค่าระยะเวลาจาง:

const pres = new aspose.slides.Presentation();
try {
    const slide = pres.getSlides().get_Item(0);
    
    const audioData = java.newArray("byte", Array.from(fs.readFileSync("sampleaudio.mp3")));
    const audio = pres.getAudios().addAudio(audioData);
    const audioFrame = slide.getShapes().addAudioFrameEmbedded(50, 50, 100, 100, audio);

    // ตั้งค่าออฟเซ็ตการตัดเริ่มต้นเป็น 1.5 วินาที
    audioFrame.setTrimFromStart(1500);
    // ตั้งค่าออฟเซ็ตการตัดสิ้นสุดเป็น 2 วินาที
    audioFrame.setTrimFromEnd(2000);

    // ตั้งค่าเวลาจางเข้าเป็น 200 มิลลิวินาที
    audioFrame.setFadeInDuration(200);
    // ตั้งค่าเวลาจางออกเป็น 500 มิลลิวินาที
    audioFrame.setFadeOutDuration(500);

    pres.save("AudioFrameTrimFade_out.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    pres.dispose();
}

ตัวอย่างโค้ดต่อไปนี้แสดงวิธีการดึง Audio Frame ที่มีเสียงฝังและตั้งค่าระดับเสียงเป็น 85%:

const pres = new aspose.slides.Presentation("AudioFrameEmbed_out.pptx");
try {
    const slide = pres.getSlides().get_Item(0);

    // ดึงรูปร่าง AudioFrame
    const audioFrame = slide.getShapes().get_Item(0);

    // ตั้งค่าระดับเสียงเป็น 85%
    audioFrame.setVolumeValue(85.0);

    pres.save("AudioFrameValue_out.pptx", aspose.slides.SaveFormat.Pptx);
}
finally {
    pres.dispose();
}

จัดการคำบรรยายเสียง

Aspose.Slides ให้คุณเพิ่มคำบรรยายปิดให้กับ Audio Frame ผ่านเมธอด getCaptionTracks เมธอดนี้คืนค่า CaptionsCollection ซึ่งทำให้คุณสามารถเพิ่มแทร็กคำบรรยาย WebVTT, วนซ้ำผ่านแทร็กที่มีอยู่, และลบออกเมื่อจำเป็น

เพิ่มคำบรรยายเสียง

ใช้เมธอด getCaptionTracks เพื่อแนบแทร็กคำบรรยายหนึ่งหรือหลายแทร็กให้กับ Audio Frame ตัวอย่างต่อไปนี้เพิ่มไฟล์เสียงลงในสไลด์ แล้วโหลดแทร็กคำบรรยายใหม่จากไฟล์ .vtt.

let presentation = new aspose.slides.Presentation();
try {
    let audioStream = java.newInstanceSync("java.io.FileInputStream", "audio.mp3");
    let audio = presentation.getAudios().addAudio(audioStream);
    audioStream.close();

    let slide = presentation.getSlides().get_Item(0);
    let audioFrame = slide.getShapes().addAudioFrameEmbedded(10, 10, 50, 50, audio);

    // เพิ่มแทร็กคำบรรยายใหม่จากไฟล์ WebVTT.
    audioFrame.getCaptionTracks().add("New track", "track.vtt");

    presentation.save("audio_with_captions.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

สกัดคำบรรยายเสียง

คุณสามารถวนซ้ำผ่านแทร็กคำบรรยายที่เชื่อมกับ Audio Frame และบันทึกเป็นไฟล์ .vtt แต่ละแทร็กคำบรรยายเปิดเผยข้อมูลไบนารีและรหัสประจำตัวที่เป็นเอกลักษณ์ ซึ่งสามารถใช้เมื่อนำคำบรรยายออก

let presentation = new aspose.slides.Presentation("audio_with_captions.pptx");
try {
    let slide = presentation.getSlides().get_Item(0);
    let shapeCount = slide.getShapes().size();
    for (let shapeIndex = 0; shapeIndex < shapeCount; shapeIndex++) {
        let shape = slide.getShapes().get_Item(shapeIndex);
        if (java.instanceOf(shape, "com.aspose.slides.AudioFrame")) {
            let audioFrame = shape;
            let trackCount = audioFrame.getCaptionTracks().getCount();
            for (let trackIndex = 0; trackIndex < trackCount; trackIndex++) {
                let captionTrack = audioFrame.getCaptionTracks().get_Item(trackIndex);
                // บันทึกแทร็กคำบรรยายเป็นไฟล์ .vtt.
                let filePath = captionTrack.getCaptionId() + ".vtt";
                let captionData = Buffer.from(captionTrack.getBinaryData());
                fs.writeFileSync(filePath, captionData);
            }
        }
    }
} finally {
    presentation.dispose();
}

ลบคำบรรยายเสียง

เพื่อทำการลบคำบรรยายจาก Audio Frame ให้ใช้เมธอดที่ CaptionsCollection มีให้ เช่น clear, remove, หรือ removeAt. ตัวอย่างต่อไปนี้ลบทุกแทร็กคำบรรยายจาก Audio Frame.

let presentation = new aspose.slides.Presentation("audio_with_captions.pptx");
try {
    let slide = presentation.getSlides().get_Item(0);
    let audioFrame = slide.getShapes().get_Item(0); // ประเภท: aspose.slides.AudioFrame

    // ลบแทร็กคำบรรยายทั้งหมดจากเฟรมเสียง.
    audioFrame.getCaptionTracks().clear();

    presentation.save("audio_without_captions.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

สกัดเสียง

Aspose.Slides for Node.js via Java ทำให้คุณสามารถสกัดเสียงที่ใช้ในการเปลี่ยนสไลด์โชว์ ตัวอย่างเช่น คุณสามารถสกัดเสียงที่ใช้ในสไลด์เฉพาะ

  1. สร้างอินสแตนซ์ของคลาส Presentation และโหลดงานนำเสนอที่มีเสียง
  2. รับอ้างอิงของสไลด์ที่ต้องการผ่านดัชนีของมัน
  3. เข้าถึง slideshow transitions ของสไลด์
  4. สกัดเสียงเป็นข้อมูลไบต์

โค้ด JavaScript นี้แสดงวิธีสกัดเสียงที่ใช้ในสไลด์:

// สร้างอินสแตนซ์ของคลาส Presentation ที่แทนไฟล์งานนำเสนอ
const pres = new aspose.slides.Presentation("AudioSlide.pptx");
try {
    // เข้าถึงสไลด์ที่ต้องการ
    const slide = pres.getSlides().get_Item(0);
    // ดึงเอฟเฟกต์การเปลี่ยนสไลด์โชว์สำหรับสไลด์
    const transition = slide.getSlideShowTransition();
    // สกัดเสียงเป็นอาเรย์ไบต์
    const audio = transition.getSound().getBinaryData();
    console.log("Length: " + audio.length);
} finally {
    if (pres != null) {
        pres.dispose();
    }
}

FAQ

ฉันสามารถใช้ไฟล์เสียงเดียวกันซ้ำในหลายสไลด์โดยไม่ทำให้ไฟล์ขนาดใหญ่ขึ้นได้หรือไม่?

ได้. เพิ่มเสียงหนึ่งครั้งใน audio collection ที่ใช้ร่วมของงานนำเสนอและสร้าง Audio Frame เพิ่มเติมที่อ้างอิงสินทรัพย์ที่มีอยู่ วิธีนี้ช่วยหลีกเลี่ยงการทำซ้ำข้อมูลสื่อและทำให้ขนาดงานนำเสนออยู่ภายใต้การควบคุม

ฉันสามารถแทนที่เสียงใน Audio Frame ที่มีอยู่โดยไม่ต้องสร้างรูปร่างใหม่ได้หรือไม่?

ได้. สำหรับเสียงที่เป็นลิงก์ ให้อัปเดต link path ให้ชี้ไปยังไฟล์ใหม่ สำหรับเสียงฝัง ให้สลับอ็อบเจกต์ embedded audio ด้วยออบเจกต์อื่นจาก audio collection ของงานนำเสนอ การฟอร์แมตของเฟรมและการตั้งค่าการเล่นส่วนใหญ่จะคงเดิม

การตัดส่วนทำให้ข้อมูลเสียงพื้นฐานที่เก็บไว้ในงานนำเสนอเปลี่ยนหรือไม่?

ไม่. การตัดส่วนปรับเฉพาะขอบเขตการเล่นเท่านั้น ไบต์เสียงต้นฉบับยังคงไม่ถูกแก้ไขและสามารถเข้าถึงได้ผ่านเสียงฝังหรือ audio collection ของงานนำเสนอ