一、個人環境
黑群暉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、進入步驟3中video文件夾,運行腳本
ssh登錄群輝,如何設置、登錄,請參考https://www.cnblogs.com/hester/p/14696235.html
ssh命令行窗口運行如下命令
cd / cd volume1/video/ sudo python3 photo_thumb.py
注:如上腳本采用python3執行,python2未實驗
