问题
当我们使用VideoStation的时候,如果上传的不是影视剧等,就没办法自动查找海报缩略图,所以我们在这里制作了一个教程。分别使用 FFmpeg、Python
解决方案
1. 进入群晖系统
【黄色荧光笔标注为需要点击的地方】
2.添加第三方套件来源
名称与位置同名即可
位置URL:
【DSM6.x版本】
https://spk.imnks.com/
【DSM7.x版本】
https://spk7.imnks.com/
3.进行安装软件包
点击套件中心左侧下面的 社群
进行查找 ffmpeg 进行安装
4.开启群晖 SSH功能
操作步骤请看下图
5.使用SSH工具进行连接群晖
输入IP
点击 Accept
输入群晖管理账号
输入群晖管理账户密码
成功登录
6.添加Python文件
复制全部即可
#!/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)
输入 sudo -i
然后输入管理员的密码
输入 ls /
查找自己的视频存储位置,方法:volume 开头的文件夹,都是硬盘,ls /volume几几几,就能找到存放视频的位置了
确定好位置输入 cd 目录
输入 vi 1.py 回车
按 i 然后把刚才复制的一大堆代码右击复制到终端里面
按 ESC 后输入 :wq 然后回车 注意是英文
SSH软件下载位置 去下载
【后半部分SSH有些人可能不懂,大概的意思就是把这个Python文件放到你想生成缩略图的视频目录下面,使用的vi就相当于修改记事本的命令,如果不懂的话就在网上找一下关于vi的教程】
进行执行 python2 1.py
就可以进行生成缩略图了