<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          超美!教你用Python拍攝游戲延時(shí)攝影

          共 3189字,需瀏覽 7分鐘

           ·

          2022-03-26 18:20

          使用Python拍攝的《地平線4》延時(shí)攝影作品

          這個(gè)時(shí)代,隨著游戲引擎技術(shù)的快速發(fā)展,游戲畫(huà)面越來(lái)越精美,許多人迷上了游戲內(nèi)的角色、場(chǎng)景。

          尤其是端游,顯卡技術(shù)能夠支撐精美的游戲畫(huà)面,最有名的莫過(guò)于《地平線》系列游戲。

          很多玩家希望拍攝這些精美游戲中的畫(huà)面,尤其是希望能拍攝到游戲內(nèi)不同時(shí)刻的畫(huà)面,為了滿足這個(gè)需求,我們就需要用上延時(shí)攝影。游戲內(nèi)的時(shí)間過(guò)得比現(xiàn)實(shí)世界更快,一個(gè)小時(shí)內(nèi)可能你就能經(jīng)歷白天的夜晚的變化,這也為延時(shí)攝影提供了很好的環(huán)境。

          那么究竟怎么在拍攝中實(shí)現(xiàn)延時(shí)的效果呢?方法大致有兩種,最簡(jiǎn)單的可以先錄制視頻,然后用后期剪輯軟件或者特效軟件通過(guò)丟幀的方法實(shí)現(xiàn),但這樣一來(lái)便造成了巨大的浪費(fèi)。拍幾個(gè)小時(shí)的視頻,如果通過(guò)丟幀實(shí)現(xiàn)延時(shí)效果,最后轉(zhuǎn)換為幾十分鐘的片段,那么被丟掉的幀就要比最后留下的多得多。如果要實(shí)現(xiàn)更高速的畫(huà)面運(yùn)動(dòng),這種浪費(fèi)無(wú)疑將會(huì)被更加擴(kuò)大。

          本篇教程介紹第二種方法,定時(shí)截圖的形式,我們將結(jié)合前面Python實(shí)用寶典使用過(guò)的三個(gè)模塊——moviepy、win32gui 及 PIL 為大家講解如何使用Python在游戲中實(shí)現(xiàn)延時(shí)攝影,我還將教你如何將圖片拼接成視頻、添加背景音樂(lè)一條龍操作。

          1.準(zhǔn)備



          開(kāi)始之前,你要確保Python和pip已經(jīng)成功安裝在電腦上,如果沒(méi)有,可以訪問(wèn)這篇文章:超詳細(xì)Python安裝指南?進(jìn)行安裝。

          (可選1)?如果你用Python的目的是數(shù)據(jù)分析,可以直接安裝Anaconda:Python數(shù)據(jù)分析與挖掘好幫手—Anaconda,它內(nèi)置了Python和pip.

          (可選2)?此外,推薦大家用VSCode編輯器,它有許多的優(yōu)點(diǎn):Python 編程的最好搭檔—VSCode 詳細(xì)指南。

          請(qǐng)選擇以下任一種方式輸入命令安裝依賴
          1. Windows 環(huán)境 打開(kāi) Cmd (開(kāi)始-運(yùn)行-CMD)。
          2. MacOS 環(huán)境 打開(kāi) Terminal (command+空格輸入Terminal)。
          3. 如果你用的是 VSCode編輯器 或 Pycharm,可以直接使用界面下方的Terminal.

          pip install?moviepy
          pip install?pypiwin32
          pip install?pillow


          本文所有代碼均開(kāi)源在:https://github.com/Ckend/python-time-lapse-photo 倉(cāng)庫(kù),如果你無(wú)法訪問(wèn)GitHub,也可以在Python實(shí)用寶典后臺(tái)回復(fù)?延時(shí)攝影?下載。


          2.定時(shí)"拍攝"



          為了實(shí)現(xiàn)定時(shí)拍攝的邏輯,我們需要用到pypiwin32模塊和pillow模塊,在之前的這篇文章中有介紹過(guò):

          超方便的 Python 自動(dòng)喚醒窗口截圖腳本

          分為三個(gè)步驟:

          1. 獲得游戲窗口界面

          2. 獲得游戲界面大小

          3. 截圖

          每隔N秒定時(shí)循環(huán)執(zhí)行以上三個(gè)步驟,代碼如下:

          # main.py
          # Python實(shí)用寶典
          # 2022-03-25
          import?time
          import?win32gui
          from?PIL import?ImageGrab


          def?get_window_pos(name):
          ????name = name
          ????handle = win32gui.FindWindow(0, name)
          ????if?handle == 0:
          ????????return?None
          ????else:
          ????????return?win32gui.GetWindowRect(handle), handle

          while?True:
          ????try:
          ????????(x1, y1, x2, y2), handle = get_window_pos('極限競(jìng)速:地平線 4')
          ????????win32gui.SetForegroundWindow(handle)
          ????????img_ready = ImageGrab.grab((x1, y1, x2, y2))
          ????????img_ready.save(f"./result/{time.time()}.jpg")
          ????????time.sleep(5)
          ????except?Exception as?e:
          ????????print(e)


          請(qǐng)注意,"極限競(jìng)速:地平線 4" 要改成你對(duì)應(yīng)拍攝的游戲名稱,這樣,運(yùn)行程序后就會(huì)自動(dòng)在result文件夾下定時(shí)生成截圖:

          a3ec80b29e557727b6601d60860d0d79.webp


          成功截取你想要的時(shí)間段的場(chǎng)景圖片后,就可以進(jìn)行下面的拼接和補(bǔ)充背景音樂(lè)部分。

          3.拼接延時(shí)攝影視頻



          為了達(dá)到延時(shí)攝影的效果,我們?cè)谶@一部分中將使用moviepy模塊,拼接所有圖片到一個(gè)視頻中。

          當(dāng)然還要補(bǔ)充背景音樂(lè),代碼其實(shí)非常簡(jiǎn)單,調(diào)用了部分moviepy模塊的功能:

          # jointer.py
          # Python實(shí)用寶典
          # 2022-03-25
          import?os
          import?moviepy
          import?moviepy.video.io.ImageSequenceClip
          from?moviepy.editor import?*

          def?pics2video(frames_dir, video_dst, music, fps=10):
          ????"""
          ????圖片合成MP4

          ????Args:
          ????????frames_dir (str): 圖片目錄
          ????????video_dst (str): 目標(biāo)目錄
          ????????fps (int, optional): 幀數(shù). Defaults to 25.
          ????"""

          ????frames_name = sorted(os.listdir(frames_dir))
          ????frames_path = [frames_dir+frame_name for?frame_name in?frames_name]
          ????clip = moviepy.video.io.ImageSequenceClip.ImageSequenceClip(frames_path, fps=fps)
          ????
          ????audio_clip = AudioFileClip(music).volumex(0.5)
          ????audio = afx.audio_loop( audio_clip, duration=clip.duration)
          ????final_video = clip.set_audio(audio)

          ????final_video.write_videofile(video_dst, codec='libx264')

          music = '打上花火.mp3'
          frames_dir = './result/'
          video_dst = 'screenshots.mp4'
          pics2video(frames_dir, video_dst, music)


          1.將你的音樂(lè)放在當(dāng)前目錄下,修改music變量為對(duì)應(yīng)的文件名。

          2.調(diào)整你想要的fps參數(shù)——幀數(shù),這個(gè)值越低,畫(huà)面越順暢。

          運(yùn)行此文件后就會(huì)在當(dāng)前文件夾下生成 'screenshots.mp4'. 這個(gè)就是我們的處理結(jié)果了,雙擊打開(kāi)試試吧:


          本文所有代碼均開(kāi)源在:https://github.com/Ckend/python-time-lapse-photo?倉(cāng)庫(kù),如果你無(wú)法訪問(wèn)GitHub,也可以在Python實(shí)用寶典后臺(tái)回復(fù)?延時(shí)攝影?下載。


          我們的文章到此就結(jié)束啦,如果你喜歡今天的Python 實(shí)戰(zhàn)教程,請(qǐng)持續(xù)關(guān)注Python實(shí)用寶典。

          有任何問(wèn)題,可以在公眾號(hào)后臺(tái)回復(fù):加群,回答相應(yīng)紅字驗(yàn)證信息,進(jìn)入互助群詢問(wèn)。

          原創(chuàng)不易,希望你能在下面點(diǎn)個(gè)贊和在看支持我繼續(xù)創(chuàng)作,謝謝!

          點(diǎn)擊下方閱讀原文可獲得更好的閱讀體驗(yàn)

          Python實(shí)用寶典?(pythondict.com)
          不只是一個(gè)寶典
          歡迎關(guān)注公眾號(hào):Python實(shí)用寶典

          瀏覽 67
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  美女张开腿让男人捅视频 | 欧美一级黃色a片免费看视频 | 久久一级视频 | 婷婷好色五月天 | 国产精品视频免费看 |