python学习之合并多张图片转成mp4视频代码实现

这篇具有很好参考价值的文章主要介绍了python学习之合并多张图片转成mp4视频代码实现。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

随着现代科技飞速发展和人们提升视觉上体验,利用图片生成视频的方法,确实为工作或者提升生活体验感做了很多成功案例:
1、简单的幻灯片演示,如展示旅游照片、产品展示等;
2、改编图片动画,如口红试色、时尚大片中的效果;
3、制作日记式的视频内容,将一段长时间内的照片串在一起,如婚礼纪实、Baby成长记录等;
4、制作信息图表,如将各种数据图表整合在一起以便展示和诠释数据。
以上只是一些普遍运用的例子,实际上还有更广泛的使用场景,取决于制作者的目的和创意。
python学习之合并多张图片转成mp4视频代码实现

下面咱们用python代码实现多张图片合成MP4视频为实例,做下详细代码讲解。


一、需要调入的模块

1、imageio模块

Python模块imageio是一个用于读取和写入图像及视频数据的库。它支持多种格式,并且可以使用NumPy数组进行操作。

以下是一些关键的函数:

imageio.imread():从文件中读取图像数据并返回一个NumPy数组。
imageio.imwrite():将一个NumPy数组写入到文件。
imageio.mimsave():将多个图像帧组成的列表保存为动画文件(例如GIF)。
imageio.get_reader():获取一个对象,该对象用于逐帧读取给定文件中的动画图像。
imageio.get_writer():获取一个对象,该对象用于逐帧写入动画图像到指定文件中。
使用这些函数,可以方便地读取、写入和处理各种图像及视频数据格式。

2、Image 模块

PIL 是 Python 中常用的图像处理库,Image 模块是其中的一个重要模块,它提供了各种图像操作和处理的函数。

以下是 Image 模块中一些主要函数及其作用:

open(): 打开并返回指定文件路径的图像对象。
fromarray(): 将 numpy 数组或 PIL 图像对象转换为 PIL 图像对象。
new(): 创建一个新的指定大小、模式和颜色的空白图像对象。
save(): 将图像保存为指定格式的文件。
resize(): 修改图像的大小。
crop(): 裁剪图像的指定区域。
rotate(): 旋转图像指定角度。
show(): 显示图像。
除此之外,还有很多其他常用的函数,例如调整亮度和对比度、应用滤镜等等。这些函数可以帮助我们实现各种复杂的图像处理任务,并且通常也会有一些参数可用于进一步调节函数的行为,具体使用时可以参考相关文档。

python学习之合并多张图片转成mp4视频代码实现

二、实现合并多张图片转成 mp4 视频

使用 Python 中的画图库 PIL(Python Imaging Library)或者 OpenCV 读取每一张图片。
使用第三方库 imageio 将多张图片合并成一个视频文件。
配置生成视频文件的视频帧数、视频尺寸和视频播放速度等参数。
以下是一个简单的示例代码:

import os
import imageio
from PIL import Image

# 设置生成的视频文件名和路径
filename = 'output.mp4'
filepath = os.path.join(os.getcwd(), filename)

# 读取所有 PNG 图片
images = []
for file_name in sorted(os.listdir()):
    if file_name.endswith('.png'):
        images.append(Image.open(file_name))

# 将图片转换为视频
fps = 30  # 每秒钟30帧
with imageio.get_writer(filepath, fps=fps) as video:
    for image in images:
        frame = image.convert('RGB')
        video.append_data(frame)

实现原理,读取所有需要合并的图片文件,将它们存储到一个列表中。然后使用 imageio 库的 get_writer() 函数创建一个视频写入器对象,并设置视频的播放速度(fps)。之后在循环过程中,读取列表中的每一张图片,在将其转换为带有 RGB 颜色模式的格式后添加到视频帧中。最终输出一个合并了所有目标图片的视频文件。

三、优化改进一下

将程序并行化进行处理,加快处理多张图片的速度。注:以下方法可能并非最优方法

import os
import concurrent.futures
import imageio
from PIL import Image

# 设置生成的视频文件名和路径
filename = "output.mp4"
filepath = os.path.join(os.getcwd(), filename)


def process_image(file_name):
    if file_name.endswith(".png"):
        image = Image.open(file_name)
    return image.convert("RGB")


with concurrent.futures.ThreadPoolExecutor() as executor:
    # 寻找所有 png 文件
    image_files = [file for file in os.listdir() if file.endswith(".png")]

    # 利用线程池并行处理图像
    images = list(executor.map(process_image, image_files))


# 将图片转换为视频文件
fps = 30  # 每秒钟30帧
with imageio.get_writer(filepath, fps=fps) as video:
    for image in images:
        video.append_data(image)

这里使用 concurrent.futures 库中的 ThreadPoolExecutor 对象进行并行处理。首先在主线程中寻找读取当前工作目录下的所有需要合并的 PNG 图片,创建任务列表。然后将任务提交给线程池中并保证能够快速、异步地处理目标文件。在处理完所有 PNG 图片之后,将其存储到一个 images 中的列表中并最后转换成视频。


总结

以上就是今天要讲的内容,本文仅仅简单介绍了python代码实现图片转成视频的使用,而imageio中提供了大量能使我们快速便捷地处理数据的函数和方法。

注意,由于 GIL 的存在,Python 的多线程并不总能带来真正的性能提升。如果性能是关键,请考虑使用更优秀的 Python 解释器、使用类似 joblib 的库以及使用其他语言编写多线程实现。

希望对看到的小伙伴有帮助。文章来源地址https://www.toymoban.com/news/detail-420633.html

到了这里,关于python学习之合并多张图片转成mp4视频代码实现的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 音视频编码实战-------pcm+yuv数据转成MP4

    avcodec_find_encoder: 根据编码器ID查找编码器 avcodec_alloc_context3:创建编码器上下文 avcodec_open2:打开编码器 avformat_alloc_output_context2:为输出格式创建复用器上下文 avformat_new_stream:创建音视频流 avcodec_parameters_from_context:将编码器上下文中的参数拷贝到音视频流中的编码器参数中AVCodec

    2024年02月15日
    浏览(66)
  • avi文件怎么转成mp4视频,3种方法快速学

          avi文件怎么转成mp4视频?前面小编给大家讲了mov格式和webm格式,以及如何将mov和webm格式转换成mp4格式。今天小编给大家说一说另外一种视频格式,就是avi,AVI英文全称为Audio Video Interleaved,即音频视频交错格式,又是微软公司推出的一种多媒体格式,不得不说微软公

    2024年02月02日
    浏览(47)
  • java 视频统一转成mp4格式,并且异步多线程上传

    背景:遇到一个项目就是上传视频文件不限格式,需要全部统一转成mp4格式。具体细节是 1.前端展示的视频不能是从头加载的,需要像某讯那样快进到哪里,从哪个节点开始加载,实现无卡顿播放,2,后台获取时长,大小等数据信息,四张视频截图封面,从其中选择一张作为

    2024年02月16日
    浏览(48)
  • 大黄蜂vep视频转成MP4格式提取工具的使用

    首先,把vep格式文件下载到本地: 打开大黄蜂vep加密视频提取器,点击开始,显示正在解码状态。 100M的视频大概3分钟就能解码完,自动保存为mp4格式。 回到原目录看下mp4视频,这时候任意播放器都是可以打开的了。 [视频教程](https://mp.csdn.net/mp_others/manage/video) 大黄蜂VEP提

    2024年02月13日
    浏览(165)
  • ffmpeg合并多张图片为视频,加转场

    转场特效,可以在:https://trac.ffmpeg.org/wiki/Xfade#MP4output 查看 -stream_loop 输入流循环的次数,0 表示无循环,-1 表示无限循环,即音乐循环播放。 -acodec aac 设置音频编解码为 acc 模式 -map “[v]” 将合成的视频输入流 v 指定为输出文件的源 -map “5:a” 将第6个文件作为视频音频文件

    2024年02月16日
    浏览(63)
  • 不用FFMpeg,用Python代码解密ts文件还原mp4视频(前提:有正确的key)

    好不容易下载了.ts视频,但内容全被加密。要解密的前提条件是必须先有正确的key文件,然后对.ts文件进行AES-128解密,还原成.mp4视频。 以往的做法是用FFMpeg命令: 现在可以用Python代码直接解密。 非常感谢这篇文章给我参考的灵感: 流媒体m3u8爬虫研究 - Echocipher 首先Python要

    2024年02月02日
    浏览(58)
  • java如何将图片转为MP4视频并配音

    最近前端小伙伴给我提了一个难题,让我在后端实现一个图片转MP4视频并配音乐,然后提供一个接口给他下载,我虽然没做过相关的功能,但本着不会就抄的的原则,还是硬着头皮答应了… 话不多说,开整! 首先我先在网上搜搜有没有相关demo,还真搜到了 这里附上原文链接 https://clo

    2024年02月16日
    浏览(52)
  • C# 使用ffmpeg将图片保存为mp4视频

    使用 FFmpeg 这个强大的多媒体处理工具,可以轻松地将一系列图片转换为一个 MP4 视频文件。以下是一个基本的命令行示例来完成这个任务: 命令参数说明: -framerate 25 :设置输入图像序列的帧率,这里表示每秒25帧。 -i image-%03d.jpg :指定输入文件格式,这里的  %03d  是一个

    2024年04月27日
    浏览(47)
  • uniapp - [微信小程序] 实现点击预览各种文件 pdf文档、视频mp4、mp3音乐、图片图像、word/excel/ppt 等,uniapp小程序文件预览功能(详细示例代码,一键复制开箱即用)

    在uniapp微信小程序平台开发中,详细实现文件预览功能,支持预览pdf/mp3/mp4/图片/word/excel/ppt等常见文件,在线下载并预览功能。 直接复制运行示例代码,稍微改下就能用了。

    2024年02月04日
    浏览(88)
  • mp4文件可以转成mp3音频吗

    现在是个非常流行刷短视频一个年代,刷短视似乎成了人们休闲娱乐的一种方式,在日常刷短视频过程中,肯定会有很多同学被短视频 bgm 神曲洗脑,比如很多被网红翻唱带火的歌曲,例如其中\\\"不负人间”,就是其中之一,一开口直击灵魂,旋律在脑海挥之不去! 有些同学肯

    2024年01月20日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包