日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

Python實現(xiàn)視頻片頭和片尾添加

系統(tǒng) 1996 0
            
              import
            
            
               imageio

imageio.plugins.ffmpeg.download()

            
            
              from
            
             datetime 
            
              import
            
            
               datetime

            
            
              import
            
            
               os

            
            
              from
            
             moviepy.video.io.VideoFileClip 
            
              import
            
            
               VideoFileClip

            
            
              from
            
             moviepy.video.compositing.concatenate 
            
              import
            
            
               concatenate_videoclips

            
            
              from
            
             threading 
            
              import
            
            
               Thread

            
            
              from
            
             tkinter 
            
              import
            
            
               Tk, Label, filedialog, Button, Entry, END, Text



            
            
              class
            
            
               App(object):

    
            
            
              def
            
            
              __init__
            
            
              (self):
        self.tk 
            
            =
            
               Tk()
        self.tk.geometry(
            
            
              "
            
            
              540x350+10+10
            
            
              "
            
            
              )
        self.tk.resizable(False, False)
        self.tk.title(
            
            
              "
            
            
              視頻拼接
            
            
              "
            
            
              )

        
            
            
              #
            
            
               顯示片頭路徑文本框
            
            
        self.head_entry =
            
               Entry(self.tk)
        self.head_entry.place(x
            
            =150, y=60, width=300, height=30
            
              )

        
            
            
              #
            
            
               顯示需要添加片頭的視頻路徑文本框
            
            
        self.source_entry =
            
               Entry(self.tk)
        self.source_entry.place(x
            
            =150, y=100, width=300, height=30
            
              )

        
            
            
              #
            
            
               顯示需要添加片尾頭的視頻路徑文本框
            
            
        self.tail_entry =
            
               Entry(self.tk)
        self.tail_entry.place(x
            
            =150, y=140, width=300, height=30
            
              )
        
            
            
              #
            
            
               顯示需要添加片尾頭的視頻路徑文本框
            
            
        self.save_entry =
            
               Entry(self.tk)
        self.save_entry.place(x
            
            =150, y=180, width=300, height=30
            
              )

        self.log_text 
            
            =
            
               Text(self.tk)
        self.log_text.place(x
            
            =60, y=220, width=330, height=100
            
              )

    
            
            
              def
            
            
               show_log(self, info):
        self.log_text.insert(END, 
            
            
              "
            
            
              {} {}\n
            
            
              "
            
            .format(datetime.now().strftime(
            
              "
            
            
              %H:%M:%S
            
            
              "
            
            
              ), info))

    
            
            
              def
            
            
               add_author(self, name, company):
        
            
            
              #
            
            
               添加作者名稱
            
            
        L_author = Label(self.tk, text=f
            
              '
            
            
              作者:{name}
            
            
              '
            
            
              )
        L_author.config(font
            
            =
            
              '
            
            
              Helvetica -10 bold
            
            
              '
            
            , fg=
            
              '
            
            
              #030303
            
            
              '
            
            
              )
        L_author.place(x
            
            =440, y=330
            
              )

        
            
            
              #
            
            
               添加作者公司
            
            
        L_title = Label(self.tk, text=f
            
              '
            
            
              公司:{company}
            
            
              '
            
            
              )
        L_title.config(font
            
            =
            
              '
            
            
              Helvetica -10 bold
            
            
              '
            
            , fg=
            
              '
            
            
              blue
            
            
              '
            
            
              )
        L_title.place(x
            
            =350, y=330
            
              )

    
            
            
              def
            
            
               head_video(self):
        
            
            
              """
            
            
              獲取片頭視頻路徑
            
            
              """
            
            
              #
            
            
               按鈕
            
            
        s_button = Button(self.tk, text=f
            
              '
            
            
              選擇片頭
            
            
              '
            
            , command=
            
              self.get_head_video_path)
        s_button.place(x
            
            =60, y=60
            
              )

    
            
            
              def
            
            
               source_video(self):
        
            
            
              #
            
            
               按鈕
            
            
        s_button = Button(self.tk, text=f
            
              '
            
            
              選擇視頻
            
            
              '
            
            , command=
            
              self.get_source_video_path)
        s_button.place(x
            
            =60, y=100
            
              )

    
            
            
              def
            
            
               tail_video(self):
        
            
            
              #
            
            
               按鈕
            
            
        s_button = Button(self.tk, text=f
            
              '
            
            
              選擇片尾
            
            
              '
            
            , command=
            
              self.get_tail_video_path)
        s_button.place(x
            
            =60, y=140
            
              )

    
            
            
              def
            
            
               save_video(self):
        
            
            
              #
            
            
               按鈕
            
            
        s_button = Button(self.tk, text=f
            
              '
            
            
              保存路徑
            
            
              '
            
            , command=
            
              self.get_save_video_path)
        s_button.place(x
            
            =60, y=180
            
              )

    
            
            
              def
            
            
               get_head_video_path(self):
        
            
            
              #
            
            
               獲取到片頭路徑顯示到文本框
            
            
        head_video_path = filedialog.askopenfilename(title=
            
              "
            
            
              選擇片頭
            
            
              "
            
            
              )
        self.head_entry.delete(0, END)
        self.head_entry.insert(0, head_video_path)

    
            
            
              def
            
            
               get_source_video_path(self):
        
            
            
              #
            
            
               獲取到需要添加片頭的視頻
            
            
        source_video_path = filedialog.askopenfilenames(title=
            
              "
            
            
              選擇視頻
            
            
              "
            
            
              )
        self.source_entry.delete(0, END)
        self.source_entry.insert(0, source_video_path)

    
            
            
              def
            
            
               get_tail_video_path(self):
        
            
            
              #
            
            
               獲取到需要添加片頭的視頻文件夾寫入到文本框
            
            
        tail_video_path = filedialog.askopenfilename(title=
            
              "
            
            
              選擇片尾
            
            
              "
            
            
              )
        self.tail_entry.delete(0, END)
        self.tail_entry.insert(0, tail_video_path)

    
            
            
              def
            
            
               get_save_video_path(self):
        
            
            
              #
            
            
               保存文件的路徑
            
            
        tail_video_path = filedialog.askdirectory(title=
            
              "
            
            
              保存路徑
            
            
              "
            
            
              )
        self.save_entry.delete(0, END)
        self.save_entry.insert(0, tail_video_path)

    
            
            
              def
            
            
               get_all_path(self):
        
            
            
              """
            
            
              從文本框獲取路徑,并判斷是否有傳
            
            
              """
            
            
              
        head_video_path 
            
            =
            
               self.head_entry.get()
        source_video_path 
            
            = [] 
            
              if
            
            
              not
            
             self.source_entry.get() 
            
              else
            
             self.source_entry.get().split(
            
              "
            
            
              "
            
            
              )
        tail_video_path 
            
            =
            
               self.tail_entry.get()
        save_video_path 
            
            =
            
               self.save_entry.get()
        
            
            
              if
            
            
              not
            
             head_video_path 
            
              and
            
            
              not
            
            
               tail_video_path:
            self.show_log(
            
            
              "
            
            
              ERROR:請選擇片頭或片尾
            
            
              "
            
            
              )
            
            
            
              return
            
            
              if
            
            
              not
            
            
               source_video_path:
            self.show_log(
            
            
              "
            
            
              ERROR:請選擇需要加片頭或者片尾的視頻
            
            
              "
            
            
              )
            
            
            
              return
            
            
              if
            
            
              not
            
            
               save_video_path:
            self.show_log(
            
            
              "
            
            
              ERROR:請選擇保存路徑
            
            
              "
            
            
              )
            
            
            
              return
            
            
              
        self.show_log(
            
            
              "
            
            
              INFO:路徑正確
            
            
              "
            
            
              )
        
            
            
              return
            
            
               head_video_path, source_video_path, tail_video_path, save_video_path

    
            
            
              def
            
            
               concat(self):
        
            
            
              #
            
            
               獲取到路徑
            
            
        head_video_path, source_video_path, tail_video_path, save_video_path =
            
               self.get_all_path()

        
            
            
              #
            
            
               先判斷片頭
            
            
              if
            
             head_video_path 
            
              and
            
            
              not
            
             head_video_path.endswith((
            
              '
            
            
              .mp4
            
            
              '
            
            , 
            
              '
            
            
              .mkv
            
            
              '
            
            , 
            
              '
            
            
              .avi
            
            
              '
            
            , 
            
              '
            
            
              .wmv
            
            
              '
            
            , 
            
              '
            
            
              .iso
            
            
              '
            
            
              )):
            self.show_log(
            
            
              "
            
            
              ERROR: 片頭文件不是視頻格式,錯誤文件%s
            
            
              "
            
             %
            
               head_video_path)
        
            
            
              if
            
             tail_video_path 
            
              and
            
            
              not
            
             head_video_path.endswith((
            
              '
            
            
              .mp4
            
            
              '
            
            , 
            
              '
            
            
              .mkv
            
            
              '
            
            , 
            
              '
            
            
              .avi
            
            
              '
            
            , 
            
              '
            
            
              .wmv
            
            
              '
            
            , 
            
              '
            
            
              .iso
            
            
              '
            
            
              )):
            self.show_log(
            
            
              "
            
            
              ERROR: 片尾文件不是視頻格式,錯誤文件%s
            
            
              "
            
             %
            
               head_video_path)
        
            
            
              if
            
            
              not
            
            
               os.path.exists(save_video_path):
            self.show_log(
            
            
              "
            
            
              ERROR: 保存文件路徑不存在
            
            
              "
            
            
              )
            
            
            
              return
            
            
              
        head_video 
            
            =
            
               None
        tail_video 
            
            =
            
               None
        
            
            
              if
            
            
               head_video_path:
            head_video 
            
            = VideoFileClip(head_video_path)  
            
              #
            
            
               加載片頭
            
            
              if
            
            
               tail_video_path:
            tail_video 
            
            = VideoFileClip(tail_video_path)  
            
              #
            
            
               加載片尾
            
            
              for
            
             file 
            
              in
            
            
               source_video_path:
            th 
            
            = Thread(target=self._concat,args=
            
              (file,head_video,tail_video,save_video_path))
            th.start()

    
            
            
              def
            
            
               _concat(self,file,head_video,tail_video,save_video_path):
        file_name 
            
            =
            
               os.path.basename(file)
        self.show_log(
            
            
              "
            
            
              INFO: %s 開始拼接
            
            
              "
            
             %
            
               file_name)
        video_list 
            
            =
            
               []
        
            
            
              if
            
            
              not
            
             file.endswith((
            
              '
            
            
              .mp4
            
            
              '
            
            , 
            
              '
            
            
              .mkv
            
            
              '
            
            , 
            
              '
            
            
              .avi
            
            
              '
            
            , 
            
              '
            
            
              .wmv
            
            
              '
            
            , 
            
              '
            
            
              .iso
            
            
              '
            
            
              )):
            self.show_log(
            
            
              "
            
            
              ERROR: 視頻格式錯誤,錯誤文件%s
            
            
              "
            
             %
            
               file_name)
            
            
            
              return
            
            
              
        video 
            
            = VideoFileClip(file)  
            
              #
            
            
               加載正片
            
            
              #
            
            
               判斷是否有片頭或者片尾,按順序添加
            
            
              if
            
            
               head_video:
            video_list.append(head_video)
        video_list.append(video)
        
            
            
              if
            
            
               tail_video:
            video_list.append(tail_video)
        final_clip 
            
            = concatenate_videoclips(video_list)  
            
              #
            
            
               進行視頻合并
            
            
                      final_clip.write_videofile(os.path.join(save_video_path, file_name))
        final_clip.close()
        self.show_log(
            
            
              "
            
            
              INFO: %s 拼接完成
            
            
              "
            
             %
            
               file_name)

    
            
            
              def
            
            
               start(self):
        
            
            
              #
            
            
               開始拼接
            
            
        s_button = Button(self.tk, text=f
            
              '
            
            
              開始
            
            
              '
            
            , command=
            
              self.concat)
        s_button.place(x
            
            =415, y=220
            
              )

    
            
            
              def
            
            
               run(self):
        self.add_author(
            
            
              "
            
            
              黃貴鋒
            
            
              "
            
            , 
            
              "
            
            
              恒企教育
            
            
              "
            
            
              )
        self.head_video()  
            
            
              #
            
            
               片頭
            
            
                      self.source_video()
        self.tail_video()  
            
            
              #
            
            
               片尾
            
            
        self.save_video()  
            
              #
            
            
               保存位置
            
            
        self.start()  
            
              #
            
            
               點擊啟動按鈕
            
            
                      self.tk.mainloop()



            
            
              if
            
            
              __name__
            
             == 
            
              '
            
            
              __main__
            
            
              '
            
            
              :
    app 
            
            =
            
               App()
    app.run()
            
          

?


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 安多县| 杭州市| 高陵县| 阳原县| 色达县| 霍州市| 辛集市| 克拉玛依市| 浦江县| 周口市| 陈巴尔虎旗| 九江县| 乐亭县| 娄底市| 北京市| 新蔡县| 瑞丽市| 顺昌县| 县级市| 巴南区| 若尔盖县| 中阳县| 宣城市| 自治县| 河池市| 德钦县| 合川市| 新蔡县| 湖州市| 哈尔滨市| 祁东县| 琼海市| 合川市| 嵊泗县| 黔东| 平南县| 凤阳县| 两当县| 武隆县| 兴隆县| 宝应县|