吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 14622|回复: 37
收起左侧

[Python 转载] 专治爱剪辑的片头片尾的脚本(Python)

  [复制链接]
pcdack 发表于 2018-9-16 18:04

起因

最近看到很多由爱剪辑做的视频,片头和片尾的展示实在影响视频的美观性,所以想着。如何用Python去实现。于是写了这个脚本。

依赖

这里需要一个Python的库叫moviepy,专门用来处理视频的。

思路讲解

首先我们观察一般爱剪辑剪过的视频,有普遍的特征,也就是他的片头由6s的展示片段。片尾有6.5s的展示片段。我们需要的就是把前6s和后6.5s的时间视频减掉。

moviepy中的相关方法

视频时间获取

clip=VideoFileClip(文件名).subclip(开始时间,结束时间)
clip.duration #这个就是视频的时间

视频剪辑

clip=VideoFileClip(文件名).subclip(开始时间,结束时间)

视频保存
clip.write_videofile(文件名)

python中用到的相关方法

获取文件的后缀名

file_format=os.path.splitext(filename)[1]

获取文件名(不带后缀)

file_name=os.path.splitext(filename)[0]

全部代码

#!/usr/bin/env python
# coding=utf-8
from moviepy.editor import VideoFileClip
import os
import sys
import argparse
import pathlib

def get_file_times(filename):
       u"""
       获取视频时长(s:秒)
       """
       clip = VideoFileClip(filename)
       return clip.duration

def video_process(filename):
 u"""
     剪辑的区间在6到视频的总时长-6.5
       """
     clip=VideoFileClip(filename).subclip(6,int(get_file_times(filename))-6.5)
     file_name=os.path.splitext(filename)[0] #获取文件名(不带后缀)
     clip.write_videofile(file_name+"_fuck.mp4") #将文件变成文件名+fuck格式

def check_dir(path):
   u"""
   用来判断是文件,还是文件夹的方法
       """
    my_path=pathlib.Path(path)
    ex = my_path.exists()
    if ex:
        is_dir = my_path.is_dir()
        is_file = my_path.is_file()
    else:
        is_dir=False
        is_file=False
    return ex,is_dir,is_file

def fuck_dir(filepath):
           u"""
                文件夹的处理方法
       """
    pathDir =  os.listdir(filepath)
    for allDir in pathDir:
        filepath = os.path.abspath(filepath)
        child = os.path.join('%s/%s' % (filepath, allDir))
        file_format=os.path.splitext(child)[1]
        if file_format == ".mp4":
            print(child)
            video_process(child)

def fuck_file(path):
   u"""
    文件的处理方法
       """
    print("fuck from file")
    filepath = os.path.abspath(path)
    file_format=os.path.splitext(filepath)[1]
    if file_format == ".mp4":
        video_process(path)
    pass

parse=argparse.ArgumentParser(description="fuck ajj") #解析命令行参数
parse.add_argument("-i","--input",type=str,help="video item")
args = parse.parse_args()
video_item=args.input
ex,is_dir,is_file=check_dir(video_item)
print(ex,is_dir,is_file)
if not ex:
    print("the file is not exist!!!!!!\nPlease reinput")
else:
    if is_dir:
       fuck_dir(video_item)
    elif is_file:
        fuck_file(video_item)

用法

python fuck_ajj.py -i 你需要处理视频的路径

当然也可以处理整个文件夹下所有的视频,只需要将路径作为参数传入就可以了

免费评分

参与人数 10吾爱币 +12 热心值 +9 收起 理由
机灵鹤 + 1 + 1 用心讨论,共获提升!
sheg + 1 + 1 谢谢@Thanks!
水泥工艺学 + 1 + 1 谢谢@Thanks!
rxn123456 + 1 热心回复!
pyfseo + 1 + 1 不错啊
清泉飞扬 + 1 + 1 真正的大家。加油!
WT-119 + 1 + 1 用心讨论,共获提升!
dhs347 + 1 + 1 谢谢@Thanks!
苏紫方璇 + 3 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
limao555 + 1 + 1 热心回复!

查看全部评分

本帖被以下淘专辑推荐:

  • · 好帖|主题: 549, 订阅: 87

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

途牛i 发表于 2020-2-24 20:33
有了脚本也不会用,报一堆错误不会解决
Traceback (most recent call last):
  File "D:\file\fuck_ajj.py", line 56, in <module>
  File "D:\file\fuck_ajj.py", line 22, in check_dir
  File "C:\Users\jasper\AppData\Local\Programs\Python\Python38\lib\pathlib.py", line 1035, in __new__
    self = cls._from_parts(args, init=False)
  File "C:\Users\jasper\AppData\Local\Programs\Python\Python38\lib\pathlib.py", line 676, in _from_parts
    drv, root, parts = self._parse_args(args)
  File "C:\Users\jasper\AppData\Local\Programs\Python\Python38\lib\pathlib.py", line 660, in _parse_args
    a = os.fspath(a)
TypeError: expected str, bytes or os.PathLike object, not NoneType
鱼在水中飞 发表于 2018-11-24 11:51
还不错。根据楼主的代码自己也写了来用。保存的结果文件虽然只少了10来秒,但文件比原来爱剪辑的文件小了%70以上,很省空间。
但是程序是预先设置了片头和片尾时间,如果爱剪辑修改了这个时长的话,程序也就需要修改了。
hjk 发表于 2018-9-16 18:36
新司机丶听雪 发表于 2018-9-16 18:47
这个可以
vipcrack 发表于 2018-9-16 19:05
hjk 发表于 2018-9-16 18:36
靠什么原理处理视频?

获取广告的片段在整个视频里的位置,然后裁剪出来。
倪先生 发表于 2018-9-16 19:31
太高端了 看的一脸懵逼
jun57663796 发表于 2018-9-16 22:56
我也不会用
北染陌客 发表于 2018-9-17 09:49 来自手机
爱剪辑还有其他视频吗?请尊重他人劳动成果!/手动滑稽
 楼主| pcdack 发表于 2018-9-17 11:56
倪先生 发表于 2018-9-16 19:31
太高端了 看的一脸懵逼

了解Python的话应该挺好懂的吧
笨笨猪 发表于 2018-9-17 12:46
现在好多有意思的库都没有接触,楼主这是在github上接触到的,还是实验楼啊
 楼主| pcdack 发表于 2018-9-17 16:40
笨笨猪 发表于 2018-9-17 12:46
现在好多有意思的库都没有接触,楼主这是在github上接触到的,还是实验楼啊

GitHub上有个叫awesome-python,里面罗列了很多库awesome-Python地址
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-16 23:54

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表