Audio in Präsentationen mit Python verwalten

Übersicht

Dieser Artikel erklärt, wie man mit Audio‑Frames in Aspose.Slides arbeitet. Er zeigt, wie man eingebettete Audiodateien zu Folien hinzufügt, das Miniaturbild des Audio‑Frames anpasst, Wiedergabeoptionen wie Lautstärke, Schleifen, Ausblenden, Trimmen und Einblendungs‑Dauern konfiguriert und Audiodaten extrahiert, die in Folien‑Show‑Übergängen verwendet werden.

Audio‑Frames erstellen

Aspose.Slides für Python via Java ermöglicht das Hinzufügen von Audiodateien zu Folien. Die Audiodateien werden als Audio‑Frames in die Folien eingebettet.

  1. Erstellen Sie eine Instanz der Klasse Presentation.
  2. Rufen Sie eine Referenz auf eine Folie anhand ihres Index ab.
  3. Laden Sie die Audiodatei, die Sie in die Folie einbetten möchten.
  4. Fügen Sie den eingebetteten Audio‑Frame (der die Audiodatei enthält) zur Folie hinzu.
  5. Verwenden Sie die von dem Objekt AudioFrame bereitgestellten Methoden setPlayMode und setVolume.
  6. Speichern Sie die geänderte Präsentation.

Dieser Python‑Code zeigt, wie Sie einen eingebetteten Audio‑Frame zu einer Folie hinzufügen:

from pathlib import Path

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import AudioPlayModePreset, AudioVolumeMode, Presentation, SaveFormat

presentation = Presentation()
try:
    slide = presentation.getSlides().get_Item(0)
    audio_data = Path("audio.wav").read_bytes()
    java_audio_data = jpype.JArray(jpype.JByte)(audio_data)
    audio = presentation.getAudios().addAudio(java_audio_data)
    audio_frame = slide.getShapes().addAudioFrameEmbedded(50, 150, 100, 100, audio)

    audio_frame.setPlayMode(AudioPlayModePreset.Auto)
    audio_frame.setVolume(AudioVolumeMode.Loud)
    presentation.save("AudioFrameEmbed_out.pptx", SaveFormat.Pptx)
finally:
    presentation.dispose()

Audio‑Frame‑Miniaturbild ändern

Wenn Sie einer Präsentation eine Audiodatei hinzufügen, erscheint das Audio als Frame mit einem standardmäßigen Standardbild (siehe das Bild im nachfolgenden Abschnitt). Sie können das Vorschau‑Bild des Audio‑Frames durch ein Bild Ihrer Wahl ersetzen.

Dieser Python‑Code zeigt, wie Sie das Miniatur‑ bzw. Vorschau‑Bild eines Audio‑Frames ändern:

from pathlib import Path

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import Images, Presentation, SaveFormat

presentation = Presentation()
try:
    slide = presentation.getSlides().get_Item(0)
    audio_data = Path("sample2.mp3").read_bytes()
    java_audio_data = jpype.JArray(jpype.JByte)(audio_data)
    audio = presentation.getAudios().addAudio(java_audio_data)
    audio_frame = slide.getShapes().addAudioFrameEmbedded(150, 100, 50, 50, audio)

    image = Images.fromFile("eagle.jpeg")
    try:
        picture = presentation.getImages().addImage(image)
    finally:
        image.dispose()

    audio_frame.getPictureFormat().getPicture().setImage(picture)
    presentation.save("example_out.pptx", SaveFormat.Pptx)
finally:
    presentation.dispose()

Audio‑Wiedergabeoptionen ändern

Aspose.Slides für Python via Java ermöglicht das Ändern von Optionen, die die Audiowiedergabe oder -eigenschaften steuern. Beispielsweise können Sie die Lautstärke anpassen, das Audio in einer Schleife wiedergeben oder das Audiosymbol sogar ausblenden.

The Audio Options pane in Microsoft PowerPoint:

example1_image

PowerPoint Audio‑Optionen, die den Aspose.Slides‑AudioFrame‑Eigenschaften entsprechen:

PowerPoint‑Bearbeitungs‑Optionen, die den Aspose.Slides‑AudioFrame‑Eigenschaften entsprechen:

Die PowerPoint‑Lautstärkeregelung im Audiosteuerungs‑Panel entspricht der Methode setVolumeValue. Sie ermöglicht das Ändern der Lautstärke als Prozentsatz.

So ändern Sie die Audio‑Wiedergabeoptionen:

  1. Create oder holen Sie den Audio‑Frame.
  2. Setzen Sie neue Werte für die Audio‑Frame‑Eigenschaften, die Sie anpassen möchten.
  3. Speichern Sie die geänderte PowerPoint‑Datei.

Dieser Python‑Code demonstriert einen Vorgang, bei dem Audio‑Optionen angepasst werden:

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import AudioFrame, AudioPlayModePreset, AudioVolumeMode, Presentation, SaveFormat

presentation = Presentation("AudioFrameEmbed_out.pptx")
try:
    audio_frame = presentation.getSlides().get_Item(0).getShapes().get_Item(0)
    if isinstance(audio_frame, AudioFrame):
        # Beim Klicken mit niedriger Lautstärke wiedergeben, über Folien hinweg, ohne Schleife.
        audio_frame.setPlayMode(AudioPlayModePreset.OnClick)
        audio_frame.setVolume(AudioVolumeMode.Low)
        audio_frame.setPlayAcrossSlides(True)
        audio_frame.setPlayLoopMode(False)
        # Den Frame während der Bildschirmanzeige ausblenden und nach der Wiedergabe zurückspulen.
        audio_frame.setHideAtShowing(True)
        audio_frame.setRewindAudio(True)
        presentation.save("AudioFrameEmbed_changed.pptx", SaveFormat.Pptx)
    else:
        print("The shape is not an audio frame.")
finally:
    presentation.dispose()

Dieses Python‑Beispiel zeigt, wie man einen neuen Audio‑Frame mit eingebettetem Audio hinzufügt, ihn trimmt und die Einblendungs‑Dauern festlegt:

from pathlib import Path

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import Presentation, SaveFormat

presentation = Presentation()
try:
    slide = presentation.getSlides().get_Item(0)
    audio_data = Path("sampleaudio.mp3").read_bytes()
    java_audio_data = jpype.JArray(jpype.JByte)(audio_data)
    audio = presentation.getAudios().addAudio(java_audio_data)
    audio_frame = slide.getShapes().addAudioFrameEmbedded(50, 50, 100, 100, audio)

    # 1,5 Sekunden vom Anfang und 2 Sekunden vom Ende trimmen.
    audio_frame.setTrimFromStart(1500.0)
    audio_frame.setTrimFromEnd(2000.0)
    # Fade‑In auf 200 ms und Fade‑Out auf 500 ms setzen.
    audio_frame.setFadeInDuration(200.0)
    audio_frame.setFadeOutDuration(500.0)
    presentation.save("AudioFrameTrimFade_out.pptx", SaveFormat.Pptx)
finally:
    presentation.dispose()

Das folgende Codebeispiel zeigt, wie man einen Audio‑Frame mit eingebettetem Audio abruft und seine Lautstärke auf 85 % setzt:

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import AudioFrame, Presentation, SaveFormat

presentation = Presentation("AudioFrameEmbed_out.pptx")
try:
    slide = presentation.getSlides().get_Item(0)
    audio_frame = slide.getShapes().get_Item(0)
    if isinstance(audio_frame, AudioFrame):
        audio_frame.setVolumeValue(85.0)
        presentation.save("AudioFrameValue_out.pptx", SaveFormat.Pptx)
    else:
        print("The shape is not an audio frame.")
finally:
    presentation.dispose()

Audio‑Untertitel verwalten

Aspose.Slides ermöglicht das Hinzufügen von geschlossenen Untertiteln zu einem Audio‑Frame über die Methode getCaptionTracks. Diese Methode gibt eine CaptionsCollection zurück, mit der Sie WebVTT‑Untertitelspuren hinzufügen, durch vorhandene Spuren iterieren und sie bei Bedarf entfernen können.

Audio‑Untertitel hinzufügen

Verwenden Sie die Methode getCaptionTracks, um einer Audiodatei ein oder mehrere Untertitel‑Spuren hinzuzufügen. Im folgenden Beispiel wird einer Folie eine Audiodatei hinzugefügt und anschließend eine neue Untertitel‑Spur aus einer .vtt‑Datei geladen.

from pathlib import Path

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import Presentation, SaveFormat

presentation = Presentation()
try:
    audio_data = Path("audio.mp3").read_bytes()
    java_audio_data = jpype.JArray(jpype.JByte)(audio_data)
    audio = presentation.getAudios().addAudio(java_audio_data)
    slide = presentation.getSlides().get_Item(0)
    audio_frame = slide.getShapes().addAudioFrameEmbedded(10, 10, 50, 50, audio)

    # Neue Untertitelspur aus einer WebVTT-Datei hinzufügen.
    audio_frame.getCaptionTracks().add("New track", "track.vtt")
    presentation.save("audio_with_captions.pptx", SaveFormat.Pptx)
finally:
    presentation.dispose()

Audio‑Untertitel extrahieren

Sie können durch die mit einem Audio‑Frame verbundenen Untertitel‑Spuren iterieren und sie als .vtt‑Dateien speichern. Jede Untertitel‑Spur gibt ihre Binärdaten und eine eindeutige Kennung frei, die beim Exportieren der Untertitel verwendet werden kann.

from pathlib import Path

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import AudioFrame, Presentation

presentation = Presentation("audio_with_captions.pptx")
try:
    slide = presentation.getSlides().get_Item(0)
    for shape in slide.getShapes():
        if isinstance(shape, AudioFrame):
            for caption_track in shape.getCaptionTracks():
                # Die Untertitelspur als .vtt-Datei speichern.
                file_path = Path(str(caption_track.getCaptionId()) + ".vtt")
                caption_data = bytes(caption_track.getBinaryData())
                file_path.write_bytes(caption_data)
finally:
    presentation.dispose()

Audio‑Untertitel entfernen

Um Untertitel aus einem Audio‑Frame zu entfernen, verwenden Sie die von CaptionsCollection bereitgestellten Methoden, wie clear, remove oder removeAt. Das folgende Beispiel entfernt alle Untertitel‑Spuren aus einem Audio‑Frame.

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import AudioFrame, Presentation, SaveFormat

presentation = Presentation("audio_with_captions.pptx")
try:
    slide = presentation.getSlides().get_Item(0)
    audio_frame = slide.getShapes().get_Item(0)
    if isinstance(audio_frame, AudioFrame):
        audio_frame.getCaptionTracks().clear()
        presentation.save("audio_without_captions.pptx", SaveFormat.Pptx)
    else:
        print("The shape is not an audio frame.")
finally:
    presentation.dispose()

Audio extrahieren

Aspose.Slides für Python via Java ermöglicht das Extrahieren des in Folien‑Show‑Übergängen verwendeten Sounds. Zum Beispiel können Sie den Sound, der in einer bestimmten Folie verwendet wird, extrahieren.

  1. Erstellen Sie eine Instanz der Klasse Presentation und laden Sie die Präsentation, die das Audio enthält.
  2. Holen Sie sich eine Referenz auf die entsprechende Folie anhand ihres Index.
  3. Greifen Sie auf die slideshow transitions der Folie zu.
  4. Extrahieren Sie den Sound als Byte‑Daten.

Dieser Python‑Code zeigt, wie Sie das in einer Folie verwendete Audio extrahieren:

import jpype
import asposeslides

if not jpype.isJVMStarted():
    jpype.startJVM()

from asposeslides.api import Presentation

presentation = Presentation("AudioSlide.pptx")
try:
    slide = presentation.getSlides().get_Item(0)
    transition = slide.getSlideShowTransition()
    sound = transition.getSound()
    if sound is not None:
        audio_data = sound.getBinaryData()
        print("Length:", len(audio_data))
    else:
        print("The slide transition has no sound.")
finally:
    presentation.dispose()

FAQ

Kann ich dieselbe Audiodatei in mehreren Folien wiederverwenden, ohne die Dateigröße zu erhöhen?

Ja. Fügen Sie das Audio einmal zur geteilten audio collection der Präsentation hinzu und erstellen Sie weitere Audio‑Frames, die auf dieses vorhandene Asset verweisen. Dadurch wird das Duplizieren von Mediendaten vermieden und die Präsentationsgröße bleibt überschaubar.

Kann ich den Sound in einem vorhandenen Audio‑Frame ersetzen, ohne die Form erneut zu erstellen?

Ja. Bei einem verknüpften Sound aktualisieren Sie den link path, sodass er auf die neue Datei zeigt. Bei einem eingebetteten Sound tauschen Sie das embedded audio-Objekt gegen ein anderes aus der audio collection der Präsentation aus. Die Formatierung des Frames und die meisten Wiedergabeeinstellungen bleiben erhalten.

Ändert das Trimmen die zugrunde liegenden Audiodaten, die in der Präsentation gespeichert sind?

Nein. Trimmen passt nur die Wiedergabebereiche an. Die originalen Audiodaten bleiben unverändert und sind über das eingebettete Audio oder die Audio‑Collection der Präsentation zugänglich.