作者:phperint | 来源:互联网 | 2023-09-05 19:46
方法一:使用ffmpeg实现
- 推荐保姆级视频教程:
- https://www.bilibili.com/video/BV1Ft411s7Xa?p=4
在下面地址下载安装ffmpeg软件。
https://www.ffmpeg.org/download.html#build-windows
将下载好的文件夹中bin目录添加到系统环境变量path中。
在存放视频音频的文件夹目录框中输入cmd进入命令框。
使用ffmpeg,ffprobe,ffplay即可
比较实用的一些功能都有,直接在视频中看就行。
提取视频为帧并保存
按间隔帧来提取视频中的帧
ffmpeg -i 10021502.mp4 -vf "select=between(n\,84\,208)*not(mod(n\,4))" -vsync 0 ./pkl/image_%05d.jpg
主体是一个select 的过滤语句:
其中:between(n,*) 是指 从第几帧到第几帧之间进行提取…
not(mode(n, K))是指每隔几帧输出一帧。
-f image2表示输入或输出文件的格式是image2格式, -f是format(格式)的意思。
法一:亲测可行
import matplotlib.pyplot as plt
import imageio
import skimage
import numpy as np
filename = 'video/01.mp4'
vid = imageio.get_reader(filename, 'ffmpeg')
for num,im in enumerate(vid):image = skimage.img_as_float(im).astype(np.float64)fig = plt.figure()fig.suptitle('image{}'.format(num), fontsize=20)plt.imshow(im)
plt.show()
法2:在python中使用ffmpeg提取帧并保存
亲测有效,如图
import os
from PIL import Image
import numpy frame = 5
def get_image(video_path, image_path):try:os.system('ffmpeg -i {0} -r {1} -f image2 {2}/frame_%03d.png'.format(video_path, frame, image_path))except:print('ERROR !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!')
if __name__=='__main__':get_image('video/01.mp4','video/results')