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

    文章

    2485

    浏览量

    46538
  • python
    +关注

    关注

    51

    文章

    4677

    浏览量

    83473
  • PIL
    PIL
    +关注

    关注

    0

    文章

    18

    浏览量

    8507
收藏 人收藏

    评论

    相关推荐

    电容式感应在电玩游戏中的应用

    电容式感应在电玩游戏中的应用  电玩游戏应用拥有多项技术层级,尤其是软件方面,然而游戏本身的才是主角。   绘图与处理速度能限制或展现游戏中
    发表于 09-12 16:43

    延时摄影怎么玩?但如果你有一台compass……

    记录片的部分片段。我们先来看延时摄影的原理是什么?它以一种将时间压缩的拍摄技术。一段延时摄影视频中,物体或者景物缓慢变化的过程被压缩到一个
    发表于 12-19 09:48

    玩转延时摄影,compass黑盒子的秘密

    拍照录视频,重要的是还有延时摄影的功能。以前一提到延时摄影,以前听起来就很高大上,不是什么摄影大V都玩不好的样子。但是现在越来越简便设备和处
    发表于 01-12 21:35

    Python

    的原型(有时甚至是程序的最终界面),然后对其中有特别要求的部分,用更合适的语言改写,比如3D游戏中的图形渲染模块,性能要求特别高,就可以用C/C++重写,而后封装为Python可以调用的扩展类库。需要注意的是您使用扩展类库时可
    发表于 04-14 10:15

    电容式感应在电玩游戏中的应用

      电玩游戏应用拥有多项技术层级,尤其是软件方面,然而游戏本身的才是主角。  绘图与处理速度能限制或展现游戏中软件的开发状况,因此最容易受到消费者和评论家关注。而主机控制器(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 2584次阅读

    Imagination和完美世界游戏携手推进光线追踪在游戏中的应用

    Imagination Technologies和完美世界游戏(Perfect World Games)宣布,双方正在合作将光线追踪技术(ray tracing)整合至完美世界游戏的移动游戏中
    发表于 05-06 10:09 583次阅读

    2021 OPPO开发者大会:游戏中的异构计算

    2021 OPPO开发者大会:游戏中的异构计算 2021 OPPO开发者大会上介绍了游戏中的异构计算。 责任编辑:haq
    的头像 发表于 10-27 11:08 1271次阅读
    2021 OPPO开发者大会:<b class='flag-5'>游戏中</b>的异构计算

    OPPO开发者大会2021 游戏中的异构计算

    异构计算在游戏中的使用,会有什么样的优势?
    的头像 发表于 10-28 15:21 2890次阅读
    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 167次阅读