最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

利用Python輕松實現(xiàn)視頻轉(zhuǎn)GIF動圖

 更新時間:2022年01月24日 14:34:28   作者:可以叫我才哥  
在看視頻的時候覺得某段非常有意思想弄成動圖,但是無從下手!本文就將介紹如何利用Python搞定這一需求,感興趣的小伙伴可以學(xué)習(xí)一下

前言

不知道大家是不是有過類似的經(jīng)歷,在看視頻的時候覺得某段非常有意思想弄成動圖,但是無從下手! 或可以在網(wǎng)上找一些在線工具但是多多少少需要付費或者帶有水印之類的,那么???

對,今天我們就來學(xué)習(xí)用Python搞定這一需求吧!

動圖效果

1. 準(zhǔn)備工作

需要準(zhǔn)備用于生成gif的視頻文件,我這里用的是上次《用Python制作一個B站視頻下載小工具》里案例中的視頻。另外,就是需要用到moviepy庫,關(guān)于這個庫更詳細(xì)的介紹可以查看它的官方文檔。

https://zulko.github.io/moviepy/

命令行鍵入pip安裝吧

pip install moviepy

這就搞定第1步了!

2. 初探

這一步也是我們開篇第一張動圖的制作腳本。

from moviepy.editor import *

video_path = "F:\PythonCool\視頻\【咒術(shù)回戰(zhàn)】第20集五條悟帥的有些過分了.mp4"
video = VideoFileClip(video_path)
clip = (video.subclip((2,4.5),(2,6.0))
        .resize(0.2))
clip.write_gif("動圖搞定了.gif",fps=8)

我們原始視頻素材是尺寸1920*1080,幀率是30。

視頻屬性

本次轉(zhuǎn)動圖的參數(shù)設(shè)定如下:

subclip((2,4.5),(2,6.0)選取的是整個視頻從2.45秒到2.60秒

resize(0.2)尺寸大小改為原始大小的0.2也就是1/5大?。ó吘箘訄D尺寸大小其文件大小也太大)

write_gif("動圖搞定了.gif",fps=8)保存gif的時候?qū)收{(diào)整為了8

基于上述參數(shù)設(shè)定下,這個動圖一共其實是(2.60-2.45)*8=12張圖構(gòu)成!

動圖屬性

3. 截取區(qū)域轉(zhuǎn)動圖

有時候我們可能只需要截取屏幕中指定矩形區(qū)域來進行動圖的制作,這就要用到crop函數(shù)截圖區(qū)域了。

video.crop(
    x1=None,
    y1=None,
    x2=None,
    y2=None,
    width=None,
    height=None,
    x_center=None,
    y_center=None,
)

參數(shù):

x1、y1:矩形區(qū)域左上角坐標(biāo)

x2y2:矩形區(qū)域右下角坐標(biāo)

width、height:是寬度和高度

x_center、y_center:表示x1的坐標(biāo)為x_center-width/2,x2的坐標(biāo)為x_center+width/2,y_center類似處理

比如,我們截圖人物所在區(qū)域制作動圖代碼如下:

crop = (video.subclip((2,4.5),(2,6.0))
        .resize(0.2)
        .crop(x1=70,y1=0, x2=310,y2=216)) 
crop.write_gif("裁剪.gif",fps=8)

裁剪

這里關(guān)于左上角和右下角坐標(biāo)的確定可以采用preview方法預(yù)覽視頻,然后鼠標(biāo)點擊對應(yīng)位置來獲取。

video.resize(0.2).preview()

4. 固定區(qū)域轉(zhuǎn)動圖

對于上面那個動圖中 的搞定了,我們希望它常駐,那么可以通過截圖搞定了出現(xiàn)這一時刻的內(nèi)容,然后覆蓋到原來位置常駐即可。

snapshot = (crop
            # 截圖區(qū)域
            .crop(x1=100,y1=190, x2=140,y2=216) 
            # 截取的時間段(1秒的時候)
            .to_ImageClip(1)
            # 設(shè)置位置(左上角,和截取區(qū)域的左上角一致)
            .set_position((100, 190))
            .set_duration(crop.duration))
# 合并
composition = CompositeVideoClip([crop, snapshot])
composition.write_gif('覆蓋.gif', fps=8)

覆蓋

5. 添加自定義文本

對于上面這個操作,我們還有很多方法來完成,比如用一張帶有搞定了的圖片去覆蓋(和上面的案例類似,只是不需要單獨截圖而是讀取一張現(xiàn)成的);另外,我們還可以通過添加蒙版再加上自定義文字的形式來玩。

from moviepy.video.VideoClip import TextClip

# 蒙版
mask = (# 長寬為40*20的顏色為黑色的mask
     ColorClip((40, 20), (0, 0, 0))
     # 設(shè)置位置(同第4節(jié))
        .set_pos((100, 190))
        .set_duration(crop.duration)
        )
# 文字
text = (TextClip("搞定啦",
                 fontsize=30, color='white',
                 font='SimHei', interline=-25)
        .set_pos((80, 160))
        .set_duration(crop.duration))

composition = CompositeVideoClip([crop, mask, text])
composition.write_gif('覆蓋.gif', fps=8)

自定義文本

到此這篇關(guān)于利用Python輕松實現(xiàn)視頻轉(zhuǎn)GIF動圖的文章就介紹到這了,更多相關(guān)Python視頻轉(zhuǎn)GIF內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python中unittest用法實例

    Python中unittest用法實例

    這篇文章主要介紹了Python中unittest用法,較為詳細(xì)的講述了unittest中相關(guān)函數(shù)的用法及完整實例,需要的朋友可以參考下
    2014-09-09
  • 解決pytorch GPU 計算過程中出現(xiàn)內(nèi)存耗盡的問題

    解決pytorch GPU 計算過程中出現(xiàn)內(nèi)存耗盡的問題

    今天小編就為大家分享一篇解決pytorch GPU 計算過程中出現(xiàn)內(nèi)存耗盡的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • DataFrame:通過SparkSql將scala類轉(zhuǎn)為DataFrame的方法

    DataFrame:通過SparkSql將scala類轉(zhuǎn)為DataFrame的方法

    今天小編就為大家分享一篇DataFrame:通過SparkSql將scala類轉(zhuǎn)為DataFrame的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • Python使用numpy模塊實現(xiàn)矩陣和列表的連接操作方法

    Python使用numpy模塊實現(xiàn)矩陣和列表的連接操作方法

    今天小編就為大家分享一篇Python使用numpy模塊實現(xiàn)矩陣和列表的連接操作方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-06-06
  • 基于Python制作ASCII碼轉(zhuǎn)換器

    基于Python制作ASCII碼轉(zhuǎn)換器

    ASCII碼是基于拉丁字母的一套電腦編碼系統(tǒng),主要用于顯示現(xiàn)代英語和其他西歐語言。本文將利用Python制作一個ASCII碼轉(zhuǎn)換器,感興趣的可以動手試一試
    2022-02-02
  • 如何在Anaconda中打開python自帶idle

    如何在Anaconda中打開python自帶idle

    這篇文章主要介紹了如何在Anaconda中打開python自帶idle,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • python繪制二維直方圖的代碼實現(xiàn)

    python繪制二維直方圖的代碼實現(xiàn)

    本文主要介紹了python繪制二維直方圖的代碼實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • 零基礎(chǔ)寫python爬蟲之HTTP異常處理

    零基礎(chǔ)寫python爬蟲之HTTP異常處理

    我們在使用爬蟲來抓取網(wǎng)頁內(nèi)容的時候,HTTP異常是必須要注意的一項,所以本文,我們來詳細(xì)探尋一下HTTP異常處理的相關(guān)內(nèi)容,通過一些具體的實例來分析一下,非常的簡單,但是卻很實用。
    2014-11-11
  • pycharm遠(yuǎn)程調(diào)試openstack的圖文教程

    pycharm遠(yuǎn)程調(diào)試openstack的圖文教程

    這篇文章主要為大家詳細(xì)介紹了pycharm遠(yuǎn)程調(diào)試openstack的圖文教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • Python 實現(xiàn)數(shù)據(jù)庫(SQL)更新腳本的生成方法

    Python 實現(xiàn)數(shù)據(jù)庫(SQL)更新腳本的生成方法

    當(dāng)我們需要準(zhǔn)備更新腳本的使用,不小心會忘記改動了哪里,所以小編試著用Python來實現(xiàn)自動的生成更新腳本,具體操作方法,大家參考下本文吧
    2017-07-07

最新評論

刚察县| 宁城县| 桦川县| 县级市| 合阳县| 五常市| 买车| 南平市| 西藏| 越西县| 宁强县| 开化县| 青海省| 开封市| 井研县| 红桥区| 镇安县| 青河县| 重庆市| 拉孜县| 隆回县| 康平县| 灵石县| 麦盖提县| 宁晋县| 千阳县| 涪陵区| 伊金霍洛旗| 合山市| 连城县| 澜沧| 阿合奇县| 会理县| 古田县| 新巴尔虎左旗| 阿拉善盟| 贺兰县| 宜城市| 金秀| 汉寿县| 贡觉县|