Python 到时间自动压缩视频

由于工作需要,每天有大量的视频需要压缩转码

  • 某一天为了更好的需求,中午也要去,这尼玛 直接写一个脚本给我做,就行了,好歹我们也学了点代码之类的工具啥的,就是干

  • 说干,我们就来先说说思路,首先是要在规定的时间,做事情( 运行代码压缩视频 )
#计算时间得到秒
def howManySecondsBefore(now , atTime):
    d1 = datetime.datetime(now.tm_year, now.tm_mon, now.tm_mday, now.tm_hour, now.tm_min, now.tm_sec)
    #根据输入的参数,返回一个datetime对象
    d2 = datetime.datetime(atTime.tm_year, atTime.tm_mon, atTime.tm_mday, atTime.tm_hour, atTime.tm_min, atTime.tm_sec)
    second = (d2 - d1).seconds 

    return second


#开始运行
def start():
    #1.得到当前的详细时间
    currentTime = time.localtime()

    #2.根据当前的时间拿到想要的时间 为下午的一点钟
    wantTime = "%d-%d-%d 12:07:00" %(currentTime.tm_year, currentTime.tm_mon, currentTime.tm_mday)
    
    #3.目标执行的时间
    targetTime =  time.strptime(wantTime, '%Y-%m-%d %X')

    #4.离运行时间的秒
    waitTimeSecond = howManySecondsBefore(currentTime, targetTime)

    #5.睡眠等到要执行的时间
    time.sleep(waitTimeSecond)

    #6.睡nmb, 起来high
    High()

  • 然后怎么High了,我们默认是将视频放在一个文件夹里面,路径当然是绝对的,但是为了以后运用,写一个相对的也可以
#开始high
def High():
    #.检查有没有视频后缀为.mp4 ,搜索路径
    videoPath = GetDesktopPath() + "/视频"
    #得多所有视频的路径 这里得到的是一个元祖,并且第二个是一个字符串
    tuple2 = GetFileWith(videoPath)

    #拿到所有的路径,并且是list
    allVideoPath = tuple2[1].split("\n")

    if len(allVideoPath) > 0:
        #转换
        CompressionTranscoding(allVideoPath)

+废话不多说, 直接上全部代码

#coding=utf-8

import os
import sys
import subprocess
import commands
#时间
import time 
import datetime

#根据一个路径获取路径下面有多少个视频路径
def GetFileWith(path):
    command = "find %s -name *.mp4" %(path)
    #执行shell 命令
    allVideoPath = commands.getstatusoutput(command)

    return allVideoPath

#得到当前用户的桌面路径
def GetDesktopPath():
    return os.path.join(os.path.expanduser("~"), 'Desktop')


#创建文件夹 返回文件的路径
def createFolder():
    currentTime = time.localtime()
    #以当前日期创建文件夹
    folderName = "%d%d压缩视频" %(currentTime.tm_mon, currentTime.tm_mday)
    folderPath = GetDesktopPath() + '/' + folderName
    createCommand = "mkdir %s" %(folderPath)
    commands.getstatusoutput(createCommand)
    return folderPath



#转换
def CompressionTranscoding(allVideoPath):
    #创建文件夹,并得到路径
    compressionVideoFolderPath = createFolder()

    #遍历每个的路径,开始转换
    for singlePath in allVideoPath:

        if type(singlePath) is str:
            #这里就开始进行转换了
            #拿到本身的文件名 -1 是的到list的最后一个元素
            videoName = singlePath.split("/")[-1] 
            # print videoName
            #拼接压缩路径
            videoCompressionPath = compressionVideoFolderPath + "/" + videoName
            #shell 命令
            command = "/usr/local/bin/ffmpeg -i %s -vcodec h264 -s 352*278 -r 6 %s " %(singlePath, videoCompressionPath)
            #开启一个进程执行shell
            p2 = subprocess.Popen(command,shell=True)
            
            #等待
            p2.wait()           


#开始high
def High():
    #.检查有没有视频后缀为.mp4 ,搜索路径
    videoPath = GetDesktopPath() + "/视频"
    #得多所有视频的路径 这里得到的是一个元祖,并且第二个是一个字符串
    tuple2 = GetFileWith(videoPath)

    #拿到所有的路径,并且是list
    allVideoPath = tuple2[1].split("\n")

    if len(allVideoPath) > 0:
        #转换
        CompressionTranscoding(allVideoPath)


#计算时间得到秒
def howManySecondsBefore(now , atTime):
    d1 = datetime.datetime(now.tm_year, now.tm_mon, now.tm_mday, now.tm_hour, now.tm_min, now.tm_sec)
    #根据输入的参数,返回一个datetime对象
    d2 = datetime.datetime(atTime.tm_year, atTime.tm_mon, atTime.tm_mday, atTime.tm_hour, atTime.tm_min, atTime.tm_sec)
    second = (d2 - d1).seconds 
    return second


#开始运行
def start():
    #1.得到当前的详细时间
    currentTime = time.localtime()

    #2.根据当前的时间拿到想要的时间 为下午的一点钟
    wantTime = "%d-%d-%d 13:09:00" %(currentTime.tm_year, currentTime.tm_mon, currentTime.tm_mday)
    
    #3.目标执行的时间
    targetTime =  time.strptime(wantTime, '%Y-%m-%d %X')

    print targetTime

    #4.离运行时间的秒
    runTimeSecond = howManySecondsBefore(currentTime, targetTime)

    print runTimeSecond
    #5.睡眠
    time.sleep(runTimeSecond)

    #6.睡nmb, 起来high
    High()


if __name__ == "__main__":
    start()

测试运行

好了,到下午一点,它就自己去转视频,我就不用去了,可以睡个午觉啥的

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,242评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,769评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,484评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,133评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,007评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,080评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,496评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,190评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,464评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,549评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,330评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,205评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,567评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,889评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,160评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,475评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,650评论 2 335

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,047评论 25 707
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 6,327评论 0 17
  • 张小北站在车水马龙的十字路口,有点恍惚,突然忘记了自己应该往那个方向走,他默默站在那里,感觉自己渺小的如同一只蚂蚁...
    冬夜阅读 187评论 0 1
  • 却说九幽飞魂,须臾间亦死了。吾已无敌也!大叫:众神亦有何术?还不扶我上宝座,抬我上尊台! 众神擎来八抬大轿,将我扶...
    圣人乙阅读 403评论 2 1
  • 做事要循序渐进才是王道,细水长流才是最好呢,饭要一口一口吃。 睡饱了才能有精力坚持。每天有进步 才是真的。 加油。
    刘韧阅读 157评论 0 0