zoukankan      html  css  js  c++  java
  • 写了一个hiero检查任务渲染结果的脚本

    基本思路是写了一个时间判断函数(postSequence_check)来对比transcode任务提交时间和目标文件夹内文件的修改时间来确定渲染是否成功执行,然后通过Hiero提供的postSequence钩子函数将时间判断函数(postSequence_check)注入进Hiero。

    用法很简单,保存为一个脚本,并在__init__中引用即可。
     
    Talk is cheap,show you the code:
     
    ###################################################################################################################################################################
     
    import hiero.core,hiero.exporters
    import sys
    import os,datetime
    import time
     
    #GLOBAL_NAMELIST=[]

    def updateItem_new (self, originalItem, localtime):
        #print sys._getframe().f_code.co_name

        global GLOBAL_LOCALTIME,GLOBAL_CLASS_TYPE
        GLOBAL_LOCALTIME = time.mktime(localtime)
        GLOBAL_CLASS_TYPE = self
        

        """updateItem - This is called by the processor prior to taskStart, crucially on the main thread.
          This gives the task an opportunity to modify the original item on the main thread, rather than the clone."""
        #if isinstance(self._item, (Sequence,TrackItem)):
        #if isinstance(self._item, Clip):

        timestamp = self.timeStampString(localtime)
        tag = hiero.core.Tag("Transcode " + timestamp, "icons:Nuke.png")
        tag.metadata().setValue("tag.path", self.resolvedExportPath())
        tag.metadata().setValue("tag.localtime", str(localtime))
        # Right now dont add the time to the metadata
        # We would rather store the integer time than the stringified time stamp
        #tag.setValue("time", timestamp)

        # No point in adding script path if we're not planning on keeping the script
        if self._preset.properties()["keepNukeScript"]:
          tag.metadata().setValue("tag.script", self._scriptfile)

        start, end = self.outputRange()
        tag.metadata().setValue("tag.startframe", str(start))
        tag.metadata().setValue("tag.duration", str(end-start+1))
        
        frameoffset = self._startFrame if self._startFrame else 0
        if hiero.core.isVideoFileExtension(os.path.splitext(self.resolvedExportPath())[1].lower()):
          frameoffset = 0
        tag.metadata().setValue("tag.frameoffset", str(frameoffset))
        
        if self._cutHandles:
          tag.metadata().setValue("tag.handles", str(self._cutHandles))

        self._tag_guid = tag.guid()

        originalItem.addTag(tag)

        # The guid of the tag attached to the trackItem is different from the tag instace we created
        # Get the last tag in the list and store its guid
        self._tag_guid = originalItem.tags()[-1].guid()
        
    hiero.exporters.FnTranscodeExporter.TranscodeExporter.updateItem = updateItem_new


    ######################################################################################################
    ######################################################################################################
    ######################################################################################################


    def postSequence_check(self):

        #print sys._getframe().f_code.co_name
        
        #print self.__class__

        #print self._filebase

        if isinstance(self,hiero.exporters.FnTranscodeExporter.TranscodeExporter):
            #print "yeah!"
            #print self._root
            #print self._shotPath
            #print self._filebase
            #print self._version
            #print self._track
            #print self.outputRange()
            #print self.properties()
            #print initDictionary

            #GLOBAL_NAMELIST.append(self._filebase)

            base_dir = self._root
            base_dir = "/".join(base_dir.split('/')[0:-1])
            print self._filebase
            list = []
            timestamplist = []
            list = os.listdir(base_dir)  

            if len(list) > 0:
                for i in range(0, len(list)):  
                    path = os.path.join(base_dir,list[i])  
                    if os.path.isfile(path):  
                        path = os.path.join(base_dir, list[i])  
                        if os.path.isdir(path):  
                            continue  
                        timestamp = os.path.getmtime(path)  
                        timestamplist.append(timestamp)
            
                #print GLOBAL_LOCALTIME,min(timestamplist)

                if GLOBAL_LOCALTIME > min(timestamplist):
                    print "(VHQ) This transcode task has some problem:" + self._filebase
                else:
                    print '(VHQ) This transcode task is OK!'
            else:
                print "(VHQ) This transcode task has some problem:" + self._filebase
        else:
            base_dir = self._filebase
            #base_dir = "/".join(base_dir.split('/')[0:-1])
            print base_dir
            print str(self.__class__).strip('<').strip('>').strip("'").split('.')[-1] + ' is not transcode render task!'

    hiero.core.FnExporterBase.TaskBase.postSequence = postSequence_check



  • 相关阅读:
    移动端拖拽
    原生js增加,移除类名
    js自执行函数
    页面加载初始化方法
    writing-mode,文字竖直书写,字符之间距离,单词之间距离
    滚动鼠标达到一点范围时的跑秒效果,从0开始一直加在规定时间内加到最大值
    haley解决中文字段名称字数不同时两端对齐的问题
    常用的一些css实现的小效果,比如三角形,小三角,阴影等
    html几个比较常用的颜色名称
    Spring--通过注解来配置bean
  • 原文地址:https://www.cnblogs.com/hksac/p/4867953.html
Copyright © 2011-2022 走看看