您现在的位置是:网站首页> 网络安全 神兵利器

python视频批量压缩脚本

栗子2019-04-12 00:24:54神兵利器人已围观

简介随着手机像素越来越高,我的手机默认4K,出门旅游时,随手拍一段视频,5分钟就能占用手机1个多G的存储空间。造成我这32G的存储还没怎么用就满了。 当即想到QQ影音、格式工厂等可以转码压缩视频,尝试后发现并不好用,因为录像时手机可能竖着拍也可能横着拍,导致压缩时分辨率与原先不一致,视频扭曲、变相。只好自己想办法。

        随着手机像素越来越高,我的手机默认4K,出门旅游时,随手拍一段视频,5分钟就能占用手机1个多G的存储空间。造成我这32G的存储还没怎么用就满了。

        当即想到QQ影音、格式工厂等可以转码压缩视频,尝试后发现并不好用,因为录像时手机可能竖着拍也可能横着拍,导致压缩时分辨率与原先不一致,视频扭曲、变相。只好自己想办法。

        自己码了一个python3的脚本,借助神器FFmpeg解决。由于视频压缩较耗费硬盘性能,就不考虑多线程了。

        FFmpeg下载地址:https://ffmpeg.zeranoe.com/builds/win64/static/ffmpeg-20190411-ce92ee4-win64-static.zip

        功能:自动识别分辨率;压缩码率为2K,不会导致视频不清晰;压缩比例约为10:1;自动遍历文件夹,批量处理;目前只支持MP4,因为手机视频多数都是MP4,其他格式可以自己改,当然如果大佬有需求可以通过博客上的联系方式联系在下,乐意交流。                                                                      

                                                                         无图无真相



#coding=utf-8
import getopt
import os
import sys



T1 = ('==============================\n'
      '      视频批量压缩工具\n'
      '      www.baikesec.com\n'
      '==============================\n')


def main(argv):
    try:
        opts, args = getopt.getopt(argv, "hs:d:", ["help","spath=", "dpath="])
    except getopt.GetoptError:
        print('Error:请输入"-h"查看帮助')
        sys.exit(2)
    for opt, arg in opts:
        if opt == '-h':
            print(T1 + '\n参数:\n'
                  '     -s             源文件夹\n'
                  '     -d             目的文件夹\n\n\n'
                  + "举个栗子:mp4ys.py -s c:\\windows -d D:\\")
            sys.exit()

        elif opt in ("-s", "--spath"):
            global inputpath
            inputpath = arg

        elif opt in ("-d", "--dpath"):
            global d_path
            d_path = arg
            if "\\" != d_path[-1]:
                d_path = d_path + "\\"

def run():
    print(T1)
    file_l = os.listdir(inputpath)
    for file in file_l:
        global path
        path = os.path.join(inputpath, file)
        if ".mp4" in file:
            global file_re
            f_path,file_re = os.path.split(file)
            cmd = "ffmpeg.exe -i " + path + " -vcodec h264 -r 30 -b:v 2048k " + d_path + file_re + " -y"
            #print(cmd)
            os.system(cmd)
            print("视频:%s 压缩完成"%file_re)

if __name__ == "__main__":
    main(sys.argv[1:])
    run()
py


很赞哦!()

上一篇: 这已经是第一篇了!

下一篇:2019年kali下灵活使用代理-shadowsocks配合proxychains

栗子

栗子(共18篇文章)

去见你想见的人,去做你想做的事,趁阳光正好,趁微风不燥,趁你还未老。