1、参考上文,下载新版本ffmpeg
https://www.cnblogs.com/hester/p/14696235.html
2、编写python脚本,调用ffmpeg截取视频图像
三、解决步骤
目前群晖DSM自带的ffmpeg版本是 2.7.1 ,通过社区第三方安装 4.2.4 版本的ffmpeg,Photo Station索引后,可以生成视频缩略图;但Video Station索引后,仍然无法生成视频缩略图。
个人的解决方式为编写python转换脚本
1、下载新版ffmpeg
如何下载、安装,请参考:
https://www.cnblogs.com/hester/p/14696235.html
2、编写python转换脚本
创建脚本文件photo_thumb.py
#!/usr/bin/python
# -*- coding:UTF-8 -*-
import os
import sys
def check_type(filename,video_list):
检查是否为视频文件
array = map(filename.endswith,video_list)
if True in array:
return True
else:
return False
def get_capture_delay_time(file_path):
获取截取图片在视频中位置
if not os.path.exists(file_path):
return False
file_size = os.path.getsize(file_path)
if file_size <= 1 * 1024 * 1024: # 视频大小 <= 1MB,截取视频第1S图片
delay_time = 1
elif file_size <= 4 * 1024 * 1024: # 1MB < 视频大小 <= 4MB,截取视频第5S图片
delay_time = 5
elif file_size <= 50 * 1024 * 1024: # 4MB < 视频大小 <= 50MB,截取视频第10S图片
delay_time = 10
else:
delay_time = 20 # 50MB < 视频大小,截取视频第20S图片
return delay_time
def check_file_existed(file_path):
检查文件是否存在
if os.path.exists(file_path):
return True
else:
return False
def get_file_pre(file_name):
获取文件名前缀,如my_video.mp4,返回my_video
video_name_list = os.path.splitext(file_name)
if len(video_name_list) == 2:
video_name_pre = video_name_list[0]
else:
video_name_pre = False
return video_name_pre
def make_thumb(file_path,video_types):
遍历文件夹,调用ffmpeg截取视频图片
for dir_path,dir_names,file_names in os.walk(file_path):
for name in file_names:
# print("*"*20)
# print(name)
if not check_type(name,video_types): # 不是视频文件,跳过本地迭代,继续下一次迭代
print("not video,continue next")
continue
video_full_path = os.path.join(dir_path, name)
video_name_pre = get_file_pre(name)
if video_name_pre: # 如果缩略图已经存在,跳过本地迭代,继续下一次迭代
pic_name = '%s%s' % (video_name_pre,'.jpg')
picture_full_path = os.path.join(dir_path,pic_name)
ret = check_file_existed(picture_full_path)
if ret:
print("%s existed,continue next" % picture_full_path)
continue
delay_time = get_capture_delay_time(video_full_path)
if not delay_time: # 获取文件大小失败,跳过本地迭代,继续下一次迭代
continue
shell = 'ffmpeg -i "%s" -y -ss %s -frames:v 1 "%s"' % \
(video_full_path, delay_time,picture_full_path)
# print("#"*20)
print(shell)
os.system(shell)
print("%s capture success" % picture_full_path)
if __name__ == "__main__":
# 当前路径中执行脚本
file_path = sys.path[0]
video_types = ['.mp4','.avi','.wmv','.mkv','.flv']
make_thumb(file_path,video_types)
也可参考如下链接,直接下载
链接:https://pan.baidu.com/s/1iHW_3GvutSz6d_KPeyxvlA
提取码:3uok
3、上传至群辉共享文件夹
打开File Station,上传脚本文件photo_thumb.py至需要转换的文件夹,如video
4、进入步骤3中video文件夹,运行脚本
ssh登录群辉,如何设置、登录,请参考https://www.cnblogs.com/hester/p/14696235.html
ssh命令行窗口运行如下命令
cd volume1/video/
sudo python3 photo_thumb.py
注:如上脚本采用python3执行,python2未实验