其他分享
首页 > 其他分享> > 根据缩略图快速浏览视频

根据缩略图快速浏览视频

作者:互联网

根据缩略图快速浏览视频

成品代码在最后 硬性要求python环境,下载好的ffmpeg 程序

借助ffmpeg获取视频截图

借助图片浏览软件 将指定图片移动到指定路径

借助python完成批量化操作

具体任务

ffmpeg:将输入视频第3s的截图放入指定路径

python下使用的代码:

exe = r'C:\Users\pc\Documents\ffmpeg-4.4-full_build\bin\ffmpeg.exe'
cmd = f'{exe} -loglevel quiet -y -ss 3  -i "{video_path}"  -vframes 1  "{pic_path}" '

在视频同文件夹下且ffmpeg.exe路径加入环境变量cmd命令为

cmd = ffmpeg -loglevel quiet -y -ss 3  -i a.mp4  -vframes 1  a.jpg

参数说明:

-loglevel quiet 不显示提示信息 没有会显示很多视频信息

-y 是否覆盖 有同名文件存会删除原文件再写入 没有则会弹出提示

-ss 开始操作视频的时间 3 指从3秒开始

-i 后面跟输入文件

-vframe 需要的视频帧数

提示:使用绝对路径时最好加上双引号,否则文件名中有空格时会产生错误

python :将目录下视频生成截图,放置到一级目录下

​ 待使用者完成挑选后匹配视频与照片 将对应视频移动到一个目录下

使用者:移动图片到指定目录下

推荐使用honeyview 设置快捷键

达到效果,按快捷键翻页与移动图片到指定路径

操作提示:用honeyview打开图片右击主界面 ->配置

设置热键:-> 键盘

设置指定路径 ->杂项->照片文件夹

注意照片文件夹能选两个,热键里要对应

使用提示:

exe变量中的路径换成自己的

输入的dir目录下有视频

file目录下无jpg照片

将生成的图片一部分放到file里

程序将会将,对应的视频,file里的图片,移动到dir目录下的match目录里

from os import *
import re,shutil

exe = r'C:\Users\pc\Documents\ffmpeg-4.4-full_build\bin\ffmpeg.exe'

def hi(sep='.'):
    print(sep,end=' ')

def _back(args):
    while True:
        k = input('back? y or continue q:')
        if 'y' in k:
            for i in args:
                renames(args[i], i)
            break
        elif 'q' in k:
            break

def capture_frame(dir_path):
    print('获取所有视频第三秒的一张截图')
    for f in walk(dir_path):
        for i in f[2]:
            if 'mp4' in i:
                hi()
                video_path=path.join(f[0],i)
                pic_path=path.join(dir_path,i[:-3]+'jpg')
                def fun():
                    cmd = f'{exe} -loglevel quiet -y -ss 3  -i "{video_path}"   -vframes 1  "{pic_path}" '
                    r=system(cmd)
                fun()
    input('截图完成 请挑选后回车:')   
    
def match_pic_video(dir_path,file_path):
    back=dict()
    files=listdir(file_path)
    def match_video(back):
        for f in walk(dir_path):
            hi(' ')
            for i in f[2]:
                a=path.join(f[0],i)
                b=path.join(dir_path,'match',i)
                if 'mp4' in i:
                    for index in files:  
                        try:             
                            index_re=re.findall('(.*?)\.jpg',index)[0]
                            i_re=re.findall('(.*?)\.mp4',i)[0]     
                        except:
                            continue
                        if index_re == i_re:
                            back[a]=b
                            renames(a,b)
                            hi()
                            break
        return back
    back=match_video(back)
    a=path.join(dir_path,'match')
    if not path.exists(a):
        makedirs(a)
    for i in listdir(file_path):
        if not 'jpg' in i:
            continue
        a=path.join(file_path,i)
        b=path.join(dir_path,'match',i)
        back[a]=b
        try:
            shutil.move(a,b)
        except:
            print('移动照片失败一次')
    _back(back)   

if __name__=='__main__':
    dir_path=input('dir_path:')
    file_path=input('file_path:')
    capture_frame(dir_path)
    match_pic_video(dir_path,file_path)

标签:视频,ffmpeg,浏览,缩略图,back,file,path,dir
来源: https://www.cnblogs.com/adenosine/p/15865661.html