Я хочу добавить предварительно записанный mp3-файл к слайду презентации и воспроизводить его при отображении слайда. Это мой код, но он вообще не воспроизводит звук. Как использовать OpenXML и добавлять аудиофайлы в презентацию?
public void AddVideoToPresentation(PresentationDocument presentationDocument, string audioFilePath)
{
int PicID = 915;
PresentationPart presentationPart = presentationDocument.PresentationPart;
var slideCount = presentationPart.Presentation.SlideIdList.Count();
var videoEmbedId = string.Format("audioId{0}{1}", slideCount, PicID++);
var mediaEmbedId = string.Format("medId{0}{1}", slideCount, PicID++);
SlidePart slidepart = presentationDocument.PresentationPart.SlideParts.LastOrDefault();
MediaDataPart mediaDataPart1 = presentationDocument.CreateMediaDataPart("audio/mp3", "mp3");
System.IO.Stream mediaDataPart1Stream = File.OpenRead(audioFilePath);
mediaDataPart1.FeedData(mediaDataPart1Stream);
mediaDataPart1Stream.Close();
slidepart.AddAudioReferenceRelationship(mediaDataPart1, videoEmbedId);
slidepart.AddMediaReferenceRelationship(mediaDataPart1, mediaEmbedId);
slidepart.Slide.Save();
}
Это довольно сложно, поскольку касается временной шкалы анимации.
Обычно вы решаете эту задачу, создавая единую колоду слайдов с нужными вам функциями (например, вставленный звук, а затем на вкладке «Воспроизведение» установите его автоматическое воспроизведение). Затем вы помещаете его в Инструмент повышения производительности OpenXML SDK (доступен по адресу https://github.com/dotnet/Open-XML-SDK). Затем вы добавляете свою простую колоду и позволяете инструменту отразить ее в коде C#.
Далее вам придется прочитать и расшифровать, как воссоздать то, что вам нужно. Например:
Еще один момент, который я хотел отметить. Вы можете создать две колоды: одну с автоматической игрой, а другую без нее. Тогда вы сможете использовать обе деки с помощью кнопки «Сравнить файлы». Это поможет вам лучше найти место, где вам нужно найти часть «воспроизведение автоматически».