Agregar videos a presentaciones en Python
Un video bien colocado en una presentación puede hacer que tu mensaje sea más convincente y aumentar los niveles de compromiso con 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 (desde una fuente web como YouTube).
Para permitirte agregar videos (objetos de video) a una presentación, Aspose.Slides proporciona la interfaz IVideo y la interfaz IVideoFrame y otros tipos relevantes.
Crear fotograma de video incrustado
Si el archivo de video que deseas agregar a tu diapositiva está almacenado localmente, puedes crear un fotograma de video para incrustar el video en tu presentación.
- Crea una instancia de la clase Presentation.
- Obtén una referencia a una diapositiva mediante su índice.
- Agrega un objeto IVideo y pasa la ruta del archivo de video para incrustar el video en la presentación.
- Agrega un objeto IVideoFrame para crear un fotograma para el video.
- Guarda la presentación modificada.
Este código Python muestra cómo agregar un video almacenado localmente a una presentación:
import aspose.slides as slides
with slides.Presentation(path + "pres.pptx") as pres:
with open("Wildlife.mp4", "br") as fileStream:
video = pres.videos.add_video(fileStream, slides.LoadingStreamBehavior.KEEP_LOCKED)
# Obtiene la primera diapositiva y agrega un fotograma de video
pres.slides[0].shapes.add_video_frame(10, 10, 150, 250, video)
# Guarda la presentación en disco
pres.save(path + "pres-with-video.pptx", slides.export.SaveFormat.PPTX)
Alternativamente, puedes agregar un video pasando su ruta de archivo directamente al método add_video_frame(x, y, width, height, fname).
import aspose.slides as slides
with slides.Presentation() as pres:
sld = pres.slides[0]
vf = sld.shapes.add_video_frame(50, 150, 300, 150, "video1.avi")
Crear fotograma 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 (p. ej., en YouTube), puedes agregarlo a tu presentación mediante su enlace web.
- Crea una instancia de la clase Presentation
- Obtén una referencia a una diapositiva mediante su índice.
- Agrega un objeto IVideo y pasa el enlace al video.
- Establece una miniatura para el fotograma de video.
- Guarda la presentación.
Este código Python muestra cómo agregar un video desde la web a una diapositiva en una presentación de PowerPoint:
import aspose.slides as slides
from urllib.request import urlopen
def add_video_from_youyube(pres, videoId):
# Añade un videoFrame
videoFrame = pres.slides[0].shapes.add_video_frame(10, 10, 427, 240, "https://www.youtube.com/embed/" + videoId)
videoFrame.play_mode = slides.VideoPlayModePreset.AUTO
# Carga la miniatura
thumbnail_uri = "http://img.youtube.com/vi/" + videoId + "/hqdefault.jpg"
f = urlopen(thumbnail_uri)
videoFrame.picture_format.picture.image = pres.images.add_image(f.read())
with slides.Presentation() as pres:
add_video_from_youyube(pres, "s5JbfQZ5Cc0")
pres.save("AddVideoFrameFromWebSource_out.pptx", 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 disco.
Este código Python muestra cómo extraer el video de una diapositiva de presentación:
import aspose.slides as slides
# Instancia un objeto Presentation que representa un archivo de presentación
with slides.Presentation(path + "Video.pptx") as presentation:
for shape in presentation.slides[0].shapes:
if type(shape) is slides.VideoFrame:
type = shape.embedded_video.content_type
buffer = shape.embedded_video.binary_data
with open("NewVideo_out." + type[type.rfind('/') + 1:len(type)], "wb") as stream:
stream.write(buffer)
Preguntas frecuentes
¿Qué parámetros de reproducción de video se pueden cambiar para un VideoFrame?
Puedes controlar el modo de reproducción (automático o al hacer clic) y el bucle. Estas opciones están disponibles a través de las propiedades del objeto VideoFrame.
¿Agregar un video afecta al tamaño del archivo PPTX?
Sí. Cuando incrustas un video local, los datos binarios se incluyen en el documento, por lo que el tamaño de la presentación crece proporcionalmente al tamaño del archivo. Cuando agregas un video en línea, se incrustan un enlace y una miniatura, por lo que el aumento de tamaño es menor.
¿Puedo reemplazar el video en un VideoFrame existente sin cambiar su posición y tamaño?
Sí. Puedes intercambiar el contenido de video dentro del fotograma manteniendo la geometría de la forma; este es un escenario frecuente para actualizar medios en un diseño existente.
¿Se puede determinar el tipo de contenido (MIME) de un video incrustado?
Sí. Un video incrustado tiene un tipo de contenido que puedes leer y usar, por ejemplo al guardarlo en disco.