Spravovat video snímky v prezentacích v .NET
Úvod
Dobře umístěné video v prezentaci může učinit vaši zprávu přesvědčivější a zvýšit úroveň zapojení publika.
PowerPoint vám umožňuje přidávat videa do snímku v prezentaci dvěma způsoby:
- Přidat nebo vložit místní video (uložené ve vašem počítači)
- Přidat online video (z webového zdroje, například YouTube).
Aby vám umožnil přidávat videa (video objekty) do prezentace, Aspose.Slides poskytuje rozhraní IVideo , rozhraní IVideoFrame a další související typy.
Vytvořit vložený snímek videa
Pokud je video soubor, který chcete přidat na svůj snímek, uložen lokálně, můžete vytvořit snímek videa a vložit video do vaší prezentace.
- Vytvořte instanci třídy Presentation .
- Získejte referenci na snímek pomocí jeho indexu.
- Přidejte objekt IVideo a předávejte cestu k video souboru, aby se video vložilo do prezentace.
- Přidejte objekt IVideoFrame a vytvořte snímek pro video.
- Uložte upravenou prezentaci.
Tento C# kód ukazuje, jak přidat lokálně uložené video do prezentace:
// Vytvoří instanci třídy Presentation
using (Presentation pres = new Presentation("pres.pptx"))
{
// Načte video
using (FileStream fileStream = new FileStream("Wildlife.mp4", FileMode.Open, FileAccess.Read))
{
IVideo video = pres.Videos.AddVideo(fileStream, LoadingStreamBehavior.KeepLocked);
// Získá první snímek a přidá video snímek
pres.Slides[0].Shapes.AddVideoFrame(10, 10, 150, 250, video);
// Uloží prezentaci na disk
pres.Save("pres-with-video.pptx", SaveFormat.Pptx);
}
}
Alternativně můžete video přidat předáním jeho cesty k souboru přímo metodě AddVideoFrame :
using (Presentation pres = new Presentation())
{
ISlide sld = pres.Slides[0];
IVideoFrame vf = sld.Shapes.AddVideoFrame(50, 150, 300, 150, "video1.avi");
}
Vytvořit snímek videa s videem z webového zdroje
Novější verze Microsoft PowerPoint podporují online videa v prezentacích. Pokud je video, které chcete použít, dostupné online (např. na YouTube), můžete jej do prezentace přidat pomocí jeho webového odkazu.
- Vytvořte instanci třídy Presentation .
- Získejte referenci na snímek pomocí jeho indexu.
- Přidejte objekt IVideo a předávejte odkaz na video.
- Nastavte miniaturu pro snímek videa.
- Uložte prezentaci.
Tento C# kód ukazuje, jak přidat video z webu na snímek v PowerPoint prezentaci:
public static void Run()
{
// Vytvoří objekt Presentation, který představuje soubor prezentace
using (Presentation pres = new Presentation())
{
AddVideoFromYouTube(pres, "Tj75Arhq5ho");
pres.Save("AddVideoFrameFromWebSource_out.pptx", SaveFormat.Pptx);
}
}
private static void AddVideoFromYouTube(Presentation pres, string videoId)
{
// Přidá VideoFrame
IVideoFrame videoFrame = pres.Slides[0].Shapes.AddVideoFrame(10, 10, 427, 240, "https://www.youtube.com/embed/" + videoId);
videoFrame.PlayMode = VideoPlayModePreset.Auto;
// Načte miniaturu
using (WebClient client = new WebClient())
{
string thumbnailUri = "http://img.youtube.com/vi/" + videoId + "/hqdefault.jpg";
videoFrame.PictureFormat.Picture.Image = pres.Images.AddImage(client.DownloadData(thumbnailUri));
}
}
Oříznout snímek videa
Aspose.Slides vám umožňuje řídit, která část videa se přehrává, nastavením hodnot trim-from-start a trim-from-end pomocí IVideoFrame.TrimFromStart a IVideoFrame.TrimFromEnd. Obě hodnoty jsou zadány v milisekundách a definují, kolik času se přeskočí od začátku a konce videa. Tato nastavení mění nastavení přehrávání videa v prezentaci; neprovádějí řezání ani jinou úpravu vložených binárních dat videa.
Nastavit nastavení ořezu
Pro vytvoření snímku videa a nastavení jeho ořezu:
- Vytvořte instanci třídy Presentation .
- Přidejte objekt IVideo do prezentace.
- Přidejte objekt IVideoFrame na snímek.
- Nastavte hodnoty trim-from-start a trim-from-end pomocí IVideoFrame.TrimFromStart a IVideoFrame.TrimFromEnd .
- Uložte upravenou prezentaci.
Následující ukázka kódu přeskočí první 2,5 sekundy a poslední sekundu vloženého videa během přehrávání:
using var presentation = new Presentation();
var videoData = File.ReadAllBytes("video.mp4");
var video = presentation.Videos.AddVideo(videoData);
var slide = presentation.Slides[0];
var videoFrame = slide.Shapes.AddVideoFrame(50, 50, 640, 360, video);
videoFrame.TrimFromStart = 2500f;
videoFrame.TrimFromEnd = 1000f;
presentation.Save("video_with_trim.pptx", SaveFormat.Pptx);
Přečíst nastavení ořezu
Pro zjištění existujících nastavení ořezu načtěte prezentaci, najděte objekt IVideoFrame mezi tvary na prvním snímku a přečtěte hodnoty pomocí IVideoFrame.TrimFromStart a IVideoFrame.TrimFromEnd .
Následující ukázka kódu najde první snímek videa na prvním snímku a vypíše jeho nastavení ořezu v milisekundách:
using var presentation = new Presentation("video_with_trim.pptx");
var slide = presentation.Slides[0];
foreach (var shape in slide.Shapes)
{
if (shape is IVideoFrame videoFrame)
{
var trimFromStart = videoFrame.TrimFromStart;
var trimFromEnd = videoFrame.TrimFromEnd;
Console.WriteLine($"Trim from start: {trimFromStart} ms");
Console.WriteLine($"Trim from end: {trimFromEnd} ms");
break;
}
}
Spravovat titulky videa
Aspose.Slides vám umožňuje spravovat uzavřené titulky pro snímky videa v PowerPoint prezentacích. Titulky jsou uloženy ve formátu WebVTT a jsou přístupné prostřednictvím vlastnosti IVideoFrame.CaptionTracks .
Přidat titulky do snímku videa
Pro přidání titulků do snímku videa:
- Vytvořte instanci třídy Presentation .
- Přidejte video do prezentace.
- Přidejte objekt IVideoFrame na snímek.
- Použijte kolekci CaptionTracks k přidání WebVTT stopy titulků.
- Uložte upravenou prezentaci.
Následující kód ukazuje, jak přidat titulky do snímku videa:
using (Presentation presentation = new Presentation())
{
byte[] videoData = File.ReadAllBytes("video.mp4");
IVideo video = presentation.Videos.AddVideo(videoData);
ISlide slide = presentation.Slides[0];
IVideoFrame videoFrame = slide.Shapes.AddVideoFrame(0, 0, 100, 100, video);
// Přidá novou stopu titulků ze souboru WebVTT.
presentation.Save("video_with_captions.pptx", SaveFormat.Pptx);
}
Rozhraní ICaptionsCollection také poskytuje přetížení, které umožňuje přidat titulky ze streamu.
Extrahovat titulky ze snímku videa
Pro extrahování titulků ze snímku videa:
- Načtěte prezentaci, která obsahuje video.
- Najděte cílový objekt IVideoFrame .
- Procházejte kolekci CaptionTracks .
- Uložte každou stopu titulků do souboru
.vtt.
Následující kód ukazuje, jak extrahovat titulky ze snímku videa:
using (Presentation presentation = new Presentation("video_with_captions.pptx"))
{
ISlide slide = presentation.Slides[0];
foreach (IShape shape in slide.Shapes)
{
if (shape is IVideoFrame videoFrame)
{
foreach (ICaptions captionTrack in videoFrame.CaptionTracks)
{
// Uloží stopu titulků do souboru WebVTT.
string filePath = $"{captionTrack.CaptionId}.vtt";
File.WriteAllBytes(filePath, captionTrack.BinaryData);
}
}
}
}
Každý objekt ICaptions vystavuje identifikátor titulků, popisek, binární data a text titulků jako řetězec UTF-8.
Odstranit titulky ze snímku videa
Pro odstranění titulků ze snímku videa:
- Načtěte prezentaci, která obsahuje video.
- Získejte cílový objekt IVideoFrame .
- Odstraňte stopy titulků z kolekce CaptionTracks .
- Uložte upravenou prezentaci.
Následující kód ukazuje, jak odstranit všechny titulky ze snímku videa:
using (Presentation presentation = new Presentation("video_with_captions.pptx"))
{
ISlide slide = presentation.Slides[0];
IVideoFrame videoFrame = slide.Shapes[0] as IVideoFrame;
// Odebere všechny titulky ze snímku videa.
videoFrame.CaptionTracks.Clear();
presentation.Save("video_without_captions.pptx", SaveFormat.Pptx);
}
Pokud potřebujete odstranit jen jednu stopu titulků, použijte metody Remove nebo RemoveAt místo Clear .
Extrahovat video ze snímku
Kromě přidávání videí do snímků Aspose.Slides umožňuje extrahovat videa vložená v prezentacích.
- Vytvořte instanci třídy Presentation pro načtení prezentace obsahující video.
- Procházejte všechny objekty ISlide .
- Procházejte všechny objekty IShape a najděte VideoFrame .
- Uložte video na disk.
Tento C# kód ukazuje, jak extrahovat video na snímku prezentace:
// Vytvoří objekt Presentation, který představuje soubor prezentace
Presentation presentation = new Presentation("Video.pptx");
// Prochází snímky
foreach (ISlide slide in presentation.Slides)
{
// Prochází tvary
foreach (IShape shape in presentation.Slides[0].Shapes)
{
// Uloží video na disk, jakmile je nalezen VideoFrame obsahující video
if (shape is VideoFrame)
{
IVideoFrame vf = shape as IVideoFrame;
String type = vf.EmbeddedVideo.ContentType;
int ss = type.LastIndexOf('/');
type = type.Remove(0, type.LastIndexOf('/') + 1);
Byte[] buffer = vf.EmbeddedVideo.BinaryData;
using (FileStream stream = new FileStream("NewVideo_out." + type, FileMode.Create, FileAccess.Write, FileShare.Read))
{
stream.Write(buffer, 0, buffer.Length);
}
}
}
}
FAQ
Které parametry přehrávání videa lze změnit pro VideoFrame?
Můžete ovládat playback mode (automatické nebo po kliknutí) a looping. Tyto možnosti jsou k dispozici prostřednictvím vlastností objektu VideoFrame .
Ovlivňuje přidání videa velikost souboru PPTX?
Ano. Když vložíte místní video, binární data jsou zahrnuta v dokumentu, takže se velikost prezentace zvětší úměrně velikosti souboru. Když přidáte online video, jsou vloženy odkaz a miniatura, takže nárůst velikosti je menší.
Mohu nahradit video v existujícím VideoFrame, aniž bych změnil jeho pozici a velikost?
Ano. Můžete vyměnit video content v rámci snímku a přitom zachovat geometrii tvaru; jedná se o běžný scénář pro aktualizaci médií v existujícím rozvržení.
Lze určit typ obsahu (MIME) vloženého videa?
Ano. Vložené video má content type , který můžete přečíst a použít, například při ukládání na disk.