Správa audia v prezentacích pomocí Javy

Přehled

Tento článek vysvětluje, jak pracovat s audio rámečky v Aspose.Slides. Ukazuje, jak přidat vložený audio soubor do snímků, přizpůsobit náhled audio rámce, nakonfigurovat možnosti přehrávání jako hlasitost, smyčkování, skrytí, ořezávání a dobu prolínání a jak extrahovat audio použité v přechodech prezentace.

Vytvoření audio rámců

Aspose.Slides pro Java umožňuje přidávat audio soubory do snímků. Audio soubory jsou do snímků vloženy jako audio rámečky.

  1. Vytvořte instanci třídy Presentation.
  2. Získejte odkaz na snímek pomocí jeho indexu.
  3. Načtěte proud audio souboru, který chcete vložit do snímku.
  4. Přidejte vložený audio rámec (obsahující audio soubor) do snímku.
  5. Nastavte PlayMode a Volume, které jsou vystaveny objektem IAudioFrame.
  6. Uložte upravenou prezentaci.

Tento Java kód ukazuje, jak přidat vložený audio rámec do snímku:

// Vytvoří instanci třídy Presentation, která představuje soubor prezentace
Presentation pres = new Presentation();
try {
    // Získá první snímek
    ISlide sld = pres.getSlides().get_Item(0);

    // Načte WAV zvukový soubor do proudu
    FileInputStream fstr = new FileInputStream(new File("audio.wav"));

    // Přidá audio rámec
    IAudioFrame audioFrame = sld.getShapes().addAudioFrameEmbedded(50, 150, 100, 100, fstr);
    fstr.close();
    
    // Nastaví režim přehrávání a hlasitost audia
    audioFrame.setPlayMode(AudioPlayModePreset.Auto);
    audioFrame.setVolume(AudioVolumeMode.Loud);

    // Zapíše soubor PowerPoint na disk
    pres.save("AudioFrameEmbed_out.pptx", SaveFormat.Pptx);
} catch(IOException e) {
} finally {
    if (pres != null) pres.dispose();
}

Změna náhledu audio rámce

Když přidáte audio soubor do prezentace, audio se zobrazí jako rámec se standardním výchozím obrázkem (viz obrázek v následující sekci). Změníte náhledový obrázek audio rámce (nastavte vámi preferovaný obrázek).

Tento Java kód ukazuje, jak změnit náhled audio rámce nebo preview image:

Presentation presentation = new Presentation();
try {
    ISlide slide = presentation.getSlides().get_Item(0);

    // Přidá audio rámec na snímek se zadanou pozicí a rozměry.
    FileInputStream audioStream = new FileInputStream("sample2.mp3");
    IAudioFrame audioFrame = slide.getShapes().addAudioFrameEmbedded(150, 100, 50, 50, audioStream);
    audioStream.close();

    // Přidá obrázek do zdrojů prezentace.
    IPPImage picture;
    IImage image = Images.fromFile("eagle.jpeg");
    try {
        picture = presentation.getImages().addImage(image);
    } finally {
        if (image != null) image.dispose();
    }

    // Nastaví obrázek pro audio rámec.
    audioFrame.getPictureFormat().getPicture().setImage(picture); // <-----

    //Uloží upravenou prezentaci na disk
    presentation.save("example_out.pptx", SaveFormat.Pptx);
} catch(IOException e) {
} finally {
    if (presentation != null) presentation.dispose();
}

Změna možností přehrávání audio

Aspose.Slides pro Java umožňuje měnit možnosti, které řídí přehrávání nebo vlastnosti audio souboru. Například můžete upravit hlasitost audio, nastavit audio k přehrávání ve smyčce nebo dokonce skrýt ikonu audio.

The Audio Options pane in Microsoft PowerPoint:

example1_image

PowerPoint Audio Options that correspond to Aspose.Slides AudioFrame properties:

PowerPoint Editing options that correspond to Aspose.Slides AudioFrame properties:

Ovládací prvek Volume v panelu audio v PowerPointu odpovídá metodě AudioFrame.setVolumeValue. Umožňuje změnit hlasitost audio jako procento.

Takto změníte možnosti přehrávání audio:

  1. Vytvořit nebo získat Audio Frame.
  2. Nastavte nové hodnoty pro vlastnosti Audio Frame, které chcete upravit.
  3. Uložte upravený PowerPoint soubor.
Presentation pres = new Presentation("AudioFrameEmbed_out.pptx");
try {
    // Získá tvar AudioFrame
    AudioFrame audioFrame = (AudioFrame)pres.getSlides().get_Item(0).getShapes().get_Item(0);

    // Nastaví režim přehrávání na přehrání po kliknutí
    audioFrame.setPlayMode(AudioPlayModePreset.OnClick);

    // Nastaví hlasitost na nízkou
    audioFrame.setVolume(AudioVolumeMode.Low);

    // Nastaví audio tak, aby se přehrávalo napříč snímky
    audioFrame.setPlayAcrossSlides(true);

    // Zakáže smyčku pro audio
    audioFrame.setPlayLoopMode(false);

    // Skryje AudioFrame během předvádění
    audioFrame.setHideAtShowing(true);

    // Přetočí audio na začátek po přehrání
    audioFrame.setRewindAudio(true);

    // Uloží soubor PowerPoint na disk
    pres.save("AudioFrameEmbed_changed.pptx", SaveFormat.Pptx);
} finally {
    if (pres != null) pres.dispose();
}

Tento Java příklad ukazuje, jak přidat nový audio rámec s vloženým audio, oříznout jej a nastavit doby prolínání:

Presentation pres = new Presentation();
try {
    ISlide slide = pres.getSlides().get_Item(0);
    
    byte[] audioData = Files.readAllBytes(Paths.get("sampleaudio.mp3"));
    IAudio audio = pres.getAudios().addAudio(audioData);
    IAudioFrame audioFrame = slide.getShapes().addAudioFrameEmbedded(50, 50, 100, 100, audio);

    // Nastaví počáteční posun ořezu na 1,5 sekundy
    audioFrame.setTrimFromStart(1500f);
    // Nastaví koncový posun ořezu na 2 sekundy
    audioFrame.setTrimFromEnd(2000f);

    // Nastaví dobu trvání fade-in na 200 ms
    audioFrame.setFadeInDuration(200f);
    // Nastaví dobu trvání fade-out na 500 ms
    audioFrame.setFadeOutDuration(500f);

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

Následující ukázka kódu ukazuje, jak získat audio rámec s vloženým audio a nastavit jeho hlasitost na 85 %:

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

    // Získá tvar audio rámečku
    IAudioFrame audioFrame = (IAudioFrame)slide.getShapes().get_Item(0);

    // Nastaví hlasitost audia na 85%
    audioFrame.setVolumeValue(85f);

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

Správa titulků audio

Aspose.Slides umožňuje přidávat uzavřené titulky k audio rámci pomocí metody getCaptionTracks . Tato metoda vrací ICaptionsCollection, což umožňuje přidávat WebVTT titulkové stopy, procházet existující stopy a odstraňovat je podle potřeby.

Přidání audio titulků

Použijte metodu getCaptionTracks k připojení jedné nebo více titulkových stop k audio rámci. V následujícím příkladu je audio soubor přidán do snímku a poté je nová titulková stopa načtena ze souboru .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);

    // Přidejte novou titulkovou stopu ze souboru WebVTT.
    audioFrame.getCaptionTracks().add("New track", "track.vtt");

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

Extrahování audio titulků

Můžete procházet titulkové stopy spojené s audio rámcem a uložit je jako soubory .vtt. Každá titulková stopa poskytuje svá binární data a jedinečný identifikátor, který může být použit při exportu titulků.

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()) {
                // Uložit titulkovou stopu jako soubor .vtt.
                Path filePath = Paths.get(captionTrack.getCaptionId() + ".vtt");
                Files.write(filePath, captionTrack.getBinaryData());
            }
        }
    }
} finally {
    presentation.dispose();
}

Odstranění audio titulků

Pro odstranění titulků z audio rámce použijte metody poskytované v ICaptionsCollection, například clear, remove, nebo removeAt. Následující příklad odstraňuje všechny titulkové stopy z audio rámce.

Presentation presentation = new Presentation("audio_with_captions.pptx");
try {
    ISlide slide = presentation.getSlides().get_Item(0);
    IAudioFrame audioFrame = (IAudioFrame) slide.getShapes().get_Item(0);

    // Odstraňuje všechny titulkové stopy z audio rámce.
    audioFrame.getCaptionTracks().clear();

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

Extrahování audio

Aspose.Slides pro Java umožňuje extrahovat zvuk použité v přechodech prezentace. Například můžete extrahovat zvuk použitý v konkrétním snímku.

  1. Vytvořte instanci třídy Presentation a načtěte prezentaci obsahující audio.
  2. Získejte odkaz na příslušný snímek pomocí jeho indexu.
  3. Přistupte k slideshow transitions pro snímek.
  4. Extrahujte zvuk v podobě bajtových dat.
// Vytvoří instanci třídy Presentation, která představuje soubor prezentace
Presentation pres = new Presentation("AudioSlide.pptx");
try {
    // Přistoupí k požadovanému snímku
    ISlide slide = pres.getSlides().get_Item(0);
    
    // Získá efekty přechodu prezentace pro snímek
    ISlideShowTransition transition = slide.getSlideShowTransition();
    
    // Extrahuje zvuk do pole bajtů
    byte[] audio = transition.getSound().getBinaryData();
    System.out.println("Length: " + audio.length);
} finally {
    if (pres != null) pres.dispose();
}

FAQ

Mohu použít stejný audio soubor na více snímcích, aniž bych zvětšil velikost souboru?

Ano. Přidejte audio jednou do sdílené audio collection prezentace a vytvořte další audio rámečky, které odkazují na tuto existující položku. Tím se zabrání duplikaci mediálních dat a velikost prezentace zůstane pod kontrolou.

Mohu nahradit zvuk v existujícím audio rámečku, aniž bych znovu vytvářel tvar?

Ano. Pro propojený zvuk aktualizujte link path tak, aby ukazoval na nový soubor. Pro vložený zvuk vyměňte objekt embedded audio za jiný z audio collection prezentace. Formátování rámce a většina nastavení přehrávání zůstane beze změny.

Mění ořezávání podkladová audio data uložená v prezentaci?

Ne. Ořezávání upravuje pouze hranice přehrávání. Originální audio bajty zůstávají nedotčeny a jsou přístupné přes vložené audio nebo audio kolekci prezentace.