視頻轉gif動畫或jpg圖片的工具開發案例

2020-12-04 老猿Python

一、引言

老猿之所以學習和研究Moviepy的使用,是因為需要一個將視頻轉成動畫的工具,當時在網上到處搜索查找免費使用工具,結果找了很多自稱免費的工具,但轉完GIF後都會在動畫中打上對應工具的顯著廣告或Logo,根本沒法將轉換後的動畫發布。如是想到了萬能的Python,就找到了moviepy,沒費多少時間就搞定了,因此萌發了學習和研究Moviepy的興趣。本文利用前面介紹的知識來開發一個windows下圖形化的視頻轉GIF或圖片的工具。

二、背景知識介紹

1、視頻轉gif或圖片會用到《moviepy音視頻剪輯:視頻剪輯基類VideoClip的屬性及方法詳解》、《moviepy音視頻剪輯:視頻剪輯基類VideoClip詳解》介紹的write_images_sequence和write_gif方法,具體內容在此就不贅述了;2、圖形化工具開發會用到專欄《使用PyQt開發圖形界面Python應用》或《PyQt入門知識》的知識;3、打包生成exe會用到《PyQt(Python+Qt)學習隨筆:windows下使用pyinstaller將PyQt文件打包成exe可執行文件》介紹的方法進行打包;4、程序的框架與《PyQt+moviepy音視頻剪輯實戰1:多視頻合成順序播放或同屏播放的視頻文件》、《PyQt+moviepy音視頻剪輯實戰2:實現一個剪裁視頻文件精華內容留存工具》或《PyQt+moviepy音視頻剪輯實戰1:多個音視頻合成順序播放或同屏播放的視頻文件實現詳解》、《PyQt+moviepy音視頻剪輯實戰2:一個剪裁視頻文件精華內容留存工具的實現》相同。

三、圖形界面設計

本程序的界面框架除了主界面之外的部分都是復用《PyQt+moviepy音視頻剪輯實戰1:多個音視頻合成順序播放或同屏播放的視頻文件實現詳解》、《PyQt+moviepy音視頻剪輯實戰1:多視頻合成順序播放或同屏播放的視頻文件》的公用框架。

主界面如下:

四、代碼實現

4.1、主界面類及構造方法

class mainWin(QtWidgets.QMainWindow,ui_mainWin.Ui_MainWindow): def __init__(self): super().__init__() self.setupUi(self) self.initValues() self.initSignalAndSlots() self.initPublicFrame()1234567894.2、槽和信號連接方法initSignalAndSlots

def initSignalAndSlots(self): self.btn_choiceSrc.clicked.connect(self.chooseFile) self.videoFile.textChanged['QString'].connect(self.fileNameInputed) self.btn_choiceDest.clicked.connect(self.chooseFile) self.action2Gif.triggered.connect(self.convert) self.action2Img.triggered.connect(self.convert)12345674.3、視頻轉換方法

def convertByMoviepy(self,srcFile,destFile,toGif): destFileName,destFileType = destFile.rsplit('.',1) if toGif: destFileType = '.gif' else: destFileType = '.jpg' destFile = destFileName+destFileType print("convertUseMoviepy start:",srcFile,'-->',destFile) try: start = int(self.startPos.text().strip(' \r\n\t')) end = int(self.endPos.text().strip(' \r\n\t')) vfps = int(self.fps.text()) except Exception as e: print("輸入了非法的數字字符,不能轉換:",e) return try: if end: if start>end: print("指定視頻開始位置大於結束位置,不能轉換") return cache = mpe.VideoFileClip(srcFile).subclip(start, end) else:cache = mpe.VideoFileClip(srcFile) except Exception as e: info = f"視頻文件無法讀取,可能是因為格式不支持:{e}" print(info) print("任務無法執行!") return if vfps<1 or vfps>30:vfps = 2 if not toGif: imgCount = len(str(vfps*(end-start+1)))+1 format = f"_%0{imgCount}d" destFileFormat = destFileName +format+ destFileType fileFormat = '_'+'X'*imgCount destFileFormatName = destFileName +fileFormat+ destFileType try: if toGif: cache.write_gif(destFile,fps=vfps) else: cache.write_images_sequence(destFileFormat,vfps) except Exception as e: if toGif: print(f"視頻{srcFile}轉換gif失敗:", e) else: print(f"視頻{srcFile}轉換圖片失敗:", e) else: if toGif: print(f"視頻{srcFile}轉換gif成功,結果保存在{destFile}中") else: print(f"視頻{srcFile}轉換圖片成功,結果保存在{destFileFormatName}中") cache.close()五、運行界面

5.1、初始主界面

5.2、進行視頻轉換的運行過程界面

這是從F:\video\zbl1.mp4視頻轉成一系列圖片輸出,每秒取一幀圖片保存,每個圖片的名字是輸出文件名加序號再加後綴的形式,如zbl1_09.jpg,第一張序號為0,即zbl1_00.jpg,序號的長度根據生成圖片的視頻需要生成的文件數來決定,超過100個就是3位、超過1000個就是4位…。

六、打包成windows執行文件

使用《PyQt(Python+Qt)學習隨筆:windows下使用pyinstaller將PyQt文件打包成exe可執行文件》介紹的方法進行打包。

老猿的工程包含了兩個公共框架目錄,因此打包使用如下命令:

pyinstaller video2Gif.py -w -p F:\coffeDog\loadApp2 -p F:\coffeDog\captureStdout2>log.txt注意:moviepy的包必須使用《關於moviepy打包報錯AttributeError: module audio/video.fx.all has no attribute fadein、crop文章的糾錯和抄襲》修改了的文件,否則打包執行會報錯。

在win7、win10上可運行的可執行程序包已經上傳到百度雲,大家可以下載下來長期免費使用。具體下載地址為百度網盤。

連結:https:///s/1UNaA2UqQBoxx-v8rCIPDhA

提取碼:yh2d

選擇該連結下的:視頻轉圖片和動畫工具V2.0.rar即可,下載後解壓到指定目錄後,選擇exe文件直接執行即可。不過使用該工具會自動打開老猿的博客請大家點讚,敬請大家支持,謝謝。

注意:

百度雲上分享的《咖啡狗免費工具軟體共享空間》下的不同軟體安裝時必須解壓到不同目錄,如果解壓到同一目錄可能有衝突導致不能正常運行,但解壓後遵循如下要求可以將其聚合到同一個目錄:

放置到同一目錄的不同軟體的版本必須相同,版本為壓縮文件名中VX.X標註;聚合拷貝時除拷貝執行文件外,還有resource目錄必須拷貝,如果resource目錄下有相同文件名可以覆蓋;聚合拷貝exe文件和resource目錄及其下文件到其他已解壓工具目錄後,源目錄可以刪除。更多moviepy的介紹請參考《PyQt+moviepy音視頻剪輯實戰文章目錄》或《moviepy音視頻開發專欄》。

更多內容請大家到CSDN官網「老猿Python」博客或「老猿Python」微信公眾號上查看。

相關焦點

  • 視頻如何轉gif圖片?在線視頻GIF生成的操作方法
    在日常生活中,每天都會看到許多不同類型的視頻,那麼如果想將這些視頻轉換成gif圖片的話,怎樣才能快速完成視頻轉gif操作呢?下面給大家分享一下款gif動畫在線製作工具,在線製作動態圖片,通過簡單的操作步驟,就能夠將視頻快速轉換為gif動圖,以下為小編給大家分享的使用方法,快來看一下如何操作吧。點擊導航欄中的gif工具,選擇視頻轉gif功能。點擊選擇視頻,將想要截取片段的視頻上傳到網站。
  • 視頻轉gif:在線視頻轉gif動態圖片的方法
    有的時候我們想要將視頻轉換成gif動圖,但是視頻轉動態圖片怎麼轉?方法很簡單,在線幾步輕鬆完成!這也是小編今天才發現的一個方法,使用到的工具是迅捷pdf在線轉換器,只需要簡單的幾步就可以將視頻轉gif,話不多說,下面將詳細的步驟分享給大家。
  • 視頻能轉gif嗎?視頻片段在線轉化gif的技巧
    如何將好玩的視頻或者動畫轉化成gif呢?相信很多的小夥伴們在日常生活中都喜歡在聊天的時候發送一些有趣的gif動態圖片,提升彼此之間的聊天氛圍的趣味性和愉悅性,並且使用動態圖片能夠讓對方在短時間內產生比較深刻的記憶。
  • 想要製作自己的GIF動畫,這些好用的GIF處理工具千萬別錯過~
    它製作動畫贈品,每幀使用數千種顏色,強大的功能搭配簡便的操作,真真是完美,想要的來一起了解吧~想要製作自己的GIF動畫,這些好用的GIF處理工具千萬別錯過~Gifski for mac(視頻轉gif工具)Gifski將視頻轉換為高質量的gif。
  • mp4轉gif可以嗎?怎麼把視頻轉成動圖?
    乍一看,gif和MP4文件還挺像的,都是以動畫的形式來呈現的,但是實際上,兩種文件之間卻有很大的不同之處,gif再怎麼會動也是一張圖片,而MP4則終究是視頻。如此大的區別,那麼gif和MP4是不是永遠都沒辦法畫上一個等號呢?
  • png圖片怎樣轉換成jpg格式?利用什麼工具能實現
    圖片格式有很多種,據小編知道的就有jpg, png, gif, jpeg, bmp, webp, pcx, tiff, tga, exif, svg, psd......那麼多。那麼在這麼多的格式中,你一定遇到過需要將格式轉成其他格式的情況吧!
  • 視頻轉gif用什麼工具?這個方法就助你轉換視頻格式
    視頻轉gif用什麼工具?平時我們利用社交工具聊天的時候經常會互相發一些動態表情包增添樂趣,有很多小夥伴在看到一些視頻片段時也想將其製作成表情包分享給別人。那你知道該怎麼把視頻轉gif製作動態圖呢?下面小編總結了兩種視頻轉gif的方法給你們參考哦。
  • 視頻轉gif,gif合成,gif剪輯,只要一招都搞定!
    在公眾號文章中使用動圖已經是大勢所趨,不管是哪一篇文章多多少少都會有動圖的身影,有的是從視頻中截取的,有的是自己合成製作的,還有的是剪輯出來的,只要能夠契合文章的內容,就能讓文章增色不少,看起來也會輕鬆一些。那麼視頻轉gif,圖片合成gif,gif剪輯是不是非常麻煩呢?
  • 如何製作gif格式動態圖片?如何把短視頻做成gif動圖?
    gif動圖一般帶給大家都是比較愉悅好玩的感覺,而且動圖的類型也有很多種,比如閃圖,動畫,電視劇或者電影片段等等,都是非常常見的動圖類型。如果想要親自動手製作這種視頻類型的動圖該怎樣來進行操作呢?下面給大家分享一下gif動態圖片製作的方法,通過截取視頻轉gif動圖,一起來看一下具體的操作過程。點擊導航欄中的gif工具,選擇視頻轉gif功能。點擊選擇視頻,將想要截取片段的視頻上傳到網站。找到視頻截取的第一個畫面,選擇為開始時間,選擇截取的時長,最大支持15秒視頻截取,根據使用需求來選擇尺寸,點擊生成gif按鈕。
  • ScreenToGif動畫錄製,Bandicam視頻錄製工具下載
    博主在分享一些軟體安裝過程中苦於乜有一款強大的Gif動畫錄製的軟體,總是使用語言性的文字在描述整個過程,顯然這樣的方式很不容易讓用戶更加容易的上手,此時若有一張gif動畫的安裝教程那不就是方便很多了嗎!今天就為大家尋到了這樣的兩種工具,Gif動畫錄製工具,遊戲視頻錄製工具的下載。
  • 視頻轉gif動態圖,一個實用工具秒完成!
    今年元旦我親愛的大姐結婚了,婚禮上我們給她拍攝了很多小視頻,上婚車、走紅毯、敬酒、跳舞等每一part都留下了珍貴的影片。最近我們無聊之餘拿出來翻看,覺得其中一些小片段很適合轉為gif動態圖,可用什麼軟體比較好呢?
  • 一款集GIF製作、視頻轉GIF、錄屏等功能於一身的工具
    哈嘍~小夥伴們早上好呀,小編最近追了一步甜甜的劇,心情也美滋滋,今天決定給大家分享一個追劇法寶,也是我們辦公的好幫手,它就是集齊GIF製作、視頻轉GIF、錄屏、壓縮等功能的GIF製作軟體啦!小編親測好用哦,話不多說,下面我們就來看看這個GIF製作軟體怎麼操作吧。
  • 視頻怎麼轉gif動畫?這款軟體很6,一鍵免費製作高級動圖
    視頻怎麼轉gif動畫?從事創意內容運營的小夥伴們應該知道,與冗長的視頻相比較,gif動畫更能吸引到人們的目光。迅捷視頻轉換器功能多樣,可以一鍵免費製作出高級gif動圖。想要get到視頻轉gif技能的話,接著往下看,大家便能找到滿意的答案哦。在軟體首頁選擇【視頻轉gif】功能以後,進入相應操作頁面。頁面左邊的功能分類欄,大家可以隨時選擇需要的視頻轉換、編輯功能。頁面右邊是文件添加區,點擊相應按鈕便可把需要轉換為gif動態圖片的視頻文件添加進來。
  • 視頻轉換器怎麼將視頻轉gif?給大家分享一種好用的方法
    視頻轉換器怎麼將視頻轉gif?說到視頻轉換器,很多的小夥伴覺得就是將一種視頻格式轉換為另一種視頻格式的工具,其實我們經常使用的gif動態圖片也可以使用視頻轉換器轉換出來的。大家是不是很好奇怎麼轉換的呢?今天就給大家分享一下。
  • 怎麼製作gif動態表情包?教你把視頻轉gif的方法
    怎麼製作gif動態表情包?表情包作為『第五大發明』受到越來越多人的喜愛,尤其是gif動態表情包在社交中更是必不可少的。那如果你看到一個適合製作動態表情包的視頻時你知道該怎麼去製作嗎?下面分享一個把視頻轉gif的方法。
  • Mac好用的視頻轉gif軟體v1.2激活版
    GIF『ted Mac是一款視頻轉gif軟體。GIF『ted Mac可以將你的電影編程動畫GIF,支持循環或非循環的輸出。通過GIF『ted Mac版使用經典的調色板,例如Gameboy或SNES,可以獲得古怪而有趣的結果。測試環境:MacOS 10.15.3
  • 視頻轉gif怎麼轉?把視頻轉換成動態圖表情包的方法
    視頻轉gif怎麼轉?相信很多小夥伴在利用社交軟體聊天的時候都喜歡發送一些gif動態圖給對方為聊天增加些許樂趣,除此之外有趣的gif動態圖表情包也能在短時間之內迅速傳播讓人記憶深刻。那你知道怎麼把視頻轉gif把視頻中比較有趣的片段提取出來呢?
  • mp4轉gif可以嗎?這個視頻轉換器值得你試試!
    眾所周知,mp4是網絡上一種較為常見的視頻格式,支持在很多不同的平臺、設備上打開、播放並且使用它。那麼,大家知道怎麼把mp4格式視頻轉換成為gif動態表情包嗎?聽到這裡,估計很多小夥伴是摸不著頭腦的,對這個操作感到懵懂。
  • 如何使用視頻轉換器進行視頻轉gif處理
    如何使用視頻轉換器進行視頻轉gif處理?gif動態圖作為表情包的一種深受用戶的喜愛,gif動態表情包相比傳統靜態表情包的優勢在於,動態表情包能更深層次的表達出我們想要表述的內容。而gif通常是由視頻轉換而來的,那你知道如何使用視頻轉換器把視頻轉換成gif格式呢?
  • gif動畫製作軟體有哪些 GIF動畫製作軟體推薦
    首先就要選擇一個合適的gif動畫圖! GIF動畫製作軟體推薦 一、Screen To Gif Screen to Gif是一款方便可靠的gif動畫錄製軟體,可以用   原標題:gif動畫製作軟體有哪些 GIF動畫製作軟體推薦   gif動畫製作軟體有哪些?