<acronym id="s8ci2"><small id="s8ci2"></small></acronym>
<rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
<acronym id="s8ci2"></acronym>
<acronym id="s8ci2"><center id="s8ci2"></center></acronym>
0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何使用Python在游戲中實現延時攝影

科技綠洲 ? 來源:Python實用寶典 ? 作者:Python實用寶典 ? 2023-10-30 09:52 ? 次閱讀

這個時代,隨著游戲引擎技術的快速發展,游戲畫面越來越精美,許多人迷上了游戲內的角色、場景。

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

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

那么究竟怎么在拍攝中實現延時的效果呢?方法大致有兩種,最簡單的可以先錄制視頻,然后用后期剪輯軟件或者特效軟件通過丟幀的方法實現,但這樣一來便造成了巨大的浪費。拍幾個小時的視頻,如果通過丟幀實現延時效果,最后轉換為幾十分鐘的片段,那么被丟掉的幀就要比最后留下的多得多。如果要實現更高速的畫面運動,這種浪費無疑將會被更加擴大。

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

1.準備

開始之前,你要確保Python和pip已經成功安裝在電腦上,如果沒有,可以訪問這篇文章:超詳細Python安裝指南 進行安裝。

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

**(可選2) **此外,推薦大家用VSCode編輯器,它有許多的優點:Python 編程的最好搭檔—VSCode 詳細指南。

請選擇以下任一種方式輸入命令安裝依賴

  1. Windows 環境 打開 Cmd (開始-運行-CMD)。
  2. MacOS 環境 打開 Terminal (command+空格輸入Terminal)。
  3. 如果你用的是 VSCode編輯器 或 Pycharm,可以直接使用界面下方的Terminal.
pip install moviepy
pip install pypiwin32
pip install pillow

本文所有代碼均開源在:https://github.com/Ckend/python-time-lapse-photo 倉庫,如果你無法訪問GitHub,也可以在Python實用寶典后臺回復 延時攝影 下載。

2.定時"拍攝"

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

超方便的 Python 自動喚醒窗口截圖腳本

分為三個步驟:

  1. 獲得游戲窗口界面
  2. 獲得游戲界面大小
  3. 截圖

每隔N秒定時循環執行以上三個步驟,代碼如下:

# main.py
# Python實用寶典
# 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('極限競速:地平線 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)

請注意,"極限競速:地平線 4" 要改成你對應拍攝的游戲名稱,這樣,運行程序后就會自動在result文件夾下定時生成截圖:

成功截取你想要的時間段的場景圖片后,就可以進行下面的拼接和補充背景音樂部分。

3.拼接延時攝影視頻

為了達到延時攝影的效果,我們在這一部分中將使用moviepy模塊,拼接所有圖片到一個視頻中。

當然還要補充背景音樂,代碼其實非常簡單,調用了部分moviepy模塊的功能:

# jointer.py
# Python實用寶典
# 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): 目標目錄
        fps (int, optional): 幀數. 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.將你的音樂放在當前目錄下,修改music變量為對應的文件名。

2.調整你想要的fps參數——幀數,這個值越低,畫面越順暢。

運行此文件后就會在當前文件夾下生成 'screenshots.mp4'. 這個就是我們的處理結果了。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 模塊
    +關注

    關注

    7

    文章

    2513

    瀏覽量

    46675
  • python
    +關注

    關注

    52

    文章

    4697

    瀏覽量

    83584
  • PIL
    PIL
    +關注

    關注

    0

    文章

    18

    瀏覽量

    8525
收藏 人收藏

    評論

    相關推薦

    電容式感應在電玩游戲中的應用

    電容式感應在電玩游戲中的應用  電玩游戲應用擁有多項技術層級,尤其是軟件方面,然而游戲本身的才是主角。   繪圖與處理速度能限制或展現游戲中
    發表于 09-12 16:43

    延時攝影怎么玩?但如果你有一臺compass……

    記錄片的部分片段。我們先來看延時攝影的原理是什么?它以一種將時間壓縮的拍攝技術。一段延時攝影視頻中,物體或者景物緩慢變化的過程被壓縮到一個
    發表于 12-19 09:48

    玩轉延時攝影,compass黑盒子的秘密

    拍照錄視頻,重要的是還有延時攝影的功能。以前一提到延時攝影,以前聽起來就很高大上,不是什么攝影大V都玩不好的樣子。但是現在越來越簡便設備和處
    發表于 01-12 21:35

    Python

    的原型(有時甚至是程序的最終界面),然后對其中有特別要求的部分,用更合適的語言改寫,比如3D游戲中的圖形渲染模塊,性能要求特別高,就可以用C/C++重寫,而后封裝為Python可以調用的擴展類庫。需要注意的是您使用擴展類庫時可
    發表于 04-14 10:15

    電容式感應在電玩游戲中的應用

      電玩游戲應用擁有多項技術層級,尤其是軟件方面,然而游戲本身的才是主角?! ±L圖與處理速度能限制或展現游戲中軟件的開發狀況,因此最容易受到消費者和評論家關注。而主機控制器(cons
    發表于 10-25 11:17

    采用單片機來實現的智能俄羅斯方塊游戲

    俄羅斯方塊游戲算法請參考俄羅斯方塊游戲的算法1.概述俄羅斯方塊是一款風靡全球的益智游戲。它規則簡單,容易上手,且游戲過程變化無窮,使用戶
    發表于 11-19 08:26

    水滴攝影是如何實現的?

    水滴攝影攝影是一門通過探索和學習來灌輸的藝術。數百次點擊就能捕捉到一張完美的照片,攝影師臉上的滿足感眨眼之間就被掩蓋了。各種類型的
    發表于 05-01 16:25

    單片機在游戲中的實際應用

    本軟件介紹單片機在游戲中的實際應用,你必須使用正常方式驅動!
    發表于 03-23 17:24 ?1次下載

    vr在游戲中的應用案例分析

    傳統的網絡游戲技術,目的是僅僅是為了滿足玩家的精神追求,更加注重游戲世界的設定,而忽視了玩家體驗,將玩家拒之于顯示器之外,玩家只能通過操作角色來體驗游戲中的各種設定,游戲體驗僅僅停留于
    發表于 03-08 08:42 ?2.5w次閱讀

    游戲中視覺風格的歷史和現狀

    Double Fine(殘酷傳奇,破碎時代)的Lee Petty介紹了游戲中視覺風格的歷史和現狀,并提供了如何使用視覺風格在您自己的游戲中產生最大影響的見解。
    的頭像 發表于 11-08 06:19 ?2612次閱讀

    Imagination和完美世界游戲攜手推進光線追蹤在游戲中的應用

    Imagination Technologies和完美世界游戲(Perfect World Games)宣布,雙方正在合作將光線追蹤技術(ray tracing)整合至完美世界游戲的移動游戲中。
    發表于 05-06 10:09 ?593次閱讀

    2021 OPPO開發者大會:游戲中的異構計算

    2021 OPPO開發者大會:游戲中的異構計算 2021 OPPO開發者大會上介紹了游戲中的異構計算。 責任編輯:haq
    的頭像 發表于 10-27 11:08 ?1295次閱讀
    2021 OPPO開發者大會:<b class='flag-5'>游戲中</b>的異構計算

    OPPO開發者大會2021 游戲中的異構計算

    異構計算在游戲中的使用,會有什么樣的優勢?
    的頭像 發表于 10-28 15:21 ?2921次閱讀
    OPPO開發者大會2021 <b class='flag-5'>游戲中</b>的異構計算

    簡單的延時攝影PiCamera

    電子發燒友網站提供《簡單的延時攝影PiCamera.zip》資料免費下載
    發表于 10-28 14:50 ?0次下載
    簡單的<b class='flag-5'>延時</b><b class='flag-5'>攝影</b>PiCamera

    Xbox應用新增“游戲中心”功能

    微軟 Xbox 體驗高級產品經理 Dylan Meade表示,“游戲中心”便于玩家追蹤游戲進展,發現游戲最新內容和擴展包,與友人聯機競技,接收開發商的最新新聞等。
    的頭像 發表于 02-27 14:02 ?230次閱讀
    亚洲欧美日韩精品久久_久久精品AⅤ无码中文_日本中文字幕有码在线播放_亚洲视频高清不卡在线观看
    <acronym id="s8ci2"><small id="s8ci2"></small></acronym>
    <rt id="s8ci2"></rt><rt id="s8ci2"><optgroup id="s8ci2"></optgroup></rt>
    <acronym id="s8ci2"></acronym>
    <acronym id="s8ci2"><center id="s8ci2"></center></acronym>