我上传到运行python的webapp后,我需要为视频文件创建缩略图。
我将如何解决这个问题...我需要一个基本上可以为我执行此操作的库,或者可以自动从视频文件(多种格式)中读取图像帧的库。
答案 0 :(得分:11)
您可以使用ffvideo
from ffvideo import VideoStream
pil_image = VideoStream('0.flv').get_frame_at_sec(5).image()
pil_image.save('frame5sec.jpeg')
答案 1 :(得分:8)
答案 2 :(得分:6)
我无法在OSX Sierra上安装ffvideo所以我决定使用ffmpeg。
OSX:
brew install ffmpeg
Linux的:
apt-get install ffmpeg
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])
答案 3 :(得分:3)
您可以使用Youtube API进行存储和转码,并免费获取Feed缩略图。老实说,这是处理在线视频的最简单方式,我不仅仅是第三方服务,我是该API的非常满意的用户以及我能够删除的内部视频路径。
答案 4 :(得分:2)
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()
&#34;阈值&#34;是一个整数。当你得到一个视频帧时,它可以是非常黑,白等等,以获得一些好的缩略图,你可以指定帧中所有像素的平均值。
答案 5 :(得分:1)
查看PythonMagick,这是ImageMagick的Python接口。那应该有你需要的东西。 (免责声明:我以前没有使用过Python接口,但我知道ImageMagick是好的魔法。)
答案 6 :(得分:0)
您可以使用在GitHub上找到的Python脚本pyvideothumbnailer,该脚本使用MoviePy,MediaInfo和PIL分支Pillow。它应该为您完成全部工作。