Hantera ljudramar i presentationer i .NET

Översikt

Den här artikeln förklarar hur man arbetar med ljudramar i Aspose.Slides. Den visar hur man lägger till inbäddat ljud i bilder, anpassar ljudramens miniatyr, konfigurerar uppspelningsalternativ såsom volym, loopning, gömning, beskärning och toningsvaraktigheter, samt extraherar ljud som används i bildspelsövergångar.

Skapa ljudramar

Aspose.Slides för .NET låter dig lägga till ljudfiler i bilder. Ljudfilerna bäddas in i bilder som ljudramar.

  1. Skapa en instans av Presentationklassen.
  2. Hämta en bilds referens via dess index.
  3. Läs in ljudfilströmmen som du vill bädda in i bilden.
  4. Lägg till den inbäddade ljudramen (som innehåller ljudfilen) till bilden.
  5. Ställ in PlayMode och Volume som exponeras av IAudioFrame-objektet.
  6. Spara den ändrade presentationen.

Den här C#-koden visar hur du lägger till en inbäddad ljudram i en bild:

// Skapar en presentationsklass som representerar en presentationsfil
using (Presentation pres = new Presentation())
{
    // Hämtar den första bilden
    ISlide sld = pres.Slides[0];
    
    // Laddar wav-ljudfilen till en ström
    FileStream fstr = new FileStream("sampleaudio.wav", FileMode.Open, FileAccess.Read);

    // Lägger till ljudramen
    IAudioFrame audioFrame = sld.Shapes.AddAudioFrameEmbedded(50, 150, 100, 100, fstr);

    // Ställer in uppspelningsläget och volymen för ljudet
    audioFrame.PlayMode = AudioPlayModePreset.Auto;
    audioFrame.Volume = AudioVolumeMode.Loud;

    // Skriver PowerPoint-filen till disk
    pres.Save("AudioFrameEmbed_out.pptx", SaveFormat.Pptx);
}

Ändra ljudramens miniatyr

När du lägger till en ljudfil i en presentation visas ljudet som en ram med en standardstandardbild (se bilden i avsnittet nedan). Du kan ändra ljudramens miniatyr (ange din föredragna bild).

Den här C#-koden visar hur du ändrar en ljudramens miniatyr eller förhandsgranskningsbild:

using (var presentation = new Presentation())
{
    var slide = presentation.Slides[0];

    // Lägger till en ljudram på bilden med en angiven position och storlek.
    var audioStream = new FileStream("sample2.mp3", FileMode.Open, FileAccess.Read);
    var audioFrame = slide.Shapes.AddAudioFrameEmbedded(150, 100, 50, 50, audioStream);
    audioStream.Dispose();

    // Lägger till en bild i presentationens resurser.
    var imageStream = File.OpenRead("eagle.jpeg");
    var audioImage = presentation.Images.AddImage(imageStream);
    imageStream.Dispose();

    // Ställer in bilden för ljudramen.
    audioFrame.PictureFormat.Picture.Image = audioImage; // <-----
    
	//Sparar den ändrade presentationen till disk
    presentation.Save("example_out.pptx", SaveFormat.Pptx);
}

Ändra ljuduppspelningsalternativ

Aspose.Slides för .NET låter dig ändra alternativ som styr ett ljuds uppspelning eller egenskaper. Till exempel kan du justera ett ljuds volym, ställa in att ljudet spelas i loop, eller till och med dölja ljudikonen.

Audio Options-fönstret i Microsoft PowerPoint:

example1_image

PowerPoint Audio Options som motsvarar Aspose.Slides AudioFrame egenskaper:

PowerPoint Editing-alternativ som motsvarar Aspose.Slides AudioFrame egenskaper:

PowerPoint Volume control på ljudkontrollpanelen motsvarar egenskapen AudioFrame.VolumeValue. Den låter dig ändra ljudvolymen i procent.

Så här ändrar du ljuduppspelningsalternativen:

  1. Skapa eller hämta ljudramen.
  2. Ställ in nya värden för de Audio Frame‑egenskaper du vill justera.
  3. Spara den ändrade PowerPoint‑filen.

Den här C#-koden demonstrerar en operation där ett ljuds alternativ justeras:

using (Presentation pres = new Presentation("AudioFrameEmbed_out.pptx"))
{
    // Hämtar AudioFrame-formen
    AudioFrame audioFrame = (AudioFrame)pres.Slides[0].Shapes[0];

    // Ställer in uppspelningsläget till att spela vid klick
    audioFrame.PlayMode = AudioPlayModePreset.OnClick;

    // Ställer in volymen till Låg
    audioFrame.Volume = AudioVolumeMode.Low;

    // Ställer in ljudet att spela över bildspel
    audioFrame.PlayAcrossSlides = true;

    // Inaktiverar loop för ljudet
    audioFrame.PlayLoopMode = false;

    // Dölj AudioFrame under bildspelet
    audioFrame.HideAtShowing = true;

    // Spolar tillbaka ljudet till start efter uppspelning
    audioFrame.RewindAudio = true;

    // Sparar PowerPoint-filen till disk
    pres.Save("AudioFrameEmbed_changed.pptx", SaveFormat.Pptx);
}

Detta C#‑exempel visar hur man lägger till en ny ljudram med inbäddat ljud, beskär den och ställer in toningsvaraktigheterna:

using (Presentation pres = new Presentation())
{
    ISlide slide = pres.Slides[0];

    byte[] audioData = File.ReadAllBytes("sampleaudio.mp3");
    IAudio audio = pres.Audios.AddAudio(audioData);
    IAudioFrame audioFrame = slide.Shapes.AddAudioFrameEmbedded(50, 50, 100, 100, audio);

    // Ställer in beskärningens startoffset till 1,5 sekunder
    audioFrame.TrimFromStart = 1500f;
    // Ställer in beskärningens slutoffset till 2 sekunder
    audioFrame.TrimFromEnd = 2000f;

    // Ställer in fade-in-varaktigheten till 200 ms
    audioFrame.FadeInDuration = 200f;
    // Ställer in fade-out-varaktigheten till 500 ms
    audioFrame.FadeOutDuration = 500f;

    pres.Save("AudioFrameTrimFade_out.pptx", SaveFormat.Pptx);
}

Följande kodexempel visar hur du hämtar en ljudram med inbäddat ljud och sätter dess volym till 85 %:

using (Presentation pres = new Presentation("AudioFrameEmbed_out.pptx"))
{
    // Hämtar en ljudram-form
    IAudioFrame audioFrame = (IAudioFrame)pres.Slides[0].Shapes[0];

    // Ställer in ljudvolymen till 85%
    audioFrame.VolumeValue = 85f;
    
    pres.Save("AudioFrameValue_out.pptx", SaveFormat.Pptx);
}

Hantera ljudundertexter

Aspose.Slides låter dig lägga till stängda undertexter till en ljudram via egenskapen CaptionTracks. Denna egenskap returnerar en ICaptionsCollection, som låter dig lägga till WebVTT‑undertextspår, iterera genom befintliga spår och ta bort dem vid behov.

Lägg till ljudundertexter

Använd egenskapen CaptionTracks för att bifoga ett eller flera undertextspår till en ljudram. I följande exempel läggs en ljudfil till en bild och sedan laddas ett nytt undertextspår från en .vtt‑fil.

using (Presentation presentation = new Presentation())
{
    byte[] audioData = File.ReadAllBytes("audio.mp3");
    IAudio audio = presentation.Audios.AddAudio(audioData);

    ISlide slide = presentation.Slides[0];
    IAudioFrame audioFrame = slide.Shapes.AddAudioFrameEmbedded(10, 10, 50, 50, audio);

    // Lägg till ett nytt undertextspår från en WebVTT-fil.
    audioFrame.CaptionTracks.Add("New track", "track.vtt");

    presentation.Save("audio_with_captions.pptx", SaveFormat.Pptx);
}

Extrahera ljudundertexter

Du kan iterera genom undertextspåren som är kopplade till en ljudram och spara dem som .vtt‑filer. Varje undertextspår exponerar sin binära data och unika identifierare, som kan användas vid export av undertexter.

using (Presentation presentation = new Presentation("audio_with_captions.pptx"))
{
    ISlide slide = presentation.Slides[0];
    foreach (IShape shape in slide.Shapes)
    {
        if (shape is IAudioFrame audioFrame)
        {
            foreach (ICaptions captionTrack in audioFrame.CaptionTracks)
            {
                // Spara undertextspåret som en .vtt-fil.
                File.WriteAllBytes($"{captionTrack.CaptionId}.vtt", captionTrack.BinaryData);
            }
        }
    }
}

Ta bort ljudundertexter

För att ta bort undertexter från en ljudram, använd metoderna som tillhandahålls av ICaptionsCollection, såsom Clear, Remove, eller RemoveAt. Följande exempel tar bort alla undertextspår från en ljudram.

using (Presentation presentation = new Presentation("audio_with_captions.pptx"))
{
    ISlide slide = presentation.Slides[0];
    IAudioFrame audioFrame = slide.Shapes[0] as IAudioFrame;

    // Ta bort alla undertextspår från ljudramen.
    audioFrame.CaptionTracks.Clear();

    presentation.Save("audio_without_captions.pptx", SaveFormat.Pptx);
}

Extrahera ljud

Aspose.Slides för .NET låter dig extrahera ljudet som används i bildspelsövergångar. Till exempel kan du extrahera ljudet som används i en specifik bild.

  1. Skapa en instans av klassen Presentation och läs in presentationen som innehåller ljudet.
  2. Hämta den aktuella bildens referens via dess index.
  3. Åtkomst till bildspelsövergångarna för bilden.
  4. Extrahera ljudet som byte‑data.

Den här C#‑koden visar hur du extraherar ljudet som används i en bild:

string presName = "AudioSlide.pptx";

// Skapar en Presentation-klass som representerar en presentationsfil
Presentation pres = new Presentation(presName);

// Åtkomst till bilden
ISlide slide = pres.Slides[0];

// Hämtar bildspelsövergångseffekterna för bilden
ISlideShowTransition transition = slide.SlideShowTransition;

//Extraherar ljudet i en byte-array
byte[] audio = transition.Sound.BinaryData;

System.Console.WriteLine("Length: " + audio.Length);

FAQ

Kan jag återanvända samma ljudresurs i flera bilder utan att öka filstorleken?

Ja. Lägg till ljudet en gång i presentationens delade audio collection och skapa ytterligare ljudramar som refererar till den befintliga resursen. Detta undviker duplicering av mediadata och håller presentationens storlek under kontroll.

Kan jag ersätta ljudet i en befintlig ljudram utan att återskapa formen?

Ja. För ett länkat ljud, uppdatera link path så att det pekar på den nya filen. För ett inbäddat ljud, byt ut objektet embedded audio mot ett annat från presentationens audio collection. Ramens formatering och de flesta uppspelningsinställningar förblir intakta.

Ändrar beskärning den underliggande ljuddata som lagras i presentationen?

Nej. Beskärning justerar bara uppspelningsgränserna. De ursprungliga ljudbytena förblir orörda och är åtkomliga via det inbäddade ljudet eller presentationens ljudsamling.