Hang kezelése a prezentációkban Androidon
Áttekintés
Ez a cikk ismerteti, hogyan kell dolgozni hangkeretekkel az Aspose.Slides-ban. Bemutatja, hogyan lehet beágyazott hangot hozzáadni a diákhoz, testreszabni a hangkeret bélyegképét, konfigurálni a lejátszási beállításokat, például hangerőt, ismétlést, elrejtést, vágást és elhalványulási időtartamokat, valamint kinyerni a diavetítés-átmenetekben használt hangot.
Hangkeretek létrehozása
Az Aspose.Slides for Android via Java lehetővé teszi, hogy hangfájlokat adjunk a diákhoz. A hangfájlok beágyazott hangkeretekként kerülnek a diákba.
- Hozzon létre egy példányt a Presentation osztályból.
- Szerezze meg egy dia hivatkozását az indexe alapján.
- Töltse be a hangfájl adatfolyamát, amelyet be akar ágyazni a diába.
- Adja hozzá a beágyazott hangkeretet (amely a hangfájlt tartalmazza) a diához.
- Állítsa be a PlayMode és a
Volumeértékeket a IAudioFrame objektumon. - Mentse el a módosított prezentációt.
Ez a Java‑kód megmutatja, hogyan lehet beágyazott hangkeretet hozzáadni egy diához:
// Létrehozza a Presentation osztály példányát, amely egy prezentációs fájlt képvisel
Presentation pres = new Presentation();
try {
// Lekéri az első diát
ISlide sld = pres.getSlides().get_Item(0);
// Betölti a wav hangfájlt adatfolyamra
FileInputStream fstr = new FileInputStream(new File("audio.wav"));
// Hozzáadja a Hangkeretet
IAudioFrame audioFrame = sld.getShapes().addAudioFrameEmbedded(50, 150, 100, 100, fstr);
fstr.close();
// Beállítja a Hang lejátszási módját és hangerőjét
audioFrame.setPlayMode(AudioPlayModePreset.Auto);
audioFrame.setVolume(AudioVolumeMode.Loud);
// A PowerPoint fájlt leírja a lemezre
pres.save("AudioFrameEmbed_out.pptx", SaveFormat.Pptx);
} catch(IOException e) {
} finally {
if (pres != null) pres.dispose();
}
A hangkeret bélyegképének módosítása
Amikor hangfájlt adunk egy prezentációhoz, a hang egy alapértelmezett képpel rendelkező keretként jelenik meg (lásd az alábbi ábrát). A hangkeret előnézeti képét (a kívánt képet) módosíthatja.
Ez a Java‑kód megmutatja, hogyan lehet megváltoztatni egy hangkeret bélyegképét vagy előnézeti képét:
Presentation presentation = new Presentation();
try {
ISlide slide = presentation.getSlides().get_Item(0);
// Hozzáad egy hangkeretet a diához megadott pozícióval és mérettel.
FileInputStream audioStream = new FileInputStream("sample2.mp3");
IAudioFrame audioFrame = slide.getShapes().addAudioFrameEmbedded(150, 100, 50, 50, audioStream);
audioStream.close();
// Hozzáad egy képet a prezentáció erőforrásaihoz.
IPPImage picture;
IImage image = Images.fromFile("eagle.jpeg");
try {
picture = presentation.getImages().addImage(image);
} finally {
if (image != null) image.dispose();
}
// Beállítja a képet a hangkerethez.
audioFrame.getPictureFormat().getPicture().setImage(picture); // <-----
//Mentés a módosított prezentáció lemezre
presentation.save("example_out.pptx", SaveFormat.Pptx);
} catch(IOException e) {
} finally {
if (presentation != null) presentation.dispose();
}
Hanglejátszási beállítások módosítása
Az Aspose.Slides for Android via Java lehetővé teszi a hang lejátszását vagy tulajdonságait befolyásoló beállítások módosítását. Például beállíthatja a hangerőt, a folyamatos lejátszást, vagy elrejtheti a hang ikont.
A Hangbeállítások panel a Microsoft PowerPointben:

A PowerPoint Hangbeállítások, amelyek az Aspose.Slides AudioFrame tulajdonságainak felelnek meg:
- Start legördülő lista a AudioFrame.PlayMode tulajdonságnak megfelelő
- Volume a AudioFrame.Volume tulajdonságnak megfelelő
- Play Across Slides a AudioFrame.PlayAcrossSlides tulajdonságnak megfelelő
- Loop until Stopped a AudioFrame.PlayLoopMode tulajdonságnak megfelelő
- Hide During Show a AudioFrame.HideAtShowing tulajdonságnak megfelelő
- Rewind after Playing a AudioFrame.RewindAudio tulajdonságnak megfelelő
A PowerPoint Szerkesztés beállításai, amelyek az Aspose.Slides AudioFrame tulajdonságainak felelnek meg:
- Fade In a AudioFrame.FadeInDuration tulajdonságnak megfelelő
- Fade Out a AudioFrame.FadeOutDuration tulajdonságnak megfelelő
- Trim Audio Start Time a AudioFrame.TrimFromStart tulajdonságnak megfelelő
- Trim Audio End Time értéke megegyezik a hang teljes időtartamával mínusz a AudioFrame.TrimFromEnd tulajdonság értékével
A PowerPoint Volume controll a hangvezérlő panelen a AudioFrame.VolumeValue tulajdonságnak megfelelő. Ez lehetővé teszi a hangerő százalékos változtatását.
Így módosíthatja a hang lejátszási beállításait:
- Сreate vagy szerezze be a Hangkeretet.
- Állítson be új értékeket a módosítani kívánt Hangkeret‑tulajdonságoknál.
- Mentse el a módosított PowerPoint‑fájlt.
Ez a Java‑kód bemutat egy műveletet, amelyben a hang beállításait állítják át:
Presentation pres = new Presentation("AudioFrameEmbed_out.pptx");
try {
// Lekéri az AudioFrame alakzatot
AudioFrame audioFrame = (AudioFrame)pres.getSlides().get_Item(0).getShapes().get_Item(0);
// Beállítja a lejátszási módot kattintásra
audioFrame.setPlayMode(AudioPlayModePreset.OnClick);
// Beállítja a hangerőt alacsonyra
audioFrame.setVolume(AudioVolumeMode.Low);
// Beállítja, hogy a hang a diákon át lejátszódjon
audioFrame.setPlayAcrossSlides(true);
// Kikapcsolja a hang ismétlését
audioFrame.setPlayLoopMode(false);
// Elrejti az AudioFrame-et a diavetítés során
audioFrame.setHideAtShowing(true);
// Visszatekeri a hangot az elejére a lejátszás után
audioFrame.setRewindAudio(true);
// Mentés a PowerPoint fájl lemezre
pres.save("AudioFrameEmbed_changed.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Ez a Java‑példa megmutatja, hogyan lehet új hangkeretet hozzáadni beágyazott hanggal, vágni, és beállítani a be- és kimenet időtartamát:
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);
// Beállítja a vágás kezdőeltolását 1,5 másodpercre
audioFrame.setTrimFromStart(1500f);
// Beállítja a vágás befejező eltérését 2 másodpercre
audioFrame.setTrimFromEnd(2000f);
// Beállítja a beolvadás időtartamát 200 ms-re
audioFrame.setFadeInDuration(200f);
// Beállítja a kikapcsolás időtartamát 500 ms-re
audioFrame.setFadeOutDuration(500f);
pres.save("AudioFrameTrimFade_out.pptx", SaveFormat.Pptx);
} finally {
pres.dispose();
}
Az alábbi kódrészlet bemutatja, hogyan lehet egy beágyazott hangot tartalmazó hangkeretet lekérni, és a hangerőt 85 %‑ra állítani:
Presentation pres = new Presentation("AudioFrameEmbed_out.pptx");
try {
ISlide slide = pres.getSlides().get_Item(0);
// Lekéri a hangkeret alakzatot
IAudioFrame audioFrame = (IAudioFrame)slide.getShapes().get_Item(0);
// Beállítja a hang hangerőjét 85%-ra
audioFrame.setVolumeValue(85f);
pres.save("AudioFrameValue_out.pptx", SaveFormat.Pptx);
}
finally {
pres.dispose();
}
Hangfeliratok kezelése
Az Aspose.Slides lehetővé teszi, hogy zárt feliratokat adjunk egy hangkerethez a getCaptionTracks metóduson keresztül. Ez a metódus egy ICaptionsCollection‑t ad vissza, amely lehetővé teszi WebVTT feliratok hozzáadását, létező sávok bejárását és azok eltávolítását szükség esetén.
Hangfeliratok hozzáadása
Használja a getCaptionTracks metódust, hogy egy vagy több feliratsávot csatoljon egy hangkerethez. Az alábbi példában egy hangfájl kerül a diára, majd egy új feliratsávot tölt be egy .vtt fájlból.
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);
// Új feliratsáv hozzáadása egy WebVTT fájlból.
audioFrame.getCaptionTracks().add("New track", "track.vtt");
presentation.save("audio_with_captions.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Hangfeliratok kinyerése
Bejárhatja a hangkerethez tartozó feliratsávokat, és .vtt fájlokként mentheti őket. Minden feliratsáv bináris adatot és egyedi azonosítót biztosít, amely a feliratok exportálásához használható.
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()) {
// Mentse a feliratsávot .vtt fájlként.
FileOutputStream fos = new FileOutputStream(captionTrack.getCaptionId() + ".vtt");
fos.write(captionTrack.getBinaryData());
fos.close();
}
}
}
} catch (IOException e){
} finally {
presentation.dispose();
}
Hangfeliratok eltávolítása
A feliratok eltávolításához egy hangkeretből használja az ICaptionsCollection által biztosított módszereket, például a clear , a remove vagy a removeAt metódusokat. Az alábbi példa eltávolítja az összes feliratsávot egy hangkeretből.
Presentation presentation = new Presentation("audio_with_captions.pptx");
try {
ISlide slide = presentation.getSlides().get_Item(0);
IAudioFrame audioFrame = (IAudioFrame) slide.getShapes().get_Item(0);
// Eltávolítja az összes feliratsávot a hangkeretből.
audioFrame.getCaptionTracks().clear();
presentation.save("audio_without_captions.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Hang kinyerése
Az Aspose.Slides for Android via Java lehetővé teszi a diavetítés-átmenetekben használt hangok kinyerését. Például egy adott dián használt hangot is kinyerhet.
- Hozzon létre egy példányt a Presentation osztályból, és töltse be a hangot tartalmazó prezentációt.
- Szerezze meg a megfelelő dia hivatkozását az indexe alapján.
- Érje el a slideshow transitions objektumot a dián.
- Kinyerje a hangot bájt adatként.
Ez a Java‑kód megmutatja, hogyan lehet kinyerni egy dián használt hangot:
// Létrehozza a Presentation osztály példányát, amely egy prezentációs fájlt képvisel
Presentation pres = new Presentation("AudioSlide.pptx");
try {
// Hozzáfér a kívánt diához
ISlide slide = pres.getSlides().get_Item(0);
// Lekéri a diavetítési átmeneti effektusokat a diához
ISlideShowTransition transition = slide.getSlideShowTransition();
//Kinyeri a hangot bájt tömbként
byte[] audio = transition.getSound().getBinaryData();
System.out.println("Length: " + audio.length);
} finally {
if (pres != null) pres.dispose();
}
GYIK
Újra felhasználhatom ugyanazt a hangfájlt több dián anélkül, hogy megnövelném a fájlméretet?
Igen. Adja hozzá a hangot egyszer a prezentáció közös audio collection‑hez, majd hozzon létre további hangkereteket, amelyek erre a meglévő eszközre hivatkoznak. Így elkerülhető a média adat duplikálása, és a prezentáció mérete kontrollált marad.
Lecserélhetem a hangot egy meglévő hangkeretben anélkül, hogy újból létrehoznám az alakzatot?
Igen. Egy hivatkozott hang esetén frissítse a link path értékét az új fájlra mutatva. Egy beágyazott hang esetén cserélje ki a embedded audio objektumot a prezentáció audio collection‑ből származó másik hangra. A keret formázása és a legtöbb lejátszási beállítás megmarad.
A vágás módosítja a prezentációban tárolt alaphang adatot?
Nem. A vágás csak a lejátszási határokat állítja be. Az eredeti hangbájtok változatlanok maradnak, és elérhetők a beágyazott hang vagy a prezentáció hanggyűjteménye révén.