Marco de Video
Un video bien colocado en una presentación puede hacer que tu mensaje sea más convincente y aumentar los niveles de participación de tu audiencia.
PowerPoint te permite agregar videos a una diapositiva en una presentación de dos maneras:
- Agregar o incrustar un video local (almacenado en tu máquina)
- Agregar un video en línea (de una fuente web como YouTube).
Para permitir que agregues videos (objetos de video) a una presentación, Aspose.Slides proporciona la interfaz IVideo, la interfaz IVideoFrame y otros tipos relevantes.
Crear Marco de Video incrustado
Si el archivo de video que deseas agregar a tu diapositiva está almacenado localmente, puedes crear un marco de video para incrustar el video en tu presentación.
- Crea una instancia de la clase Presentation .
- Obtén la referencia de una diapositiva a través de su índice.
- Agrega un objeto IVideo y pasa la ruta del archivo de video para incrustar el video con la presentación.
- Agrega un objeto IVideoFrame para crear un marco para el video.
- Guarda la presentación modificada.
Este código C++ te muestra cómo agregar un video almacenado localmente a una presentación:
System::SharedPtr<Presentation> pres = System::MakeObject<Presentation>(u"pres.pptx");
// Carga el video
System::SharedPtr<System::IO::FileStream> fileStream = System::MakeObject<System::IO::FileStream>(u"Wildlife.mp4", System::IO::FileMode::Open, System::IO::FileAccess::Read);
System::SharedPtr<IVideo> video = pres->get_Videos()->AddVideo(fileStream, LoadingStreamBehavior::KeepLocked);
// Obtiene la primera diapositiva y agrega un videoframe
pres->get_Slide(0)->get_Shapes()->AddVideoFrame(10.0f, 10.0f, 150.0f, 250.0f, video);
// Guarda la presentación en el disco
pres->Save(u"pres-with-video.pptx", SaveFormat::Pptx);
Alternativamente, puedes agregar un video pasando su ruta de archivo directamente al método AddVideoFrame() :
System::SharedPtr<Presentation> pres = System::MakeObject<Presentation>();
System::SharedPtr<ISlide> sld = pres->get_Slide(0);
System::SharedPtr<IVideoFrame> vf = sld->get_Shapes()->AddVideoFrame(50.0f, 150.0f, 300.0f, 150.0f, u"video1.avi");
Crear Marco de Video con Video de Fuente Web
Microsoft PowerPoint 2013 y versiones posteriores admite videos de YouTube en presentaciones. Si el video que deseas usar está disponible en línea (por ejemplo, en YouTube), puedes agregarlo a tu presentación a través de su enlace web.
- Crea una instancia de la clase Presentation .
- Obtén la referencia de una diapositiva a través de su índice.
- Agrega un objeto IVideo y pasa el enlace al video.
- Establece una miniatura para el marco de video.
- Guarda la presentación.
Este código C++ te muestra cómo agregar un video de la web a una diapositiva en una presentación de PowerPoint:
// La ruta al directorio de documentos.
const String outPath = u"../out/AddVideoFrameFromWebSource_out.pptx";
const String filePath = u"../templates/video1.avi";
// Instancia un objeto Presentation que representa un archivo de presentación
SharedPtr<Presentation> pres = MakeObject<Presentation>();
// Accede a la primera diapositiva
SharedPtr<ISlide> slide = pres->get_Slides()->idx_get(0);
// Agrega un Marco de Video
System::SharedPtr<IVideoFrame> vf = slide->get_Shapes()->AddVideoFrame(10, 10, 427, 240,u"https://www.youtube.com/embed/Tj75Arhq5ho");
// Establece el Modo de Reproducción y el Volumen del Video
vf->set_PlayMode(VideoPlayModePreset::Auto);
// Guarda la presentación en el disco
pres->Save(outPath, Aspose::Slides::Export::SaveFormat::Pptx);
Extraer Video de la Diapositiva
Además de agregar videos a las diapositivas, Aspose.Slides te permite extraer videos incrustados en presentaciones.
- Crea una instancia de la clase Presentation para cargar la presentación que contiene el video.
- Itera a través de todos los objetos ISlide.
- Itera a través de todos los objetos IShape para encontrar un VideoFrame.
- Guarda el video en el disco.
Este código C++ te muestra cómo extraer el video de una diapositiva de presentación:
// La ruta al directorio de documentos.
const System::String templatePath = u"../templates/Video.pptx";
const System::String outPath = u"../out/Video_out";
auto presentation = System::MakeObject<Presentation>(templatePath);
for (auto&& slide : presentation->get_Slides())
{
for (auto&& shape : slide->get_Shapes())
{
if (System::ObjectExt::Is<VideoFrame>(shape))
{
System::SharedPtr<VideoFrame> vf = System::AsCast<VideoFrame>(shape);
System::String type = vf->get_EmbeddedVideo()->get_ContentType();
type = type.Remove(0, type.LastIndexOf('/') + 1);
auto buffer = vf->get_EmbeddedVideo()->get_BinaryData();
auto stream = System::MakeObject<System::IO::FileStream>(
outPath + type, System::IO::FileMode::Create, System::IO::FileAccess::Write,
System::IO::FileShare::Read);
stream->Write(buffer, 0, buffer->get_Length());
}
}
}