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

ffmpeg工具实用命令

说明:ffmpeg是一款非常好用的媒体操作工具,包含了许多对于视频、音频的操作,有些视频播放器里面实际上就是使用了ffmpeg。本文介绍ffmpeg的使用以及一些较为实用的命令。

安装

ffmpeg是命令行操作的,不需要安装,可在官网下载压缩包;

在这里插入图片描述

解压到一个没有中文、没有数字的路径下,配置一下环境变量,这些都是基本操作,不再详细介绍;

在这里插入图片描述

打开CMD,输入ffmepg,出现以下信息表示环境变量配置成功;

在这里插入图片描述

使用

命令1:提取视频所有帧

有时我们需要对视频图像进行处理,可以考虑把视频按帧提取出来成图片,再使用代码对图像进行逐帧处理,可使用以下命令:

ffmpeg -i <视频文件名> -r 60(帧数) -qscale:v 2 out/%04d.jpg(图片路径及命令规则)

参数介绍:

  • out/%04d.jpg:表示提取出来的图片放在当前目录下的out文件夹,名称按照"0001.jpg、0002.jpg……"的方式命名;

比如,我这里有一个视频(before.mp4)

在这里插入图片描述

在当前目录创建一个out文件夹,用于接收图片,输入下面命令,将视频按照24帧/秒转为图片;

在这里插入图片描述

可以感受到提取速度还是非常快的,1分半的视频,2090帧,几秒钟就全部提取出来了,这是因为ffmpeg工具是使用C系语言开发的;

在这里插入图片描述

另外,记住转换的解码率,后面合并图片为视频时需要用;

在这里插入图片描述

命令2:图片合成视频

一般来说,我们将上面提取出来的图片进行了一些处理后,就可以将处理后的图片集合成视频,使用下面这行命令:

ffmpeg -f image2 -framerate 24(帧数) -i %04d.jpg -b:v 5626k(转码率) <生成视频名>
  • %04d.jpg:表示输入的图片集合是以“0001.jpg、0002.jpg……”命名规则命名的;

比如将上面提取出来的图片再合成一个视频,如下:

在这里插入图片描述

啊?!视频怎么这么小,并且画质非常糟糕?

在这里插入图片描述

因为上面的命令中,解码率是7920k,我少了一个k,删掉视频,重新合并:

在这里插入图片描述

这会正常了,而且画质也和原视频一样,所以注意合并视频时,解码率需要和提取视频帧时一致

在这里插入图片描述

命令3:提取视频的音频

可使用下面的命令,提取出视频中的音频;

ffmpeg -i <视频文件> -f mp3 -vn <生成的音频文件>

比如把我这个视频(before.mp4)中的音频提取出来,命名为audio.mp3

在这里插入图片描述

实际使用时,可以灵活一点,比如需要把某种音频类型,转为另一种类型,直接修改后缀名可能会造成文件损坏不可用,就可以使用这种方式进行提取,达到音频类型转换的目的;

在这里插入图片描述

命令4:音视频合并

可以使用下面这个命令,把音频和视频进行合并;

ffmpeg -i <视频文件名> -i <音频文件名> -c:v copy -c:a aac -strict experimental <生成视频名>

像上面使用命令2合成的视频,当然是没有声音的,想做成一个完整的视频,还需要把音频进行合并,如下:

在这里插入图片描述

这样,一个完整的视频抽取图片,处理图片,提取音频,合成视频的制作流程就完成了;

在这里插入图片描述

命令5:分割视频

分割视频的命令有许多方式,如下:

ffmpeg -ss 01:00:00 -i <视频文件> -vcodec copy -acodec copy -t 00:06:00 <生成视频文件>ffmpeg -ss 00:00:00 -i <视频文件> -c copy -t  600  <生成视频文件>ffmpeg -i <视频文件> -ss 1 -c copy -to 75 <生成视频文件>

我最喜欢用最后这种,非常方便,前面的数字表示起始秒,后面表示末尾秒,比如把上面的视频final.mp4截取第10~20秒,如下:

在这里插入图片描述

需要注意,切割视频会有画面的丢失,需要手动微调一下分割点,比如从10秒开始,画面有丢失,稍微加一点,比如10.5秒,10.7秒可能丢失的画面会变少(当然减一点也可以,看自己的情况),可通过微调达到画面基本不丢失;

在这里插入图片描述

命令6:合并视频

可输入以下命令,合并两个视频;

ffmpeg -f concat -safe 0 -i <合并视频列表.txt> -c copy <生成视频名.mp4>
  • 合并视频列表.txt:指合并的视频清单,如下表示合并part1.mp4,part2.mp4这两个视频;

在这里插入图片描述

我再分割出来一个视频(part2.mp4),然后把这两个视频进行合并,如下:

在这里插入图片描述


在这里插入图片描述

命令7:播放视频

上面合成后的视频通过系统播放器可能无法播放,这时可以通过ffmpeg自带的播放视频/音频的命令ffplay来打开视频/音频文件;

ffplay <视频/音频文件>

打开上面合成的视频,如下:

在这里插入图片描述

总结

ffmpeg是一款非常方便,功能强大的媒体操作工具,本文介绍了ffmpeg较为常用的一些操作命令;

相关文章:

ffmpeg工具实用命令

说明&#xff1a;ffmpeg是一款非常好用的媒体操作工具&#xff0c;包含了许多对于视频、音频的操作&#xff0c;有些视频播放器里面实际上就是使用了ffmpeg。本文介绍ffmpeg的使用以及一些较为实用的命令。 安装 ffmpeg是命令行操作的&#xff0c;不需要安装&#xff0c;可在…...

zabbix API笔记

博客园原文 python简单demo 输出id为111主机的主机群组信息 import requests import json request_headers {"Content-Type": "application/json"} zabbix_url "http://xxx.xxx.xxx.xxx:8080/zabbix/api_jsonrpc.php" get_hostgroup_from_h…...

[HDLBits] Mt2015 q4a

Module A is supposed to implement the function z (x^y) & x. Implement this module. module top_module (input x, input y, output z);assign z(x^y)&x; endmodule...

HarmonyOS NEXT,生命之树初长成

在不同的神话体系中&#xff0c;都有着关于生命之树的记载。 比如在北欧神话中&#xff0c;一株巨大的树木联结着九大世界&#xff0c;其被称为“尤克特拉希尔”Yggdrasill。在中国的《山海经》中&#xff0c;也有着“建木”的传说&#xff0c;它“有九欘&#xff0c;下有九枸&…...

PHPstudy配置伪静态步骤,tp5.1的框架

搜索mod_rewrite.so&#xff0c;然后去掉前面的#&#xff08;即放开注释&#xff09; 2.找到index.php 同级文件.htaccess&#xff08;没有就新建&#xff09; 这些是tp5.1自带的内容&#xff0c;把它注释掉&#xff0c;是错误的内容&#xff0c;添加下面的这段配置 #<If…...

LeetCode:Hot100的python版本

94. 二叉树的中序遍历...

rv1126更新rknpu驱动教学

测试平台&#xff1a;易佰纳rv1126 38板 查看板端版本-------------------------------------------------- 1&#xff1a;查看npu驱动版本 dmesg | grep -i galcore&#xff0c;可以看到版本为6.4.3.5 2&#xff1a;查看rknn-server版本 strings /usr/bin/rknn_server | g…...

[机器学习]线性回归模型

线性回归 线性回归&#xff1a;根据数据&#xff0c;确定两种或两种以上变量间相互依赖的定量关系 函数表达式&#xff1a; y f ( x 1 , x 2 . . . x n ) y f(x_1,x_2...x_n) yf(x1​,x2​...xn​) ​ 回归根据变量数分为一元回归[ y f ( x ) yf(x) yf(x)]和多元回归[ y …...

Vue基于php医院预约挂号系统_6nrhh

随着信息时代的来临&#xff0c;过去的管理方式缺点逐渐暴露&#xff0c;对过去的医院预约挂号管理方式的缺点进行分析&#xff0c;采取计算机方式构建医院预约挂号系统。本文通过阅读相关文献&#xff0c;研究国内外相关技术&#xff0c;开发并设计一款医院预约挂号系统的构建…...

2023-08-07力扣今日六题-不错题

链接&#xff1a; 剑指 Offer 04. 二维数组中的查找 题意&#xff1a; 一个二维矩阵数组&#xff0c;在行上非递减&#xff0c;列上也非递减 解&#xff1a; 虽然在行列上非递减&#xff0c;但是整体并不有序&#xff0c;第一行存在大于第二行的数字&#xff0c;第一列存在…...

Elasticsearch搜索出现NAN异常

原因分析 Elasticsearch默认的打分&#xff0c;一般是不会出现异常的之所以会出现NAN异常&#xff0c;往往是因为我们重新计算了打分&#xff0c;使用了function_score核心原因是在function_score中&#xff0c;出现了计算异常&#xff0c;比如 0/0,比如log1p(x),x为负数等 真…...

(杭电多校)2023“钉耙编程”中国大学生算法设计超级联赛(6)

1001 Count 当k在区间(1n)/2的左边时,如图,[1,k]和[n-k1,n]完全相同,所以就m^(n-k) 当k在区间(1n)/2的右边时,如图,[1,n-k1]和[k,n]完全相同,所以也是m^(n-k) 别忘了特判,当k等于n时,n-k为0,然后a1a1,a2a2,..anan,所以没什么限制,那么就是m^n AC代码&#xff1a; #includ…...

【JavaScript 】浏览器事件处理

1. 什么是浏览器事件? 浏览器事件是指在网页中发生的各种交互和动作,例如用户点击按钮、页面加载完成、输入框文本变化等。通过处理这些事件,可以编写相应的JavaScript代码来实现特定的功能和行为。 2. 常见的浏览器事件 以下是一些常见的浏览器事件及其用途的详细介绍: c…...

(力扣)用两个队列实现栈---C语言

分享一首歌曲吧&#xff0c;希望在枯燥的刷题生活中带给你希望和勇气&#xff0c;加油&#xff01; 题目&#xff1a; 请你仅使用两个队列实现一个后入先出&#xff08;LIFO&#xff09;的栈&#xff0c;并支持普通栈的全部四种操作&#xff08;push、top、pop 和 empty&#…...

使用 RediSearch 在 Redis 中进行全文检索

原文链接&#xff1a; 使用 RediSearch 在 Redis 中进行全文检索 Redis 大家肯定都不陌生了&#xff0c;作为一种快速、高性能的键值存储数据库&#xff0c;广泛应用于缓存、队列、会话存储等方面。 然而&#xff0c;Redis 在原生状态下并不支持全文检索功能&#xff0c;这使…...

[Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认驱动程序

1.今天开发了一套服务程序&#xff0c;使用的是Odbc连接MySql数据库&#xff0c; 在我本机用VS打开程序时&#xff0c;访问一切正常&#xff0c;当发布出来装在电脑上&#xff0c;连接数据库时提示&#xff1a; [Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定…...

springboot生成表结构和表数据sql

需求 业务背景是需要某单机程序需要把正在进行的任务导出&#xff0c;然后另一台电脑上单机继续运行&#xff0c;我这里选择的方案是同步SQL形式&#xff0c;并保证ID随机&#xff0c;多个数据库不会重复。 实现 package com.nari.web.controller.demo.controller;import cn…...

代码随想录—力扣算法题:209长度最小的子数组.Java版(示例代码与导图详解)

版本说明 当前版本号[20230808]。 版本修改说明20230808初版 目录 文章目录 版本说明目录209.长度最小的子数组思路暴力解法滑动窗口 两种方法的区别总结 209.长度最小的子数组 力扣题目链接 更多内容可点击此处跳转到代码随想录&#xff0c;看原版文件 给定一个含有 n 个…...

81 | Python可视化篇 —— Seaborn数据可视化

Seaborn是Python中一个基于Matplotlib的高级数据可视化库,它提供了更简单的API和更美观的图形样式,适用于数据探索和展示。在本教程中,我们将介绍Seaborn的基本概念和用法,并通过一些示例演示如何使用Seaborn来创建各种图表和图形。 文章目录 1. 导入Seaborn库和数据2. 数据…...

解决Error running XXXApplicationCommand line is too long.报错

测试IDEA版本&#xff1a;2019.2.4 &#xff0c;2020.1.3 文章目录 一. 问题场景二. 报错原因2.1 为什么命令行过长会导致这种问题? 三. 解决方案3.1 方案一3.2 方案二 一. 问题场景 当我们从GitHub或公司自己搭建的git仓库上拉取项目代码时&#xff0c;会出现以下错误 报错代…...

【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器

一.自适应梯度算法Adagrad概述 Adagrad&#xff08;Adaptive Gradient Algorithm&#xff09;是一种自适应学习率的优化算法&#xff0c;由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率&#xff0c;适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...

【WiFi帧结构】

文章目录 帧结构MAC头部管理帧 帧结构 Wi-Fi的帧分为三部分组成&#xff1a;MAC头部frame bodyFCS&#xff0c;其中MAC是固定格式的&#xff0c;frame body是可变长度。 MAC头部有frame control&#xff0c;duration&#xff0c;address1&#xff0c;address2&#xff0c;addre…...

Spring Boot 实现流式响应(兼容 2.7.x)

在实际开发中&#xff0c;我们可能会遇到一些流式数据处理的场景&#xff0c;比如接收来自上游接口的 Server-Sent Events&#xff08;SSE&#xff09; 或 流式 JSON 内容&#xff0c;并将其原样中转给前端页面或客户端。这种情况下&#xff0c;传统的 RestTemplate 缓存机制会…...

相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解

【关注我&#xff0c;后续持续新增专题博文&#xff0c;谢谢&#xff01;&#xff01;&#xff01;】 上一篇我们讲了&#xff1a; 这一篇我们开始讲&#xff1a; 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下&#xff1a; 一、场景操作步骤 操作步…...

定时器任务——若依源码分析

分析util包下面的工具类schedule utils&#xff1a; ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类&#xff0c;封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz&#xff0c;先构建任务的 JobD…...

LLM基础1_语言模型如何处理文本

基于GitHub项目&#xff1a;https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken&#xff1a;OpenAI开发的专业"分词器" torch&#xff1a;Facebook开发的强力计算引擎&#xff0c;相当于超级计算器 理解词嵌入&#xff1a;给词语画"…...

成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战

在现代战争中&#xff0c;电磁频谱已成为继陆、海、空、天之后的 “第五维战场”&#xff0c;雷达作为电磁频谱领域的关键装备&#xff0c;其干扰与抗干扰能力的较量&#xff0c;直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器&#xff0c;凭借数字射…...

【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习

禁止商业或二改转载&#xff0c;仅供自学使用&#xff0c;侵权必究&#xff0c;如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...

【笔记】WSL 中 Rust 安装与测试完整记录

#工作记录 WSL 中 Rust 安装与测试完整记录 1. 运行环境 系统&#xff1a;Ubuntu 24.04 LTS (WSL2)架构&#xff1a;x86_64 (GNU/Linux)Rust 版本&#xff1a;rustc 1.87.0 (2025-05-09)Cargo 版本&#xff1a;cargo 1.87.0 (2025-05-06) 2. 安装 Rust 2.1 使用 Rust 官方安…...

在 Spring Boot 项目里,MYSQL中json类型字段使用

前言&#xff1a; 因为程序特殊需求导致&#xff0c;需要mysql数据库存储json类型数据&#xff0c;因此记录一下使用流程 1.java实体中新增字段 private List<User> users 2.增加mybatis-plus注解 TableField(typeHandler FastjsonTypeHandler.class) private Lis…...