Zarządzanie dźwiękiem w prezentacjach przy użyciu Pythona

Przegląd

Ten artykuł wyjaśnia, jak pracować z ramkami audio w Aspose.Slides. Pokazuje, jak dodać osadzone audio do slajdów, dostosować miniaturę ramki audio, skonfigurować opcje odtwarzania, takie jak głośność, pętla, ukrywanie, przycinanie i czasy zanikania, oraz wyodrębnić dźwięk używany w przejściach pokazu slajdów.

Tworzenie ramek audio

Aspose.Slides for Python via .NET umożliwia dodawanie plików audio do slajdów. Pliki audio są osadzane w slajdach jako ramki audio.

  1. Utwórz instancję klasy Presentation.
  2. Uzyskaj odniesienie do slajdu za pomocą jego indeksu.
  3. Wczytaj strumień pliku audio, który chcesz osadzić w slajdzie.
  4. Dodaj osadzoną ramkę audio (zawierającą plik audio) do slajdu.
  5. Ustaw PlayMode oraz Volume udostępniane przez obiekt IAudioFrame.
  6. Zapisz zmodyfikowaną prezentację.

Ten kod w Pythonie pokazuje, jak dodać osadzoną ramkę audio do slajdu:

import aspose.slides as slides

# Utwórz klasę prezentacji reprezentującą plik prezentacji
with slides.Presentation() as pres:
    # Pobiera pierwszy slajd
    sld = pres.slides[0]

    # Wczytuje plik wav do strumienia
    with open(path + "sampleaudio.wav", "rb") as in_file:
        # Dodaje ramkę audio
        audio_frame = sld.shapes.add_audio_frame_embedded(50, 150, 100, 100, in_file)

        # Ustawia tryb odtwarzania i głośność audio
        audio_frame.play_mode = slides.AudioPlayModePreset.AUTO
        audio_frame.volume = slides.AudioVolumeMode.LOUD

        # Zapisuje plik PowerPoint na dysku
        pres.save("AudioFrameEmbed_out.pptx", slides.export.SaveFormat.PPTX)

Zmienianie miniatury ramki audio

Gdy dodajesz plik audio do prezentacji, audio pojawia się jako ramka z domyślnym standardowym obrazem (zobacz obraz w sekcji poniżej). Możesz zmienić miniaturę ramki audio (ustawić wybrany obraz).

Ten kod w Pythonie pokazuje, jak zmienić miniaturę lub podglądowy obraz ramki audio:

import aspose.slides as slides

with slides.Presentation() as presentation:
    slide = presentation.slides[0]

    # Dodaje ramkę audio do slajdu z określonym położeniem i rozmiarem.
    with open("sample2.mp3", "rb") as audio_fs:
        audioFrame = slide.shapes.add_audio_frame_embedded(150, 100, 50, 50, audio_fs)

        # Dodaje obraz do zasobów prezentacji.
        with open("eagle.jpeg", "rb") as image_fs:
            data = image_fs.read()
        
        audioImage = presentation.images.add_image(data)

        # Ustawia obraz dla ramki audio.
        audioFrame.picture_format.picture.image = audioImage
        
        #Zapisuje zmodyfikowaną prezentację na dysku
        presentation.save("example_out.pptx", slides.export.SaveFormat.PPTX)

Zmiana opcji odtwarzania audio

Aspose.Slides for Python via .NET umożliwia zmianę opcji kontrolujących odtwarzanie lub właściwości audio. Na przykład możesz dostosować głośność audio, ustawić odtwarzanie w pętli lub nawet ukryć ikonę audio.

Panel Audio Options w Microsoft PowerPoint:

example1_image

Opcje Audio w PowerPoint, które odpowiadają właściwościom Aspose.Slides AudioFrame :

Opcje Editing w PowerPoint, które odpowiadają właściwościom Aspose.Slides AudioFrame :

Kontrolka Volume w panelu sterowania audio w PowerPoint odpowiada właściwości AudioFrame.volume_value. Umożliwia zmianę głośności audio w procentach.

Tak zmieniasz opcje odtwarzania audio:

  1. Utwórz lub uzyskaj ramkę audio.
  2. Ustaw nowe wartości właściwości ramki audio, które chcesz zmienić.
  3. Zapisz zmodyfikowany plik PowerPoint.

Ten kod w Pythonie demonstruje operację, w której zmieniane są opcje audio:

import aspose.slides as slides

with slides.Presentation("AudioFrameEmbed_out.pptx") as pres:
    # Pobiera kształt AudioFrame
    audioFrame = pres.slides[0].shapes[0]

    # Ustawia tryb odtwarzania na odtwarzanie po kliknięciu
    audioFrame.play_mode = slides.AudioPlayModePreset.ON_CLICK

    # Ustawia głośność na niski poziom
    audioFrame.volume = slides.AudioVolumeMode.LOW

    # Ustawia odtwarzanie audio na wszystkich slajdach
    audioFrame.play_across_slides = True

    # Wyłącza pętlę dla audio
    audioFrame.play_loop_mode = False

    # Ukrywa AudioFrame podczas pokazu slajdów
    audioFrame.hide_at_showing = True

    # Przewija audio do początku po odtworzeniu
    audioFrame.rewind_audio = True

    # Zapisuje plik PowerPoint na dysku
    pres.save("AudioFrameEmbed_changed.pptx", slides.export.SaveFormat.PPTX)

Ten przykład w Pythonie pokazuje, jak dodać nową ramkę audio z osadzonym dźwiękiem, przyciąć ją i ustawić czasy zanikania:

with slides.Presentation() as pres:
    slide = pres.slides[0]

    with open("sampleaudio.mp3", "rb") as audio_stream:
        audio_data = audio_stream.read()

    audio = pres.audios.add_audio(audio_data)
    audio_frame = slide.shapes.add_audio_frame_embedded(50, 50, 100, 100, audio)

    # Ustawia początkowy offset przycinania na 1,5 sekundy
    audio_frame.trim_from_start = 1500.0
    # Ustawia końcowy offset przycinania na 2 sekundy
    audio_frame.trim_from_end = 2000.0

    # Ustawia czas trwania fade-in na 200 ms
    audio_frame.fade_in_duration = 200.0
    # Ustawia czas trwania fade-out na 500 ms
    audio_frame.fade_out_duration = 500.0

    pres.save("AudioFrameTrimFade_out.pptx", slides.export.SaveFormat.PPTX)

Poniższy fragment kodu pokazuje, jak pobrać ramkę audio z osadzonym dźwiękiem i ustawić jej głośność na 85%:

with slides.Presentation("AudioFrameEmbed_out.pptx") as pres:
    # Pobiera kształt ramki audio
    audio_frame = pres.slides[0].shapes[0]

    # Ustawia głośność audio na 85%
    audio_frame.volume_value = 85.0

    pres.save("AudioFrameValue_out.pptx", slides.export.SaveFormat.PPTX)

Zarządzanie napisami audio

Aspose.Slides umożliwia dodawanie napisów zamkniętych do ramki audio za pomocą właściwości caption_tracks. Właściwość ta zwraca CaptionsCollection, co pozwala dodawać ścieżki napisów WebVTT, iterować po istniejących ścieżkach i usuwać je w razie potrzeby.

Dodaj napisy audio

Użyj właściwości caption_tracks , aby dołączyć jedną lub więcej ścieżek napisów do ramki audio. W poniższym przykładzie plik audio jest dodawany do slajdu, a następnie nowa ścieżka napisów jest wczytywana z pliku .vtt.

with slides.Presentation() as presentation:
    with open("audio.mp3", "rb") as audio_stream:
        audio = presentation.audios.add_audio(audio_stream.read())

    slide = presentation.slides[0]
    audio_frame = slide.shapes.add_audio_frame_embedded(10, 10, 50, 50, audio)

    # Dodaj nową ścieżkę napisów z pliku WebVTT.
    audio_frame.caption_tracks.add("New track", "track.vtt")

    presentation.save("audio_with_captions.pptx", slides.export.SaveFormat.PPTX)

Wyodrębnij napisy audio

Możesz iterować po ścieżkach napisów powiązanych z ramką audio i zapisywać je jako pliki .vtt. Każda ścieżka napisów udostępnia swoje dane binarne oraz unikalny identyfikator, które mogą być użyte przy eksportowaniu napisów.

with slides.Presentation("audio_with_captions.pptx") as presentation:
    slide = presentation.slides[0]
    for shape in slide.shapes:
        if isinstance(shape, slides.AudioFrame):
            audio_frame = shape
            for caption_track in audio_frame.caption_tracks:
                # Zapisz ścieżkę napisów jako plik .vtt.
                with open(f"{caption_track.caption_id}.vtt", "wb") as track_stream:
                    track_stream.write(caption_track.binary_data)

Usuń napisy audio

Aby usunąć napisy z ramki audio, użyj metod dostępnych w CaptionsCollection, takich jak clear, remove, lub remove_at. Poniższy przykład usuwa wszystkie ścieżki napisów z ramki audio.

with slides.Presentation("audio_with_captions.pptx") as presentation:
    slide = presentation.slides[0]
    audio_frame = slide.shapes[0]  # type: slides.AudioFrame

    # Usuń wszystkie ścieżki napisów z ramki audio.
    audio_frame.caption_tracks.clear()

    presentation.save("audio_without_captions.pptx", slides.export.SaveFormat.PPTX)

Wyodrębnianie audio

Aspose.Slides for Python via .NET umożliwia wyodrębnienie dźwięku używanego w przejściach pokazu slajdów. Na przykład możesz wyodrębnić dźwięk używany w konkretnym slajdzie.

  1. Utwórz instancję klasy Presentation i wczytaj prezentację zawierającą audio.
  2. Uzyskaj odniesienie do odpowiedniego slajdu za pomocą jego indeksu.
  3. Uzyskaj dostęp do przejść pokazu slajdów dla slajdu.
  4. Wyodrębnij dźwięk w postaci danych bajtowych.

Ten kod w Pythonie pokazuje, jak wyodrębnić audio używane w slajdzie:

import aspose.slides as slides

#with slides.Presentation("AudioSlide.pptx") as pres:
with slides.Presentation("AudioFrameEmbed_changed.pptx") as pres:
    # Uzyskuje dostęp do wybranego slajdu
    slide = pres.slides[0]  

    # Pobiera efekty przejścia pokazu slajdów dla slajdu
    transition = slide.slide_show_transition

    #Wyodrębnia dźwięk w tablicy bajtów
    audio = transition.sound.binary_data

    print("Length: " + str(len(audio)))

FAQ

Czy mogę ponownie używać tego samego zasobu audio na wielu slajdach bez zwiększania rozmiaru pliku?

Tak. Dodaj audio raz do współdzielonej audio collection prezentacji i utwórz dodatkowe ramki audio, które odwołują się do istniejącego zasobu. Dzięki temu unika się duplikowania danych medialnych i rozmiar prezentacji pozostaje pod kontrolą.

Czy mogę wymienić dźwięk w istniejącej ramce audio bez ponownego tworzenia kształtu?

Tak. W przypadku dźwięku powiązanego, zaktualizuj link path , aby wskazywał na nowy plik. W przypadku dźwięku osadzonego, zamień obiekt embedded audio na inny z audio collection prezentacji. Formatowanie ramki i większość ustawień odtwarzania pozostają niezmienione.

Czy przycinanie zmienia podstawowe dane audio przechowywane w prezentacji?

Nie. Przycinanie zmienia tylko granice odtwarzania. Oryginalne bajty audio pozostają niezmienione i dostępne poprzez osadzony audio lub kolekcję audio prezentacji.