黑群晖一键生成视频缩略图

问题

当我们使用VideoStation的时候,如果上传的不是影视剧等,就没办法自动查找海报缩略图,所以我们在这里制作了一个教程。分别使用 FFmpegPython

解决方案

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 就可以进行生成缩略图了

猜你喜欢

转载自blog.csdn.net/qq_36678880/article/details/124934495