zoukankan      html  css  js  c++  java
  • 群晖(Synology)video Station索引无视频缩略图

    一、个人环境

    黑群晖DSM6.1.4

    二、解决方式

    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、运行脚本

    ssh登录群辉,如何设置、登录,请参考https://www.cnblogs.com/hester/p/14696235.html

    ssh命令行窗口运行如下命令

    cd /
    cd volume1/video/
    sudo python3 photo_thumb.py 

    注:如上脚本采用python3执行,python2未实验

  • 相关阅读:
    cyren提供安全规则
    AC自动机——1 Trie树(字典树)介绍
    代码静态分析工具——splint的学习与使用
    Aria2+WebUI,迅雷倒下之后的代替品
    立华科技
    centos平台基于snort、barnyard2以及base的IDS(入侵检测系统)的搭建与测试及所遇问题汇总
    Iperf使用方法与参数说明
    网络基本功(一):细说网络传输
    TCP窗口扩大选项
    TCP Nagle算法&&延迟确认机制
  • 原文地址:https://www.cnblogs.com/hester/p/14696402.html
Copyright © 2011-2022 走看看