lista - Creando miniaturas de archivos de video con Python
ejercicios de archivos en python (6)
Mire en PythonMagick , una interfaz de Python para ImageMagick. Eso debería tener lo que necesitas. (Descargo de responsabilidad: no he usado la interfaz de Python antes, pero sé que ImageMagick es un buen mojo).
Necesito crear miniaturas para un archivo de video una vez que lo haya cargado en una aplicación web que ejecuta python.
¿Cómo haría esto? Necesito una biblioteca que básicamente pueda hacer esto por mí o que pueda leer los marcos de imágenes de archivos de video (en varios formatos) automáticamente.
No pude instalar ffvideo en OSX Sierra, así que decidí trabajar con ffmpeg.
OSX:
brew install ffmpeg
Linux:
apt-get install ffmpeg
Código de Python 3:
import subprocess
video_input_path = ''/your/video.mp4''
img_output_path = ''/your/image.jpg''
subprocess.call([''ffmpeg'', ''-i'', video_input_path, ''-ss'', ''00:00:00.000'', ''-vframes'', ''1'', img_output_path])
Podría usar la API de Youtube para el almacenamiento y la transcodificación y capturar las miniaturas de alimentación de forma gratuita. Honestamente, esa es la forma más fácil de manejar el video en línea y no solo estoy ofreciendo un servicio de terceros, soy un usuario muy feliz de esa API y de las rutas de video internas que pude eliminar gracias a ella.
Puedes usar ffvideo
from ffvideo import VideoStream
pil_image = VideoStream(''0.flv'').get_frame_at_sec(5).image()
pil_image.save(''frame5sec.jpeg'')
import cv2
vcap = cv2.VideoCapture(filename)
res, im_ar = vcap.read()
while im_ar.mean() < threshold and res:
res, im_ar = vcap.read()
im_ar = cv2.resize(im_ar, (thumb_width, thumb_height), 0, 0, cv2.INTER_LINEAR)
#to save we have two options
#1) save on a file
cv2.imwrite(save_on_filename, im_ar)
#2)save on a buffer for direct transmission
res, thumb_buf = cv2.imencode(''.png'', im_ar)
# ''.jpeg'' etc are permitted
#get the bytes content
bt = thumb_buf.tostring()
"umbral" es un número entero. Cuando obtiene un cuadro de video, puede ser muy negro, blanco, etc. Para obtener una buena imagen en miniatura, puede especificar el valor medio de todos los píxeles en el cuadro.