질문
VideoStation을 사용할 때 업로드가 영화 및 TV 드라마 등이 아닌 경우 포스터의 썸네일을 자동으로 찾을 수 있는 방법이 없으므로 여기에서 자습서를 만들었습니다. 각각 FFmpeg , Python 사용
해결책
1. Synology 시스템에 들어갑니다
[노란색 형광펜은 클릭해야 하는 위치를 표시합니다]
2. 위치와 동일한 이름으로 타사 패키지의 소스 이름 추가
위치 URL:
[DSM6.x 버전]
https://spk.imnks.com/
[DSM7.x 버전]
https://spk7.imnks.com/
3. 소프트웨어 패키지를 설치하려면
패키지 센터 왼쪽의 커뮤니티를 ffmpeg를
검색하여 설치합니다. 4. Synology SSH 기능을 활성화합니다. 작업 단계는 다음 그림을 참조하십시오. 5. SSH를 사용합니다 . Synology 에 연결하기 위한 도구 계정 그룹 관리 계정의 비밀번호를 입력 하고 성공적으로 로그인 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 /
확인 하실 수 있습니다. 위치 및 입력
cd 目录
vi 1.py를 입력하고
Enter 키를 누른 다음 i 키를 누르고 방금 복사한 많은 코드를 터미널에 마우스 오른쪽 버튼으로 클릭하여 복사하고 ESC 키 를 누른 다음 wq를
입력 하고 Enter 키를 누릅니다. 다운로드할 영어 SSH 소프트웨어 다운로드 위치 라는 점에 유의하십시오. [SSH 후반부, 이해가 안가는 분들도 있겠지만, 일반적인 의미는 이 Python 파일을 썸네일을 생성하려는 비디오 디렉토리에 넣는 것입니다. 사용된 vi는 만약 인터넷에서 vi 에 대한 자습서를 찾을 수 있습니다. ] 진행하려면 실행하여 섬네일 생성
python2 1.py