亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Python實現視頻片頭和片尾添加

系統 2056 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()
            
          

?


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

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

【本文對您有幫助就好】

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

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 久久麻豆视频 | 久久艹在线观看 | 天天干夜夜操视频 | 中文字幕av在线 | 成人久久久精品乱码一区二区三区 | 最新精品亚洲成a人在线观看 | 亚洲字幕久久 | 久久这里只有精品23 | 久草美女| 亚洲国产欧美在线人成 | 亚洲欧美一级久久精品 | 四虎影院免费观看视频 | 日日爽夜夜操 | 天堂毛片 | 精品精品国产自在久久高清 | 草逼com| 欧美日韩生活片 | 欧美激情伦妇在线观看 | 午夜一区二区在线观看 | 日韩亚洲欧美在线爱色 | 四虎国产在线观看 | 国产v片成人影院在线观看 国产v视频 | 国产精欧美一区二区三区 | 午夜主播国产福利视频在线 | 黄色在线免费观看网站 | 亚洲国产欧美日韩一区二区三区 | 日产精品一区二区 | 欧美一级视 | 精品玖玖玖视频在线观看 | 99视频精品全部免费观看 | 亚洲欧美天堂网 | 亚洲人成一区二区三区 | 日产精品一区二区 | 日本精品高清一区二区2021 | 亚洲视频在线免费看 | 亚洲综合色秘密影院秘密影院 | 久草视频免费在线播放 | 亚洲精品一区二区中文 | 香蕉在线观看999 | 国产老熟 | 久久精品国产免费 |