使用ffmpeg压缩视频

一、到ffmpeg官网下载文件包:

Download FFmpeg

下载后找到 bin 下的3个exe文件,复制到自己本机的某个目录下, 如:

二、使用命令行压缩:

ffmpeg -i input.mp4 -c:v libx265 -crf 28 -y output.mp4

这条命令使用 FFmpeg 工具对输入视频文件 input.mp4 进行压缩,并将压缩后的视频保存为 output.mp4 文件。以下是对命令中各个参数的详细解释:

  • ffmpeg: FFmpeg 是一个开源的音视频处理工具,可以用于处理、转换和编辑音视频文件。
  • -i input.mp4: 指定要处理的输入视频文件为 input.mp4-i 是 FFmpeg 中用于指定输入文件的参数。
  • -c:v libx265: 指定视频编码器为 libx265,这表示使用 H.265/HEVC 编码器进行视频压缩。-c:v 是用于指定视频编码器的参数。
  • -crf 28: 指定视频的质量级别,数值越小表示质量越高,压缩率越低。在这里,-crf 28 表示使用 CRF(Constant Rate Factor)为 28 进行压缩,这是一个常用的视频质量控制参数。
  • -y: 在输出文件存在时自动覆盖。如果不加 -y 参数,在输出文件已存在时,FFmpeg 会提示是否覆盖输出文件。
  • output.mp4: 指定压缩后的视频文件名为 output.mp4

综合起来,这条命令的作用是将输入视频文件 input.mp4 使用 libx265 编码器进行压缩,质量级别为 28,并将压缩后的视频保存为 output.mp4 文件。执行该命令后,将生成一个经过压缩处理的输出视频文件。

请注意,压缩视频可能会导致视频质量的损失,但可以减小视频文件的大小。您可以根据需要调整 -crf 参数来平衡视频质量和文件大小。

三、使用FFmpeg对文件夹下的所有mp4文件进行批量压缩处理的powershell脚本:

如下ps脚本实现了对2个文件夹中的未压缩过的视频或者大于12MB的视频进行压缩。

视频每压缩一次,会小一点点,我这里的来源只是到2分钟内的视频,所以可以多次压缩。太大的视频就不要这样了,根据实际情况来吧。

function CompressVideosInFolder($folder) {
    $ffprobePath = "D:\Program\ffmpeg\ffprobe.exe"
    $ffmpegPath = "D:\Program\ffmpeg\ffmpeg.exe"

    Get-ChildItem -Path $folder -Filter *.mp4 | ForEach-Object {
        $filename = $_.Name
        $tempOutputPath = Join-Path $folder "temp_$filename"
        $codec = (& $ffprobePath -v error -select_streams v:0 -show_entries stream=codec_name -of default=noprint_wrappers=1 $_.FullName).Trim()
        $fileSize = $_.Length / 1MB  # 文件大小转换为MB

        Write-Host "Codec of file $filename is: $codec"
        Write-Host "File size of $filename is: $fileSize MB"

        if ($codec -ne "codec_name=hevc" -or $fileSize -gt 12) {
            Write-Host "File $filename needs compression..."
            Write-Host "Compressing file $filename..."
            & $ffmpegPath -i $_.FullName -c:v libx265 -crf 30 -y $tempOutputPath
            Move-Item -Path $tempOutputPath -Destination $_.FullName -Force
        } else {
            Write-Host "File $filename does not need compression, skipping..."
        }
    }
}

$folder1 = "E:\uploads\Video"
$folder2 = "E:\uploads\testVideo"

CompressVideosInFolder $folder1
CompressVideosInFolder $folder2

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/414263.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

QA 的未来:使用生成式 AI 进行 API 测试

QA 团队面临着比以往任何时候都更大的满足软件质量和发布速度期望的压力。继续阅读,了解 GenAI 如何改善开发人员和测试人员的工作体验,同时最大限度地提高团队生产力并提高软件质量。 软件质量差的后果正在日益严重,许多组织因功能缺陷和安…

LACP——链路聚合控制协议

LACP——链路聚合控制协议 什么是LACP? LACP(Link Aggregation Control Protocol,链路聚合控制协议)是一种基于IEEE802.3ad标准的实现链路动态聚合与解聚合的协议,它是链路聚合中常用的一种协议。 链路聚合组中启用了…

2024 值得推荐的免费开源 WAF

WAF 是 Web Application Firewall 的缩写,也被称为 Web 应用防火墙。区别于传统防火墙,WAF 工作在应用层,对基于 HTTP/HTTPS 协议的 Web 系统有着更好的防护效果,使其免于受到黑客的攻击。 开源 WAF 和商用 WAF(奇安信…

Linux学习笔记11——用户组添加删除

Linux 是多用户多任务操作系统,换句话说,Linux 系统支持多个用户在同一时间内登陆,不同用户可以执行不同的任务,并且互不影响。 例如,某台 Linux 服务器上有 4 个用户,分别是 root、www、ftp 和 mysql&…

基于JAVA+Springboot+Thymeleaf前后端分离项目:社区疫情防控系统设计与实现

博主介绍:黄菊华老师《Vue.js入门与商城开发实战》《微信小程序商城开发》图书作者,CSDN博客专家,在线教育专家,CSDN钻石讲师;专注大学生毕业设计教育和辅导。 所有项目都配有从入门到精通的基础知识视频课程&#xff…

广和通发布基于MediaTek T300平台的RedCap模组FM330系列及解决方案

世界移动通信大会MWC 2024期间,广和通发布基于MediaTek T300平台的RedCap模组FM330系列,加速5G-A繁荣发展。FM330系列及其解决方案采用全球先进RedCap方案,满足移动宽带和工业互联对高能效的需求。 广和通FM330系列采用全球首款6nm制程且集成…

BTC网络 vs ETH网络

设计理念 BTC 网络 比特币是一种数字货币,旨在作为一种去中心化的、不受政府或金融机构控制的电子货币。其主要目标是实现安全的价值传输和储存,比特币的设计强调去中心化和抗审查。 ETH 网络 以太坊是一个智能合约平台,旨在支持分散的应…

Java SpringBoot微服务面试题

Java SpringBoot微服务面试题 前言1、什么是 SpringBoot?2、什么是起步依赖?3、什么是自动配置?4、什么是命令行界面?5、什么是Actuator监控器?6、SpringBoot 的核心注解有哪些?7、什么是YAML?8…

[数据集][目标检测]狗狗表情识别VOC+YOLO格式3971张4类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):3971 标注数量(xml文件个数):3971 标注数量(txt文件个数):3971 标注…

基于java SSM springboot+redis网上水果超市商城设计和实现以及文档

基于java SSM springbootredis网上水果超市商城设计和实现以及文档 博主介绍:多年java开发经验,专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 央顺技术团队 Java毕设项目精品实战案例《1000套》 欢迎点赞 收藏 …

一文读懂什么是 OCR 识别

在数字化时代,信息处理和数据管理是企业运营的重要环节。然而,手工输入信息存在效率低和准确性低的问题,严重影响了企业的工作流程和决策过程。因此,OCR(Optical Character Recognition)识别技术的应用变得…

C++观察者模式代码实例

文章目录 C观察者模式代码实例一C观察者模式代码实例二 C观察者模式代码实例一 下面是一个简单的C观察者模式的实现示例,这里仅给出核心代码框架,完整的工程应包含对应的头文件声明及必要的#include指令等。 // 观察者接口(Observer&#x…

nginx介绍及编译安装

nginx介绍 是一个流行的开源的高性能的HTTP和反向代理服务器,也可以用作邮件代理服务器。它以其高性能、稳定性、丰富的功能集和低资源消耗而闻名 nginx特点 高性能: Nginx以其高效的事件驱动架构而闻名,能够处理大量并发连接而不会消耗过多…

面试官:集群部署时的分布式 Session 如何实现?

欢迎来到百战百胜!我们致力于为广大IT从业者、学生和爱好者提供全面、实用的资源和服务。加入我们的聊天群,这里有专业大佬为你提供有价值的建议和指导! 微信搜索:IT开DD那点小事 更多访问:www.besthub.tech ​ 面试题…

C++入门05 类与对象

图源:文心一言 听课笔记简单整理,供小伙伴们参考~🥝🥝 第1版:听课的记录代码~🧩🧩 编辑:梅头脑🌸 审核:文心一言 目录 🐳类与对象 &#x1…

尚硅谷(SpringCloudAlibaba微服务分布式)学习代码Eureka部分

1.项目结构 2.cloud2024 pom <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.a…

【C++】auto、范围for循环、宏函数和内联函数

auto、范围for、内联函数、宏函数和nullptr 一、auto — 类型推导的魔法&#xff08;C 11)1、auto 是什么&#xff1f;2、工作原理3、优势4、限制和注意事项 二、范围for (C11)1、基本语法2、优势3、工作原理4、注意事项5、C11&#xff1a; 范围 for 循环的扩展&#xff1a; 三…

MCU最小系统电路设计(以STM32F103C8T6为例)

目录 一、何为最小系统&#xff1f; 二、最小系统电路设计 1.电源 &#xff08;1&#xff09;各种名词解释 &#xff08;2&#xff09;为什么会有VDD_1 _2 _3区分&#xff1f; &#xff08;3&#xff09;Mirco USB &#xff08;4&#xff09;5v->3.3v滤波电路 &#…

尚硅谷webpack5笔记2

Loader 原理 loader 概念 帮助 webpack 将不同类型的文件转换为 webpack 可识别的模块。 loader 执行顺序 分类pre: 前置 loadernormal: 普通 loaderinline: 内联 loaderpost: 后置 loader执行顺序4 类 loader 的执行优级为:pre > normal > inline > post 。相…

算法day01_ 27. 移除元素、977.有序数组的平方

推荐阅读 从零开始学数组&#xff1a;深入浅出&#xff0c;带你掌握核心要点 初探二分法 再探二分法 系统的纪录一下刷算法的过程&#xff0c;之前一直断断续续的刷题&#xff0c;半途而废&#xff0c;现在重新开始。话不多说&#xff0c;开冲&#xff01; 27.移除元素 题目 给…