当前位置: 首页 > news >正文

ffmpeg使用手册

ffmpeg使用手册

文章目录

  • ffmpeg使用手册
    • ffmpeg是什么
    • 指令总结
      • 1.查看ffmpeg版本
      • 2.mkv转mp4
      • 3.裁剪 .mkv 视频
      • 4.不调节帧率,尽可能保证原视频质量的情况下将原始视频压缩
        • 4.1 crf
        • 4.2 preset
      • 5.调节视频帧率
      • 6.调节帧率,尽可能保证原视频质量的情况下将原始视频压缩

本教程持续更新,我学到多少就更新多少。关于ffmpeg如何安装可以看上一篇博客win系统环境搭建(十六)——windows下载安装ffmpeg最新版。若是想有更好的阅读体验,可以直接看我GitHub博客的本篇文章,排版上会更好一点,ffmpeg使用手册。

ffmpeg是什么

FFmpeg是一个开放源代码的自由软件,可以执行音频和视频多种格式的录影、转换、串流功能,包含了libavcodec——这是一个用于多个项目中音频和视频的解码器函式库,以及libavformat——一个音频与视频格式转换函式库。

具体请自行百度。😥

指令总结

1.查看ffmpeg版本

ffmpeg -version

2.mkv转mp4

ffmpeg -i input.mkv -vcodec copy -acodec copy out.mp4

3.裁剪 .mkv 视频

ffmpeg -i input.mkv -ss [start] -t [duration] -c copy output.mkv
  • input.mkv 是你要裁剪的原始视频文件。
  • [start] 是你要开始裁剪的时间,格式为 HH:MM:SS
  • [duration] 是你要裁剪的持续时间,格式也是 HH:MM:SS
  • output.mkv 是裁剪后的新视频文件。

4.不调节帧率,尽可能保证原视频质量的情况下将原始视频压缩

要使用FFmpeg将视频文件的大小减小,可以进行以下操作:

ffmpeg -i input.mp4 -crf 23 -preset medium output.mp4

这个命令将会将输入视频文件input.mp4的占用体积减小,并生成输出视频文件output.mp4

4.1 crf

在FFmpeg中,-crf参数是用于控制视频编码的质量与压缩比之间的权衡的参数。CRF(Constant Rate Factor)是一种基于目标质量的恒定比特率控制方法,它允许你设置输出视频的质量水平。CRF值越小,视频的质量越高,但文件大小也会增加。

在一般情况下,CRF值的范围是0到51。不同的范围值对应不同的质量和压缩级别。以下是一些常用的CRF值和对应的特征:

  • 0:无损模式,产生非常大的文件,质量最好。
  • 18-28:一般推荐范围,较高的质量和文件大小平衡。
  • 23:默认值,适用于大多数情况,提供良好的质量和合理的文件大小。
  • 29-51:较低质量的范围,适用于低比特率压缩或要求较小文件大小的情况。

你可以根据自己的需求和偏好选择合适的CRF值。较低的CRF值会提供更好的质量,但会增加文件大小。较高的CRF值会减小文件大小,但可能导致一些质量损失。

请注意,不同的视频编解码器可能对CRF值的范围有所不同,具体取值范围和效果可能会有所差异。建议在实际应用中进行测试和调整,以找到最适合你需求的CRF值。

4.2 preset

在FFmpeg中,-preset参数用于设置视频编码器的预设(preset)。预设是一组预定义的编码参数,可以影响编码速度和输出质量之间的权衡。不同的预设提供了不同的速度和质量选项。

以下是一些常用的预设选项:

  • ultrafast:最快的编码速度,但质量较低。
  • superfast:非常快的编码速度,稍微降低了一些质量。
  • veryfast:非常快的编码速度,质量稍低。
  • faster:快速的编码速度,质量略有降低。
  • fast:相对较快的编码速度,质量较好。
  • medium:平衡了速度和质量,是默认预设。
  • slow:较慢的编码速度,质量更好。
  • slower:更慢的编码速度,质量更高。
  • veryslow:非常慢的编码速度,提供最好的质量。

这些预设选项提供了不同的速度和质量平衡。如果你希望编码速度更快,可以选择速度较快的预设,但可能会牺牲一些质量。如果你更注重输出质量,可以选择速度较慢的预设,但编码速度会变慢。

你可以根据你的需求选择适合的预设选项。要指定预设,请使用-preset参数后跟预设名称,例如-preset medium

请注意,不同的视频编解码器可能支持不同的预设选项,具体的预设选项和效果可能会有所不同。建议在实际应用中进行测试和调整,以找到最适合你需求的预设选项。

5.调节视频帧率

ffmpeg -i input.mp4 -r 24 output.mp4

-i 选项指定了输入文件的名称为 input.mp4-r 选项指定了输出文件的帧速率为 24 帧每秒(fps),并且 output.mp4 是输出文件的名称。

6.调节帧率,尽可能保证原视频质量的情况下将原始视频压缩

将5和6的总结起来

ffmpeg -i input.mp4 -r 24 -crf 23 -preset slower output.mp4

效果是将我原先10兆大小的视频文件,压缩到了5兆。

相关文章:

ffmpeg使用手册

ffmpeg使用手册 文章目录 ffmpeg使用手册ffmpeg是什么指令总结1.查看ffmpeg版本2.mkv转mp43.裁剪 .mkv 视频4.不调节帧率,尽可能保证原视频质量的情况下将原始视频压缩4.1 crf4.2 preset 5.调节视频帧率6.调节帧率,尽可能保证原视频质量的情况下将原始视…...

操作系统导论-课后作业-ch15

对应异步社区资源HW-Relocation: 1. 种子1运行结果: 种子2运行结果: 种子3运行结果: 2. 需要将界限设置为930,结果如下: 3. 有人说原书翻译有误,原文如下所示: 原文翻译如…...

宝塔面板SRS音视频TRC服务器启动失败

首先,查找原因 1.先看srs服务在哪 find / -type f -name srs 2>/dev/null运行结果: /var/lib/docker/overlay2/5347867cc0ffed43f1ae24eba609637bfa3cc7cf5f8c660976d2286fa6a88d2b/diff/usr/local/srs/objs/srs /var/lib/docker/overlay2/5347867…...

04-Seata修改通信端口

基于docker环境部署下,可以翻看专栏之前的文章 配置文件 /home/server/seata/resources/application.yml 默认${server.port} 1000 1、修改服务端(TC)配置 seata:server:service-port: 7090 2、修改映射端口 在启动脚本中修改映射端口 docker run -id --nam…...

活动回顾丨云原生技术实践营上海站「云原生 AI 大数据」专场(附 PPT)

AI 势不可挡,“智算”赋能未来。2024 年 1 月 5 日,云原生技术实践营「云原生 AI &大数据」专场在上海落幕。活动聚焦容器、可观测、微服务产品技术领域,以云原生 AI 工程化落地为主要方向,希望帮助企业和开发者更快、更高效地…...

【数据结构与算法】4.自主实现单链表的增删查改

📚博客主页:爱敲代码的小杨. ✨专栏:《Java SE语法》 ❤️感谢大家点赞👍🏻收藏⭐评论✍🏻,您的三连就是我持续更新的动力❤️ 🙏小杨水平有限,欢迎各位大佬指点&…...

Linux系统常用命令行指令

Linux系统是一种常用于开源项目开发的生产环境,因其免费、开源、安全、稳定的特点被广泛应用于手机、平板电脑、路由器、电视和电子游戏机等嵌入式系统中,能够更加简便地让用户知道系统是怎样工作的。前几日我安装好了Red Hat Enterprise Linux 9.0&…...

java SSM园林绿化管理系统myeclipse开发mysql数据库springMVC模式java编程计算机网页设计

一、源码特点 java SSM园林绿化管理系统是一套完善的web设计系统(系统采用SSM框架进行设计开发,springspringMVCmybatis),对理解JSP java编程开发语言有帮助,系统具有完整的源代 码和数据库,系统主要采…...

【issue-halcon例程学习】edges_color.hdev

例程功能 演示如何使用edges_color,展示只能从彩色图像中提取某些边缘的图像,说明edges_color和edges_image输出之间的差异。 代码如下 dev_update_off () read_image (Image, olympic_stadium) get_image_size (Image, Width, Height) dev_close_wind…...

设计模式—行为型模式之备忘录模式

设计模式—行为型模式之备忘录模式 备忘录(Memento)模式:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便以后当需要时能将该对象恢复到原先保存的状态。该模式又叫快照模…...

CMS如何调优

业务JVM频繁Full GC如何排查 原则是先止损,再排查。 FGC的原因是对象晋升失败或者并发模式失败,原因都是老年代放不下晋升的对象了。 1.可能是大对象导致的内存泄漏。快速排查方法:观察数据库网络IO是否和FGC时间点吻合,找到对应…...

在PyCharm中安装GitHub Copilot插件,login之后报出如下错误:

Sign in failed. Reason: Request signInInitiate failed with message: connect ECONNABORTED 20.205.243.166:443, request id: 7, error code: -32603 前提: 设置网址:https://github.com/settings/copilot,已设置为允许 或者&#xff1…...

L1-093 猜帽子游戏(Java)

宝宝们在一起玩一个猜帽子游戏。每人头上被扣了一顶帽子,有的是黑色的,有的是黄色的。每个人可以看到别人头上的帽子,但是看不到自己的。游戏开始后,每个人可以猜自己头上的帽子是什么颜色,或者可以弃权不猜。如果没有…...

JVM篇--JVM调优高频面试题

1 说一下 JVM 调优的工具? JDK 自带了很多监控工具,都位于 JDK 的 bin 目录下,其中最常用的是jconsole 和 jvisualvm 这两款视图监控工具。 jconsole:用于对 JVM 中的内存、线程和类等进行监控; jvisualvm&#xff1a…...

微软 AD 介绍 | 安全建议 | 防护

介绍: 什么是Active Directory(AD)? Active Directory 是由 微软开发的目录服务,用于存储和管理网络中的资源,如计算机、用户、组和其他网络对象。允许组织管理员轻松地管理和验证网络中的用户和计算机。 …...

React16源码: React中的reconcileChildren的源码实现

reconcileChildren 1 )概述 在更新了一个节点之后,拿到它的props.children要根据这个children里面的 ReactElement 来去创建子树的所有的 fiber 对象要根据 props.children 来生成 fiber 子树,然后判断 fiber 对象它是否是可以复用的 因为我…...

幻兽帕鲁Docker服务端搭建

幻兽帕鲁Docker服务端搭建 各种命令 https://bbs.saraba1st.com/2b/thread-2168983-1-1.html 存档恢复 这里直接看这个工程的readme就行:https://github.com/yoko-murasame/palworld-host-save-fix 其他参考:https://forum.gamer.com.tw/C.php?bsn7…...

【ARM Cortex-M 系列 1.1 -- Cortex-M33 与 M4 差异 详细介绍】

请阅读【嵌入式开发学习必备专栏 之 Cortex-Mx 专栏】 文章目录 背景Cortex-M33 与 M4 差异Cortex-M33Cortex-M4关系和差异举例说明 背景 在移植 RT-Thread 到 瑞萨RA4M2(Cortex-M33)上时,遇到了hardfault 问题,最后使用了Cortex…...

docker 部署及命令

一、容器概述 1、为什么要用到容器? ①容器可以屏蔽底层操作系统的差异性,让业务应用不管在哪里都是使用容器的环境运行,从而保证开发测试环境与生产环境的一致性 ②容器部署起来非常便捷和迅速,缩短开发测试部署的周期时间 2…...

API接口安全总结

接口分类 HTTP接口 RPC接口(客户端和服务器端的连接 例如游戏登陆)非web协议,PRC 远程过程调用 Remote Procedure Call,其就是一个节点请求另外一个节点提供的服务。当两个物理分离的子系统需要建立逻辑上的关联时,R…...

eNSP-Cloud(实现本地电脑与eNSP内设备之间通信)

说明: 想象一下,你正在用eNSP搭建一个虚拟的网络世界,里面有虚拟的路由器、交换机、电脑(PC)等等。这些设备都在你的电脑里面“运行”,它们之间可以互相通信,就像一个封闭的小王国。 但是&#…...

业务系统对接大模型的基础方案:架构设计与关键步骤

业务系统对接大模型:架构设计与关键步骤 在当今数字化转型的浪潮中,大语言模型(LLM)已成为企业提升业务效率和创新能力的关键技术之一。将大模型集成到业务系统中,不仅可以优化用户体验,还能为业务决策提供…...

P3 QT项目----记事本(3.8)

3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...

ios苹果系统,js 滑动屏幕、锚定无效

现象&#xff1a;window.addEventListener监听touch无效&#xff0c;划不动屏幕&#xff0c;但是代码逻辑都有执行到。 scrollIntoView也无效。 原因&#xff1a;这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作&#xff0c;从而会影响…...

聊一聊接口测试的意义有哪些?

目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开&#xff0c;首…...

C++八股 —— 单例模式

文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全&#xff08;Thread Safety&#xff09; 线程安全是指在多线程环境下&#xff0c;某个函数、类或代码片段能够被多个线程同时调用时&#xff0c;仍能保证数据的一致性和逻辑的正确性&#xf…...

return this;返回的是谁

一个审批系统的示例来演示责任链模式的实现。假设公司需要处理不同金额的采购申请&#xff0c;不同级别的经理有不同的审批权限&#xff1a; // 抽象处理者&#xff1a;审批者 abstract class Approver {protected Approver successor; // 下一个处理者// 设置下一个处理者pub…...

Caliper 配置文件解析:fisco-bcos.json

config.yaml 文件 config.yaml 是 Caliper 的主配置文件,通常包含以下内容: test:name: fisco-bcos-test # 测试名称description: Performance test of FISCO-BCOS # 测试描述workers:type: local # 工作进程类型number: 5 # 工作进程数量monitor:type: - docker- pro…...

MFE(微前端) Module Federation:Webpack.config.js文件中每个属性的含义解释

以Module Federation 插件详为例&#xff0c;Webpack.config.js它可能的配置和含义如下&#xff1a; 前言 Module Federation 的Webpack.config.js核心配置包括&#xff1a; name filename&#xff08;定义应用标识&#xff09; remotes&#xff08;引用远程模块&#xff0…...

ThreadLocal 源码

ThreadLocal 源码 此类提供线程局部变量。这些变量不同于它们的普通对应物&#xff0c;因为每个访问一个线程局部变量的线程&#xff08;通过其 get 或 set 方法&#xff09;都有自己独立初始化的变量副本。ThreadLocal 实例通常是类中的私有静态字段&#xff0c;这些类希望将…...