.NET のプレゼンテーションでオーディオ フレームを管理する

オーディオ フレームの作成

Aspose.Slides for .NET は、スライドにオーディオ ファイルを追加できるようにします。オーディオ ファイルは、スライドにオーディオ フレームとして埋め込まれます。

  1. Presentation クラスのインスタンスを作成します。
  2. インデックスを使ってスライドの参照を取得します。
  3. スライドに埋め込むオーディオ ファイル ストリームをロードします。
  4. 埋め込まれたオーディオ フレーム(オーディオ ファイルを含む)をスライドに追加します。
  5. PlayModeIAudioFrame オブジェクトが公開する Volume を設定します。
  6. 変更されたプレゼンテーションを保存します。

この C# コードは、スライドに埋め込みオーディオ フレームを追加する方法を示しています。

// プレゼンテーション ファイルを表す Presentation クラスのインスタンスを生成します
using (Presentation pres = new Presentation())
{
    // 最初のスライドを取得します
    ISlide sld = pres.Slides[0];
    
    // wav サウンド ファイルをストリームに読み込みます
    FileStream fstr = new FileStream("sampleaudio.wav", FileMode.Open, FileAccess.Read);

    // オーディオ フレームを追加します
    IAudioFrame audioFrame = sld.Shapes.AddAudioFrameEmbedded(50, 150, 100, 100, fstr);

    // オーディオの再生モードと音量を設定します
    audioFrame.PlayMode = AudioPlayModePreset.Auto;
    audioFrame.Volume = AudioVolumeMode.Loud;

    // PowerPoint ファイルをディスクに書き込みます
    pres.Save("AudioFrameEmbed_out.pptx", SaveFormat.Pptx);
}

オーディオ フレーム サムネイルの変更

プレゼンテーションにオーディオ ファイルを追加すると、オーディオは標準のデフォルト画像が付いたフレームとして表示されます(以下のセクションの画像を参照)。オーディオ フレームのサムネイル(好みの画像)を変更できます。

この C# コードは、オーディオ フレームのサムネイルまたはプレビュー画像を変更する方法を示しています。

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

    // スライドにオーディオ フレームを指定された位置とサイズで追加します。
    var audioStream = new FileStream("sample2.mp3", FileMode.Open, FileAccess.Read);
    var audioFrame = slide.Shapes.AddAudioFrameEmbedded(150, 100, 50, 50, audioStream);
    audioStream.Dispose();

    // プレゼンテーションのリソースに画像を追加します。
    var imageStream = File.OpenRead("eagle.jpeg");
    var audioImage = presentation.Images.AddImage(imageStream);
    imageStream.Dispose();

    // Sets the image for the audio frame.
    audioFrame.PictureFormat.Picture.Image = audioImage; // <-----
    
    //修正されたプレゼンテーションをディスクに保存します
    presentation.Save("example_out.pptx", SaveFormat.Pptx);
}

オーディオ 再生オプションの変更

Aspose.Slides for .NET は、オーディオの再生やプロパティを制御するオプションを変更できるようにします。たとえば、音量を調整したり、ループ再生に設定したり、アイコンを非表示にしたりできます。

The Audio Options pane in Microsoft PowerPoint:

例1_画像

PowerPoint Audio Options that correspond to Aspose.Slides AudioFrame properties:

PowerPoint Editing options that correspond to Aspose.Slides AudioFrame properties:

The PowerPoint Volume controll on the audio control panel corresponds to the AudioFrame.VolumeValue property. It lets you change the audio volume as a percentage.

This is how you change the Audio Play options:

  1. 作成 または Audio Frame を取得します。
  2. 調整したい Audio Frame プロパティに新しい値を設定します。
  3. 変更された PowerPoint ファイルを保存します。

This C# code demonstrates an operation in which an audio’s options are adjusted:

using (Presentation pres = new Presentation("AudioFrameEmbed_out.pptx"))
{
    // AudioFrame シェイプを取得します
    AudioFrame audioFrame = (AudioFrame)pres.Slides[0].Shapes[0];

    // クリック時に再生するように再生モードを設定します
    audioFrame.PlayMode = AudioPlayModePreset.OnClick;

    // 音量を Low に設定します
    audioFrame.Volume = AudioVolumeMode.Low;

    // オーディオをスライド全体で再生するように設定します
    audioFrame.PlayAcrossSlides = true;

    // オーディオのループを無効にします
    audioFrame.PlayLoopMode = false;

    // スライドショー中に AudioFrame を非表示にします
    audioFrame.HideAtShowing = true;

    // 再生後にオーディオを先頭に巻き戻します
    audioFrame.RewindAudio = true;

    // PowerPoint ファイルをディスクに保存します
    pres.Save("AudioFrameEmbed_changed.pptx", SaveFormat.Pptx);
}

This C# example shows how to add a new audio frame with embedded audio, trim it, and set the fade durations:

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

    // トリミング開始オフセットを 1.5 秒に設定します
    audioFrame.TrimFromStart = 1500f;
    // トリミング終了オフセットを 2 秒に設定します
    audioFrame.TrimFromEnd = 2000f;

    // フェードイン時間を 200 ミリ秒に設定します
    audioFrame.FadeInDuration = 200f;
    // フェードアウト時間を 500 ミリ秒に設定します
    audioFrame.FadeOutDuration = 500f;

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

The following code sample shows how to retrieve an audio frame with embedded audio and set its volume to 85%:

using (Presentation pres = new Presentation("AudioFrameEmbed_out.pptx"))
{
    // オーディオ フレーム シェイプを取得します
    IAudioFrame audioFrame = (IAudioFrame)pres.Slides[0].Shapes[0];

    // オーディオの音量を 85% に設定します
    audioFrame.VolumeValue = 85f;
    
    pres.Save("AudioFrameValue_out.pptx", SaveFormat.Pptx);
}

オーディオ キャプションの管理

Aspose.Slides は、CaptionTracks プロパティを使用してオーディオ フレームにクローズド キャプションを追加できるようにします。このプロパティは ICaptionsCollection を返し、WebVTT キャプション トラックの追加、既存トラックの列挙、必要に応じた削除が可能です。

オーディオ キャプションの追加

CaptionTracks プロパティを使用して、1 つ以上のキャプション トラックをオーディオ フレームに添付します。以下の例では、スライドにオーディオ ファイルを追加し、.vtt ファイルから新しいキャプション トラックをロードします。

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

    // WebVTT ファイルから新しいキャプショントラックを追加します。
    audioFrame.CaptionTracks.Add("New track", "track.vtt");

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

オーディオ キャプションの抽出

オーディオ フレームに関連付けられたキャプション トラックを列挙し、.vtt ファイルとして保存できます。各キャプション トラックはバイナリ データと一意の識別子を公開しており、エクスポート時に使用できます。

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)
            {
                // キャプショントラックを .vtt ファイルとして保存します。
                File.WriteAllBytes($"{captionTrack.CaptionId}.vtt", captionTrack.BinaryData);
            }
        }
    }
}

オーディオ キャプションの削除

ICaptionsCollection が提供するメソッド(ClearRemoveRemoveAt など)を使用してキャプションを削除します。以下の例は、オーディオ フレームからすべてのキャプション トラックを削除します。

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

    // オーディオ フレームからすべてのキャプショントラックを削除します。
    audioFrame.CaptionTracks.Clear();

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

オーディオの抽出

Aspose.Slides for .NET は、スライドショーの遷移で使用されるサウンドを抽出できるようにします。たとえば、特定のスライドで使用されているサウンドを抽出できます。

  1. オーディオを含むプレゼンテーションを読み込み、Presentation クラスのインスタンスを作成します。
  2. インデックスを使って対象スライドの参照を取得します。
  3. スライドのスライドショー遷移にアクセスします。
  4. サウンドをバイト データとして抽出します。

この C# コードは、スライドで使用されているオーディオを抽出する方法を示しています。

string presName = "AudioSlide.pptx";

// プレゼンテーション ファイルを表す Presentation クラスのインスタンスを生成します
Presentation pres = new Presentation(presName);

// スライドにアクセスします
ISlide slide = pres.Slides[0];

// スライドのスライドショー遷移効果を取得します
ISlideShowTransition transition = slide.SlideShowTransition;

//Extracts the sound in byte array
byte[] audio = transition.Sound.BinaryData;

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

FAQ

同じオーディオ アセットを複数のスライドで再利用して、ファイル サイズが増大しないようにできますか?

はい。プレゼンテーションの共有 audio collection にオーディオを一度だけ追加し、その既存アセットを参照する追加のオーディオ フレームを作成します。これによりメディア データの重複が防止され、プレゼンテーション サイズが抑制されます。

既存のオーディオ フレームのサウンドを、シェイプを再作成せずに置き換えることはできますか?

はい。リンクされたサウンドの場合は、link path を新しいファイルに更新します。埋め込みサウンドの場合は、embedded audio オブジェクトをプレゼンテーションの audio collection にある別のオーディオに置き換えます。フレームの書式設定やほとんどの再生設定はそのまま保持されます。

トリミングは、プレゼンテーションに保存されている基礎となるオーディオ データを変更しますか?

いいえ。トリミングは再生境界のみを調整します。元のオーディオ バイトは変更されず、埋め込みオーディオまたはプレゼンテーションのオーディオ コレクションを通じて引き続きアクセス可能です。