一、個人環境
黑群暉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未實驗