使用 Python 管理演示文稿中的音频

创建音频帧

Aspose.Slides for Python via .NET 允许您向幻灯片添加音频文件。音频文件以音频帧的形式嵌入到幻灯片中。

  1. 创建一个 Presentation 类的实例。
  2. 通过索引获取幻灯片的引用。
  3. 加载要嵌入到幻灯片中的音频文件流。
  4. 将嵌入的音频帧(包含音频文件)添加到幻灯片中。
  5. IAudioFrame 对象设置 PlayModeVolume
  6. 保存修改后的演示文稿。

此 Python 代码演示如何向幻灯片添加嵌入的音频帧:

import aspose.slides as slides

# 实例化表示演示文稿文件的 Presentation 类
with slides.Presentation() as pres:
    # 获取第一张幻灯片
    sld = pres.slides[0]

    # 将 wav 音频文件加载为流
    with open(path + "sampleaudio.wav", "rb") as in_file:
        # 添加音频帧
        audio_frame = sld.shapes.add_audio_frame_embedded(50, 150, 100, 100, in_file)

        # 设置音频的播放模式和音量
        audio_frame.play_mode = slides.AudioPlayModePreset.AUTO
        audio_frame.volume = slides.AudioVolumeMode.LOUD

        # 将 PowerPoint 文件写入磁盘
        pres.save("AudioFrameEmbed_out.pptx", slides.export.SaveFormat.PPTX)

更改音频帧缩略图

当您向演示文稿添加音频文件时,音频会以带有标准默认图像的帧形式出现(见下节的图像)。您可以更改音频帧的缩略图(设置您喜欢的图像)。

此 Python 代码演示如何更改音频帧的缩略图或预览图像:

import aspose.slides as slides

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

    # 在幻灯片上添加音频帧,并指定位置和尺寸。
    with open("sample2.mp3", "rb") as audio_fs:
        audioFrame = slide.shapes.add_audio_frame_embedded(150, 100, 50, 50, audio_fs)

        # 向演示文稿资源添加图像。
        with open("eagle.jpeg", "rb") as image_fs:
            data = image_fs.read()
        
        audioImage = presentation.images.add_image(data)

        # 设置音频帧的图片。
        audioFrame.picture_format.picture.image = audioImage
        
        #保存修改后的演示文稿到磁盘
        presentation.save("example_out.pptx", slides.export.SaveFormat.PPTX)

更改音频播放选项

Aspose.Slides for Python via .NET 允许您更改控制音频播放或属性的选项。例如,您可以调节音频音量、设置音频循环播放,甚至隐藏音频图标。

Microsoft PowerPoint 中的 Audio Options 窗格:

example1_image

PowerPoint 音频选项 与 Aspose.Slides AudioFrame 属性对应:

PowerPoint 编辑 选项与 Aspose.Slides AudioFrame 属性对应:

PowerPoint 音量控制 位于音频控制面板上,对应 AudioFrame.volume_value 属性。它允许您以百分比方式更改音频音量。

以下是更改音频播放选项的步骤:

  1. 创建 或获取音频帧。
  2. 为需要调整的音频帧属性设置新值。
  3. 保存修改后的 PowerPoint 文件。

此 Python 代码演示调整音频选项的操作:

import aspose.slides as slides

with slides.Presentation("AudioFrameEmbed_out.pptx") as pres:
    # 获取 AudioFrame 形状
    audioFrame = pres.slides[0].shapes[0]

    # 将播放模式设置为单击播放
    audioFrame.play_mode = slides.AudioPlayModePreset.ON_CLICK

    # 将音量设置为低
    audioFrame.volume = slides.AudioVolumeMode.LOW

    # 设置音频跨幻灯片播放
    audioFrame.play_across_slides = True

    # 禁用音频循环
    audioFrame.play_loop_mode = False

    # 在幻灯片放映期间隐藏 AudioFrame
    audioFrame.hide_at_showing = True

    # 播放后将音频倒带至开始
    audioFrame.rewind_audio = True

    # 将 PowerPoint 文件保存到磁盘
    pres.save("AudioFrameEmbed_changed.pptx", slides.export.SaveFormat.PPTX)

此 Python 示例展示如何添加带有嵌入音频的新音频帧、进行修剪并设置淡入淡出时长:

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)

    # 将修剪起始偏移设置为 1.5 秒
    # 将修剪结束偏移设置为 2 秒
    # 将淡入时长设置为 200 毫秒
    # 将淡出时长设置为 500 毫秒

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

以下代码示例展示如何检索带嵌入音频的音频帧并将其音量设置为 85%:

with slides.Presentation("AudioFrameEmbed_out.pptx") as pres:
    # 获取音频帧形状
    audio_frame = pres.slides[0].shapes[0]

    # 将音频音量设置为 85%
    audio_frame.volume_value = 85.0

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

提取音频

Aspose.Slides for Python via .NET 允许您提取幻灯片切换时使用的声音。例如,您可以提取特定幻灯片使用的声音。

  1. 创建一个 Presentation 类的实例并加载包含音频的演示文稿。
  2. 通过索引获取相关幻灯片的引用。
  3. 访问该幻灯片的幻灯片切换设置。
  4. 将声音提取为字节数据。

此 Python 代码演示如何提取幻灯片中使用的音频:

import aspose.slides as slides

# 使用 slides.Presentation("AudioSlide.pptx") 作为 pres:
with slides.Presentation("AudioFrameEmbed_changed.pptx") as pres:
    # 访问所需的幻灯片
    slide = pres.slides[0]  

    # 获取幻灯片的幻灯片放映过渡效果
    transition = slide.slide_show_transition

    # 提取字节数组中的声音
    audio = transition.sound.binary_data

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

常见问题

我可以在多个幻灯片间复用同一音频资源而不增加文件大小吗?

可以。将音频一次性添加到演示文稿的共享 audio collection 中,然后创建引用该已有资源的额外音频帧。这样可避免媒体数据重复,从而保持演示文稿体积可控。

我可以在不重新创建形状的情况下替换现有音频帧中的声音吗?

可以。对于链接的声音,更新 link path 以指向新文件。对于嵌入的声音,交换 embedded audio 对象为演示文稿的另一项 audio collection 中的音频。帧的格式和大多数播放设置保持不变。

修剪会改变演示文稿中存储的底层音频数据吗?

不会。修剪仅调整播放边界。原始音频字节保持不变,可通过嵌入的音频或演示文稿的音频集合继续访问。