使用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  # 文件大小转换为MBWrite-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 $tempOutputPathMove-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://xiahunao.cn/news/2814371.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

OpenCV与AI深度学习 | 使用YOLOv8做目标检测、实例分割和图像分类(包含实例操作代码)

本文来源公众号“OpenCV与AI深度学习”,仅用于学术分享,侵权删,干货满满。 原文链接:使用YOLOv8做目标检测、实例分割和图像分类 0 导 读 本文主要介绍YOLOv8及使用它做目标检测、实例分割和图像分类演示,仅供参考。…

Swagger3 使用详解

Swagger3 使用详解 一、简介1 引入依赖2 开启注解3 增加一个测试接口4 启动服务报错1.5 重新启动6 打开地址:http://localhost:8093/swagger-ui/index.html 二、Swagger的注解1.注解Api和ApiOperation2.注解ApiModel和ApiModelProperty3.注解ApiImplicitParams和Api…

Leetcoder Day26| 回溯part06:总结+三道hard题

332.重新安排行程 给定一个机票的字符串二维数组 [from, to],子数组中的两个成员分别表示飞机出发和降落的机场地点,对该行程进行重新规划排序。所有这些机票都属于一个从 JFK(肯尼迪国际机场)出发的先生,所以该行程必…

【学习总结】什么是弹性负载均衡? LB和ELB的区别

[Q&A] 什么是 LB (Load Balancer) 负载均衡器: 这是一个广泛的概念,泛指任何用于在网络流量进入时进行分配以实现服务器集群间负载均衡的设备或服务。传统的负载均衡器可以是硬件设备,也可以是软件解决方案,其基本目标是将客…

团结引擎——DotNet Wasm方案

参考:团结引擎 DotNet WebAssembly(Wasm) 介绍 一、当前编译流程 通过IL2CPP将C#转成C/C;通过Emscripen将C/C转成WebAssembly; 二、 当前存在问题 IL2CPP在处理类似泛型、反射结构时,由于缺少运行时信息,必须全量生…

Redis7

摘录 https://github.com/Romantic-Lei/Learning-in-practice/blob/master/Redis/ 官网地址: 英文:Redis 中文:CRUG网站 redis中文文档 安装包:https://redis.io/download/,选择redis7.0版本即可 Redis在线测试地址(不用下载也…

(全部习题答案)研究生英语读写教程基础级教师用书PDF|| 研究生英语读写教程提高级教师用书PDF

研究生英语读写教程基础级教师用书PDF 研究生英语读写教程提高级教师用书PDF pdf下载(完整版下载) (1)研究生英语读写教程基础级教师用书PDF (2)研究生英语读写教程基提高级教师用书PDF

WPF的DataGrid自动生成中文列头

直接将一个对象集合绑定到DataGrid上面,设置自动生成列AutoGenerateColumns"True",DataGrid会自动根据对象类的属性生成对应的列 示例类对象: public class DataModel{public int Id { get; set; }public string Name { get; set;…

vue -- watermark水印添加方法

前言 项目生成公司水印是很普遍的需求,下面是vue项目生产水印的方法。话不多说,复制粘贴就可以马上解决你的需求。 步骤1 创建watermark.js文件。目录结构 /** 水印添加方法 */let setWatermark (str1, str2) > {let id 1.23452384164.1234124…

FL Studio 21 Mac汉化免费版 附安装教程

FL Studio 21 Mac是Mac系统中的一款水果音乐编辑软件,提供多种插件,包括采样器、合成器和效果器,可编辑不同风格的音乐作品,Pattern/Song双模式,可兼容第三方插件和音效包,为您的创意插上翅膀。FL Studio 2…

AI-数学-高中-27-复数相关定义及运算

原作者视频:【复数】【一数辞典】2复数的四则运算_哔哩哔哩_bilibili 复数的标准形式: 注意:把i当成x看,其他完全平方公式一样。 混合运算规则:实部跟实部运算,虚部跟虚部运算,i^2-1; 注意&…

Java最新面试宝典 SpringMVC面试题)

Java最新面试宝典 SpringMVC面试题 前言1、什么是SpringMVC?2、SpringMVC 的优点?3、Spring MVC配置步骤?4、SpringMVC工作原理了解吗?5、Spring MVC 核心组件的功能?6、B/S 系统标准的三层架构是什么?7、C…

DETR(1):论文详解

文章目录 1. DETR 模型结构2.损失函数2.1 预测结果和GT 的匹配2.2 训练的loss计算3.实验3.1 大物体表现效果好3.2 Transformer Encoder 和Decoder的作用3.3 object query4. 伪代码5. 结论

Jetpack Compose 1.7中的新修饰符receiveContent

在 Jetpack Compose 1.7.0 中提供了一个新的修饰符,Modifier.receiveContent,通过该修饰符可以支持在输入框中输入输入法软键盘中自带的图片表情等,非常方便。 示例代码如下: class MyActivity: ComponentActivity() { overrid…

[源码分析]webrtc音频流从接收到播放的关键流程

如图所示,音频流从接收到播放的核心关键流程和执行线程。 neteq中对音频流的RTP数据包进行了处理和解码操作。同时数据出现了跨线程的投递。 后面有空补上核心对象之间的关系图。 后面将添加对neteq模块的细节分析。

影像仪激光扫描功能,无缝连接2D/3D混合测量

在现代工业生产领域,影像仪用于质量控制和产品检测,是一个不可或缺的工具。它通过高精度的成像和图像处理技术,可以及时发现产品的缺陷和异常,以保证产品质量的稳定性和一致性。 影像仪的重要性及其面临的挑战 在工业生产方面&a…

【QT+QGIS跨平台编译】之五十五:【QGIS_CORE跨平台编译】—【qgsmeshcalcparser.cpp生成】

文章目录 一、Bison二、生成来源三、构建过程一、Bison GNU Bison 是一个通用的解析器生成器,它可以将注释的无上下文语法转换为使用 LALR (1) 解析表的确定性 LR 或广义 LR (GLR) 解析器。Bison 还可以生成 IELR (1) 或规范 LR (1) 解析表。一旦您熟练使用 Bison,您可以使用…

mac打不开xxx软件, 因为apple 无法检查其是否包含恶意

1. 安全性与隐私下面的允许来源列表,有些版本中的‘任何来源’选项被隐藏了,有些从浏览器下载的软件需要勾选这个选项才能安装 打开‘任何来源’选项 sudo spctl --master-disable 关闭‘任何来源’选项 sudo spctl --master-enable

RK3568平台 RTC时间框架

一.RTC时间框架概述 RTC(Real Time Clock)是一种用于计时的模块,可以是再soc内部,也可以是外部模块。对于soc内部的RTC,只需要读取寄存器即可,对于外部模块的RTC,一般需要使用到I2C接口进行读取…

MS90C031LVDS 四通道总线驱动器,可兼容替代DS90C031

产品简述 MS90C031 是一款低功耗、高数据传输率的四通道 CMOS 差分 LVDS 信号总线驱动芯片,其支持的数据接收率超过 155.5Mbps (77.7MHz) 。 MS90C031 将 TTL/CMOS 输入信号,转换成低压 (350mV) 的差分输出信 号。芯片驱动器还支持三态输出功…