【FFmpeg】【gif】命令行工具,将视频转为gif

这篇具有很好参考价值的文章主要介绍了【FFmpeg】【gif】命令行工具,将视频转为gif。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1 做动图用到的工具:

1.1 工具1-gifcam:录制屏幕为gif

1.2 工具2-FFmpeg:将视频转换为gif

FFmpeg是一个开源的多媒体处理工具,可以用来转换、编辑和处理各种音视频格式,其中也包括GIF格式。它的优点是跨平台、免费且功能强大,可以自定义各种参数来控制GIF的输出质量和大小。但是,它的界面比较复杂,需要一定的命令行操作经验。

1.3 参考文章

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/qq_33697094/article/details/112718101

版权声明:本文为CSDN博主「山下海棠」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_33697094/article/details/112718101

1.4 ffmpeg下载

1.5 ffmpeg安装和环境变量配置

1.5.1 下载解压后就能在 bin 文件夹下

解压的路径为

D:\Program Files\ffmpeg-release-essentials\ffmpeg-4.3.1-2021-01-01-essentials_build\bin

能看到三个可执行程序:ffmpeg、ffplay、ffprobe,配置好环境变量后即可使用。

1.5.2 将bin所在的文件夹添加到系统变量中

打开命令提示符或 PowerShell 应用程序。

输入以下命令来查看当前系统的环境变量1

ffmpeg视频转gif,ffmpeg,音视频,java

需要用管理员运行powershell

set PATH

找到要添加的路径,记下该路径的完整路径名。

输入以下命令来将要添加的路径添加到系统环境变量-用户变量path中:

setx PATH "%PATH%;[要添加的路径]"

输入以下命令来将要添加的路径添加到系统环境变量-系统变量path中:

setx /M PATH "%PATH%;[要添加的路径]"

本机为:

setx /M  PATH "%PATH%;D:\Program Files\ffmpeg-release-essentials\ffmpeg-4.3.1-2021-01-01-essentials_build\bin"

其中,[要添加的路径] 替换为你要添加的路径的完整路径名,不包括方括号。

1.5.3 验证是否成功

cmd窗口输入ffmpeg -version
ffmpeg视频转gif,ffmpeg,音视频,java

1.6 3.在cmd里使用命令行

  • 项目路径输入cmd,将命令行路径改为FFmpeg所在的安装目录

1.7 4.输入ffmpeg命令行

1.7.1 视频转为gif

将一个视频文件转换为GIF格式,可以使用FFmpeg命令行工具。下面是将一个视频文件转换为GIF的基本命令:

ffmpeg -i input.mp4 -vf scale=320:-1 -r 10 -f gif output.gif

解释:

  • -i input.mp4:指定输入视频文件。
  • -vf scale=320:-1:调整输出GIF的大小为320像素宽,高度等比例缩放。
  • -r 10:每秒钟10帧输出一个GIF帧。
  • -f gif:指定输出格式为GIF。
  • output.gif:指定输出的GIF文件名。

需要注意的是,GIF格式不支持音频,因此上述命令只会转换视频部分。如果需要将视频和音频一起转换为GIF,需要先将音频提取出来进行处理,再将视频和音频合并为GIF。

另外,可以根据具体需求调整参数,例如调整GIF的质量、帧率、大小等等。

1.7.2 加速gif的帧

要让输出的GIF文件播放速度加快,可以通过调整输出帧率来实现。在FFmpeg命令中,可以使用“-r”参数来指定输出的帧率。较高的帧率将导致GIF文件播放速度更快,但也会增加文件大小和播放的负担。

例如,如果您希望输出的GIF文件播放速度加倍,可以将输出帧率设置为每秒钟20帧,即原来的两倍。可以使用以下命令:

ffmpeg -i input.mp4 -vf scale=320:-1 -r 20 -f gif output.gif

需要注意的是,较高的输出帧率也可能会导致GIF文件的质量下降,因为每秒钟输出的帧数增加,就需要在同样的时间内输出更多的帧,从而可能导致帧之间的差异更大。因此,需要根据具体情况权衡输出帧率和GIF文件的质量和大小。

1.7.3 不改变GIF的总帧数的情况下加快GIF的播放速度

要在不改变GIF的总帧数的情况下加快GIF的播放速度,您可以使用FFmpeg的“setpts”滤镜来实现。该滤镜可以调整每个帧的时间戳,从而加速或减慢GIF的播放速度。

例如,如果您希望将GIF的播放速度加快两倍,可以将每个帧的时间戳减半。可以使用以下命令:

ffmpeg -i input.gif -filter:v "setpts=0.5*PTS" output.gif

该命令将使用“setpts”滤镜将每个帧的时间戳减半,从而使GIF的播放速度加快一倍。输出文件名为“output.gif”。

需要注意的是,较快的播放速度可能会导致GIF的质量下降,因为帧之间的差异可能更大。因此,需要根据具体情况权衡播放速度和GIF文件的质量。

ffmpeg -i c8494efd9768623b2a2b06528c239315.mp4 -vf scale=960:-1 -r 20 -filter:v "setpts=0.1*PTS" -f gif output.gif

使用FFmpeg将名为“c8494efd9768623b2a2b06528c239315.mp4”的视频文件转换为960像素宽的GIF文件,每秒钟输出20帧,并将输出文件保存为“output.gif”。同时,使用“setpts”滤镜将每个帧的时间戳缩短为原来的0.1倍,从而加快GIF的播放速度。请确保在命令行窗口中运行该命令时,当前目录为包含输入文件的目录,或者在输入文件名前使用完整路径来指定输入文件的位置

增加用户图形界面

UI

ffmpeg视频转gif,ffmpeg,音视频,java
ffmpeg视频转gif,ffmpeg,音视频,java
生成的GIF在视频目录下

代码


import tkinter as tk
import tkinter.filedialog as fd
import subprocess
import os

class Application(tk.Frame):
    def __init__(self, master=None):
        super().__init__(master)
        self.master = master
        self.pack()
        self.create_widgets()

    def create_widgets(self):
        self.select_file_button = tk.Button(self)
        self.select_file_button["text"] = "Select Video File"
        self.select_file_button["command"] = self.select_file
        self.select_file_button.pack(side="top")

        self.convert_button = tk.Button(self)
        self.convert_button["text"] = "Convert to GIF"
        self.convert_button["command"] = self.convert_to_gif
        self.convert_button.pack(side="top")

    def select_file(self):
        self.file_path = fd.askopenfilename(filetypes=[("Video Files", "*.mp4")])

    def convert_to_gif(self):
        if not hasattr(self, "file_path"):
            tk.messagebox.showwarning("Error", "Please select a video file first.")
            return

        file_name, file_ext = os.path.splitext(self.file_path)
        output_path = file_name + ".gif"

        command = [
            "ffmpeg",
            "-i", self.file_path,
            "-vf", "scale=1080:-1",
            "-r", "50",
            "-f", "gif",
            output_path
        ]

        try:
            subprocess.run(command, check=True)
            tk.messagebox.showinfo("Success", "GIF conversion completed.")
        except subprocess.CalledProcessError as e:
            tk.messagebox.showerror("Error", f"FFmpeg error: {e}")

root = tk.Tk()
app = Application(master=root)
app.mainloop()

  1. 环境变量的作用

    在 Windows 操作系统中,环境变量是一种系统级别的设置,用于存储各种系统和用户相关的配置信息,这些信息包括可执行文件、动态链接库(DLL)、路径、用户名、计算机名、系统目录和临时文件夹等。环境变量可以帮助您在不同的应用程序之间共享配置信息,同时也可以方便地管理系统配置。以下是环境变量的一些作用:

    1. 管理系统路径和文件:环境变量可以帮助操作系统定位需要运行的文件、程序和库,从而避免手动指定路径和文件名的繁琐工作。

    2. 管理用户配置:环境变量可以存储用户的相关配置信息,例如 Windows 用户名、主目录、文档文件夹和下载文件夹等。

    3. 提高系统性能:通过使用环境变量,系统可以更快地定位需要的文件和程序,从而提高系统性能。

    4. 便于系统管理:环境变量可以用于管理系统和应用程序的配置信息,例如配置 Java 的路径以及设置系统临时文件夹等。

    5. 便于应用程序开发:环境变量可以用于在应用程序中存储和访问配置信息,例如用于存储应用程序的路径、数据库连接字符串等。

    在 Windows 中,您可以使用“环境变量”设置来管理环境变量。通过设置环境变量,您可以配置系统和应用程序的行为,同时也可以方便地管理和维护系统配置。

    用户环境变量和系统环境变量的区别

    在 Windows 中,环境变量分为用户环境变量和系统环境变量两种类型。用户环境变量只适用于当前用户,而系统环境变量适用于整个系统。

    对于环境变量 PATH 来说,用户环境变量 PATH 和系统环境变量 PATH
    中的内容可能不完全相同,因为它们具有不同的作用范围。

    • 用户环境变量 PATH:它包含了当前登录用户在命令行或文件浏览器中可以直接访问的可执行文件的路径。这些路径可能包括用户自己安装的应用程序或工具,或者是系统管理员添加到用户环境变量
      PATH 中的路径。

    • 系统环境变量 PATH:它包含了整个系统中所有用户都可以访问的可执行文件的路径。这些路径包括了 Windows 系统自带的工具和应用程序,以及系统管理员添加到系统环境变量 PATH 中的路径。

    因此,用户环境变量 PATH 和系统环境变量 PATH
    中的内容可能有重叠部分,但是它们的作用范围不同,可能包含不同的路径。在使用命令行或文件浏览器时,系统会首先查找用户环境变量 PATH
    中的路径,如果找不到则会继续查找系统环境变量 PATH 中的路径。文章来源地址https://www.toymoban.com/news/detail-715670.html

    ↩︎

到了这里,关于【FFmpeg】【gif】命令行工具,将视频转为gif的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 音视频 ffmpeg命令提取音视频数据

    保留封装格式 提取视频 提取音频 推荐一个零声学院项目课,个人觉得老师讲得不错,分享给大家: 零声白金学习卡(含基础架构/高性能存储/golang云原生/音视频/Linux内核) https://xxetb.xet.tech/s/VsFMs

    2024年02月10日
    浏览(62)
  • 【FFmpeg】ffmpeg 命令行参数 ⑤ ( 使用 ffmpeg 命令提取 音视频 数据 | 保留封装格式 | 保留编码格式 | 重新编码 )

    使用 ffmpeg 命令 从 视频数据 中 提取 音频数据 / 视频数据 保留封装格式 , 封装格式 指的就是 封装 视频数据 的 容器 ; 一个 mp4 格式的视频 , 其 封装容器 就是 mp4 容器 , 其中 封装了 h.264 格式的视频数据 和 aac 格式的 音频数据 ; 执行 命令 , 从 input.mp4 输入文件中 , 提取 音频

    2024年03月23日
    浏览(59)
  • 音视频 ffmpeg命令图片与视频互转

    截取一张图片 转换视频为图片(每帧一张图): 图片转换为视频: 从视频中生成GIF图片 将 GIF 转化为 视频 推荐一个零声学院项目课,个人觉得老师讲得不错,分享给大家: 零声白金学习卡(含基础架构/高性能存储/golang云原生/音视频/Linux内核) https://xxetb.xet.tech/s/VsFMs

    2024年02月10日
    浏览(57)
  • ffmpeg@音视频工具@音视频合并

    FFmpeg中文网 (github.net.cn) FFmpeg 是一款强大的开源跨平台音视频处理工具集,它包含了一系列命令行工具以及用于音频和视频编码解码、格式转换、抓取、流化等功能的库。FFmpeg 支持多种视频、音频格式和编解码器,能够进行音视频的压缩、封装、转码、分割、合并、过滤、抓

    2024年03月17日
    浏览(79)
  • 音视频 ffmpeg命令转封装

    保持编码格式: 改变编码格式: 修改帧率: 修改视频码率: 修改视频码率: 修改音频码率: 修改音视频码率: 修改视频分辨率: 修改音频采样率: 推荐一个零声学院项目课,个人觉得老师讲得不错,分享给大家: 零声白金学习卡(含基础架构/高性能存储/golang云原生/音

    2024年02月10日
    浏览(55)
  • 音视频 ffmpeg命令参数说明

    主要参数: -i 设定输入流 -f 设定输出格式(format) -ss 开始时间 -t 时间长度 音频参数: -aframes 设置要输出的音频帧数 -b:a 音频码率 -ar 设定采样率 -ac 设定声音的Channel数 -acodec 设定声音编解码器,如果用copy表示原始编解码数据必须被拷贝。 -an 不处理音频 -af 音频过滤器 视频

    2024年02月10日
    浏览(52)
  • 音视频 FFmpeg命令行搭建

    以FFmpeg4.2.1 win32为例 解压ffmpeg-4.2.1-win32-shared.zip 拷⻉可执⾏⽂件到C:Windows 拷⻉动态链接库到C:WindowsSysWOW64 注:WoW64 (Windows On Windows64)是⼀个Windows操作系统的⼦系统,被设计⽤来处理许多在32-bit Windows和64-bit Windows之间的不同的问题,使得可以在64-bit Windows中运⾏32-bit程序 推荐

    2024年02月13日
    浏览(63)
  • FFMPEG常用命令 音视频合并

            目录 一、音频合并 1.获取音频时长 2.合并两段音频 3.合并音频插入空白 二、视频加背景图 三、音视频合成 1.保留视频声音 2.不保留视频声音 四、合并视频         本文将用几个实例,介绍ffmpeg命令的综合使用,主要涉及音频处理、视频处理和音视频合成。 参数

    2024年02月10日
    浏览(72)
  • 音视频 ffmpeg命令分类查询

    命令参数 内容 -version 显示版本 -bsfs 显示可用比特流filter -buildconf 显示编译配置 -formats 显示可用格式(muxers+demuxers) -muxers 显示可用复用器 -demuxers 显示可用解复用器 -codecs 显示可用编解码器(decoders+encoders) -decoders 显示可用解码器 -encoders 显示可用编码器 -bsfs 显示可用比特流f

    2024年02月12日
    浏览(53)
  • FFmpeg 音视频开发工具

    目录 FFmpeg 下载与安装 ffmpeg 使用快速入门 ffplay 使用快速入门 1、FFmpeg 是处理音频、视频、字幕和相关元数据等多媒体内容的库和工具的集合。一个完整的跨平台解决方案,用于录制、转换和流式传输音频和视频。 官网:https://www.ffmpeg.org/ 源码:https://github.com/FFmpeg/FFmpeg。

    2024年02月15日
    浏览(57)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包