Administrar fotogramas de audio en presentaciones en .NET

Crear fotogramas de audio

Aspose.Slides for .NET permite agregar archivos de audio a las diapositivas. Los archivos de audio se incrustan en las diapositivas como fotogramas de audio.

  1. Crear una instancia de la clase Presentation.
  2. Obtener la referencia de una diapositiva mediante su índice.
  3. Cargar el flujo del archivo de audio que desea incrustar en la diapositiva.
  4. Agregar el fotograma de audio incrustado (que contiene el archivo de audio) a la diapositiva.
  5. Establecer PlayMode y Volume expuestos por el objeto IAudioFrame.
  6. Guardar la presentación modificada.

Este código C# muestra cómo agregar un fotograma de audio incrustado a una diapositiva:

// Instancia una clase Presentation que representa un archivo de presentación
using (Presentation pres = new Presentation())
{
    // Obtiene la primera diapositiva
    ISlide sld = pres.Slides[0];
    
    // Carga el archivo de sonido wav en un stream
    FileStream fstr = new FileStream("sampleaudio.wav", FileMode.Open, FileAccess.Read);

    // Añade el fotograma de audio
    IAudioFrame audioFrame = sld.Shapes.AddAudioFrameEmbedded(50, 150, 100, 100, fstr);

    // Establece el modo de reproducción y el volumen del audio
    audioFrame.PlayMode = AudioPlayModePreset.Auto;
    audioFrame.Volume = AudioVolumeMode.Loud;

    // Guarda el archivo PowerPoint en disco
    pres.Save("AudioFrameEmbed_out.pptx", SaveFormat.Pptx);
}

Cambiar la miniatura del fotograma de audio

Cuando agrega un archivo de audio a una presentación, el audio aparece como un fotograma con una imagen predeterminada estándar (ver la imagen en la sección siguiente). Puede cambiar la miniatura del fotograma de audio (establecer su imagen preferida).

Este código C# muestra cómo cambiar la miniatura o la imagen de vista previa de un fotograma de audio:

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

    // Añade un fotograma de audio a la diapositiva con una posición y tamaño especificados.
    var audioStream = new FileStream("sample2.mp3", FileMode.Open, FileAccess.Read);
    var audioFrame = slide.Shapes.AddAudioFrameEmbedded(150, 100, 50, 50, audioStream);
    audioStream.Dispose();

    // Añade una imagen a los recursos de la presentación.
    var imageStream = File.OpenRead("eagle.jpeg");
    var audioImage = presentation.Images.AddImage(imageStream);
    imageStream.Dispose();

    // Establece la imagen para el fotograma de audio.
    audioFrame.PictureFormat.Picture.Image = audioImage; // <-----

	//Guarda la presentación modificada en disco
    presentation.Save("example_out.pptx", SaveFormat.Pptx);
}

Cambiar opciones de reproducción de audio

Aspose.Slides for .NET permite cambiar opciones que controlan la reproducción o las propiedades de un audio. Por ejemplo, puede ajustar el volumen del audio, establecer que el audio se reproduzca en bucle o incluso ocultar el ícono de audio.

El panel Audio Options en Microsoft PowerPoint:

example1_image

Opciones de Audio de PowerPoint que corresponden a las propiedades de Aspose.Slides AudioFrame:

Opciones de Editing de PowerPoint que corresponden a las propiedades de Aspose.Slides AudioFrame:

El Volume controll de PowerPoint en el panel de control de audio corresponde a la propiedad AudioFrame.VolumeValue. Permite cambiar el volumen del audio como un porcentaje.

Así es como se cambian las opciones de reproducción de audio:

  1. Crear o obtener el fotograma de audio.
  2. Establecer nuevos valores para las propiedades del fotograma de audio que desea ajustar.
  3. Guardar el archivo de PowerPoint modificado.

Este código C# demuestra una operación en la que se ajustan las opciones de un audio:

using (Presentation pres = new Presentation("AudioFrameEmbed_out.pptx"))
{
    // Obtiene la forma AudioFrame
    AudioFrame audioFrame = (AudioFrame)pres.Slides[0].Shapes[0];

    // Establece el modo de reproducción para reproducir al hacer clic
    audioFrame.PlayMode = AudioPlayModePreset.OnClick;

    // Establece el volumen a Bajo
    audioFrame.Volume = AudioVolumeMode.Low;

    // Configura el audio para reproducirse a través de diapositivas
    audioFrame.PlayAcrossSlides = true;

    // Desactiva el bucle para el audio
    audioFrame.PlayLoopMode = false;

    // Oculta el AudioFrame durante la presentación
    audioFrame.HideAtShowing = true;

    // Rebobina el audio al inicio después de reproducir
    audioFrame.RewindAudio = true;

    // Guarda el archivo PowerPoint en disco
    pres.Save("AudioFrameEmbed_changed.pptx", SaveFormat.Pptx);
}

Este ejemplo C# muestra cómo agregar un nuevo fotograma de audio con audio incrustado, recortarlo y establecer la duración de los fundidos:

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);

    // Establece el desplazamiento de inicio del recorte a 1,5 segundos
    audioFrame.TrimFromStart = 1500f;
    // Establece el desplazamiento de fin del recorte a 2 segundos
    audioFrame.TrimFromEnd = 2000f;

    // Establece la duración del fundido de entrada a 200 ms
    audioFrame.FadeInDuration = 200f;
    // Establece la duración del fundido de salida a 500 ms
    audioFrame.FadeOutDuration = 500f;

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

El siguiente fragmento de código muestra cómo obtener un fotograma de audio con audio incrustado y establecer su volumen al 85%:

using (Presentation pres = new Presentation("AudioFrameEmbed_out.pptx"))
{
    // Obtiene la forma AudioFrame
    IAudioFrame audioFrame = (IAudioFrame)pres.Slides[0].Shapes[0];

    // Establece el volumen del audio al 85%
    audioFrame.VolumeValue = 85f;
    
    pres.Save("AudioFrameValue_out.pptx", SaveFormat.Pptx);
}

Extraer audio

Aspose.Slides for .NET permite extraer el sonido utilizado en las transiciones de la presentación. Por ejemplo, puede extraer el sonido usado en una diapositiva específica.

  1. Crear una instancia de la clase Presentation y cargar la presentación que contiene el audio.
  2. Obtener la referencia de la diapositiva correspondiente mediante su índice.
  3. Acceder a las transiciones de la presentación para la diapositiva.
  4. Extraer el sonido en datos de bytes.

Este código C# muestra cómo extraer el audio usado en una diapositiva:

string presName = "AudioSlide.pptx";

// Instancia una clase Presentation que representa un archivo de presentación
Presentation pres = new Presentation(presName);

// Accede a la diapositiva
ISlide slide = pres.Slides[0];

// Obtiene los efectos de transición de la presentación para la diapositiva
ISlideShowTransition transition = slide.SlideShowTransition;

//Extrae el sonido en un array de bytes
byte[] audio = transition.Sound.BinaryData;

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

Preguntas frecuentes

¿Puedo reutilizar el mismo recurso de audio en varias diapositivas sin inflar el tamaño del archivo?

Sí. Agregue el audio una sola vez a la audio collection compartida de la presentación y cree fotogramas de audio adicionales que hagan referencia a ese recurso existente. Esto evita duplicar los datos multimedia y mantiene el tamaño de la presentación bajo control.

¿Puedo reemplazar el sonido en un fotograma de audio existente sin recrear la forma?

Sí. Para un sonido enlazado, actualice la link path para que apunte al nuevo archivo. Para un sonido incrustado, reemplace el objeto embedded audio por otro de la audio collection de la presentación. El formato del fotograma y la mayoría de los ajustes de reproducción permanecen intactos.

¿El recorte cambia los datos de audio subyacentes almacenados en la presentación?

No. El recorte solo ajusta los límites de reproducción. Los bytes originales del audio permanecen sin modificar y accesibles a través del audio incrustado o la colección de audio de la presentación.