FFmepeg——视频处理工具安装以及简单命令学习。

FFmpeg 是一个免费、开源且高度可定制的多媒体处理工具,它是一个强大的跨平台框架,用于处理音频、视频、多媒体流和图像。FFmpeg 的主要功能包括解码、编码、转码、流处理、多路复用、分离、合并、过滤等,支持多种音视频格式,包括但不限于MP4、AVI、MKV、MP3、H.264、H.265、AAC 等。

前往官网下载 Download FFmpeg

官方文档:ffmpeg Documentation(具体还有很多功能,可以查看官方文档学习)

安装

windows:

将下载的压缩包,解压缩

将\bin目录加到环境变量,添加后在黑窗口,查看是否有ffmpeg命令;

这样安装就ok了。

基础命令

1. 转码视频格式:

ffmpeg -i input.mp4 -c:v libx264 -c:a aac output.mp4
  • -i input.mp4:指定输入文件为input.mp4,这是要重新编码的源视频文件。
  • -c:v libx264:指定使用libx264编码器来进行视频编码。libx264是一种高效的H.264视频编码器,通常提供高质量的视频压缩。
  • -c:a aac:指定使用AAC编码器进行音频编码。AAC是一种常见的音频编码格式,它在维持高音质的同时提供了较小的文件大小。
  • output.mp4:指定输出文件的名称为output.mp4,这是重新编码后的视频文件的保存位置。

2. 转码音频格式:

ffmpeg -i input.mp3 -c:a aac -b:a 256k output.m4a
  • -i input.mp3:指定输入文件为input.mp3,这是要重新编码的源音频文件。
  • -c:a aac:指定使用AAC编码器进行音频编码。这将重新编码音频文件为AAC格式。
  • -b:a 256k:指定音频的目标比特率为256Kbps。这将控制新生成的AAC文件的音频质量和文件大小。
  • output.m4a:指定输出文件的名称为output.m4a,这是重新编码后的音频文件的保存位置。

3. 剪辑视频:

ffmpeg -i input.mp4 -ss 00:01:00 -t 00:00:30 -c:v copy -c:a copy output.mp4
  • -i input.mp4:指定输入文件为input.mp4,这是要进行剪切操作的源视频文件。
  • -ss 00:01:00:这是用来指定开始时间点的选项。在这里,-ss后面的时间戳00:01:00表示从视频的1分钟处开始剪切。
  • -t 00:00:30:这是用来指定持续时间的选项。在这里,-t后面的时间戳00:00:30表示截取30秒的视频。
  • -c:v copy:这部分表示视频流将保持不变,不进行重新编码。 -c:v copy 意味着视频流会被直接复制到输出文件中,无需重新压缩视频。
  • -c:a copy:这部分表示音频流也将保持不变,不进行重新编码。 -c:a copy 意味着音频流会被直接复制到输出文件中,无需重新编码音频。
  • output.mp4:指定输出文件的名称为output.mp4,这是剪切后的视频文件的保存位置。

4. 合并多个视频

ffmpeg -i input1.mp4 -i input2.mp4 -filter_complex "concat=n=2:v=1:a=1" -c:v libx264 -c:a aac output.mp4
  • -i input1.mp4:指定第一个输入文件为input1.mp4,这是要合并的第一个视频文件。
  • -i input2.mp4:指定第二个输入文件为input2.mp4,这是要合并的第二个视频文件。
  • -filter_complex "concat=n=2:v=1:a=1":这是使用-filter_complex选项来应用复杂的滤镜图。在这里,concat=n=2:v=1:a=1 是一个复合滤镜,它告诉FFmpeg合并两个输入视频文件,n=2表示两个输入,v=1表示合并视频流,a=1表示合并音频流。
  • -c:v libx264:指定使用libx264编码器进行视频编码。这将重新编码合并后的视频。
  • -c:a aac:指定使用AAC编码器进行音频编码。这将重新编码合并后的音频。
  • output.mp4:指定输出文件的名称为output.mp4,这是合并后的视频文件的保存位置。

5. 改变分辨率

ffmpeg -i input.mp4 -vf "scale=1280:720" output.mp4
  • -i input.mp4:指定输入文件为input.mp4,这是要进行分辨率调整操作的源视频文件。
  • -vf "scale=1280:720":这是使用 -vf(视频滤镜)选项来应用视频滤镜。在这里,scale=1280:720 是一个视频滤镜,它告诉FFmpeg将视频重新缩放为1280x720像素的分辨率。
  • output.mp4:指定输出文件的名称为output.mp4,这是调整分辨率后的新视频文件的保存位置。

6. 同时转换多个视频文件

ffmpeg -i input1.ts -i input2.ts -i input3.ts -c:v libx264 -c:a aac output1.mp4 -output2.mp4 -output3.mp4

这个命令将依次处理每个输入文件(input1.ts、input2.ts 和 input3.ts),为每个输入文件分别创建一个输出文件(output1.mp4、output2.mp4 和 output3.mp4)。每次 -i 后面的输入文件都会对应一个 -c:v(视频编码器选项)和 -c:a(音频编码器选项),以确定每个输出文件的编码方式。

拼接视频方法

  1. 方法一:FFmpeg concat 协议

    对于 MPEG 格式的视频,可以直接连接:

    ffmpeg -i "concat:input1.mpg|input2.mpg|input3.mpg" -c copy output.mpg

    对于非 MPEG 格式容器,但是是 MPEG 编码器(H.264、DivX、XviD、MPEG4、MPEG2、AAC、MP2、MP3 等),可以包装进 TS 格式的容器再合并。在新浪视频,有很多视频使用 H.264 编码器,可以采用这个方法

    ffmpeg -i input1.flv -c copy -bsf:v h264_mp4toannexb -f mpegts input1.ts

    ffmpeg -i input2.flv -c copy -bsf:v h264_mp4toannexb -f mpegts input2.ts

    ffmpeg -i input3.flv -c copy -bsf:v h264_mp4toannexb -f mpegts input3.ts

    ffmpeg -i "concat:input1.ts|input2.ts|input3.ts" -c copy -bsf:a aac_adtstoasc -movflags +faststart output.mp4

    保存 QuickTime/MP4 格式容器的时候,建议加上 -movflags +faststart。这样分享文件给别人的时候可以边下边看。

  2. 直接备注分辨率

    ffmpeg -i begin.mp4 -i mid.mp4 -i end.mp4 -filter_complex "[0:v]scale=1920:1080[0v];[1:v]scale=1920:1080[1v];[2:v]scale=1920:1080[2v];[0v][0:a][1v][1:a][2v][2:a]concat=n=3:v=1:a=1[v][a]" -map "[v]" -map "[a]" -c:v libx264 -c:a aac output.mp4

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

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

相关文章

研发管理-代码管理篇

前言: 工作了这些年,工作了三家公司,也用过主流的代码管理平台,比如SVN,git系列(gitlib,gitee),各有优点,我个人比较喜欢SVN,多人协作的代码管理难免会有代码冲突&#…

【QT表格-6】QTableWidget的currentCellChanged实现中途撤销

背景: 【QT表格-1】QStandardItem的堆内存释放需要单独delete,还是随QStandardItemModel的remove或clear自动销毁?-CSDN博客 【QT表格-2】QTableWidget单元格结束编辑操作endEditting_qtablewidget 单元格编辑事件-CSDN博客 【QT表格-3】Q…

LLama Factory 安装部署实操记录(二)

1. 项目地址 GitHub - hiyouga/LLaMA-Factory: Easy-to-use LLM fine-tuning framework (LLaMA, BLOOM, Mistral, Baichuan, Qwen, ChatGLM)Easy-to-use LLM fine-tuning framework (LLaMA, BLOOM, Mistral, Baichuan, Qwen, ChatGLM) - GitHub - hiyouga/LLaMA-Factory: Easy…

hive命令启动出现classnotfound

环境:ambari集群三个节点node104、node105和node106,其中node105上有hiveserver2,并且三个节点均有HIVE CLIENT 注意:“./”指hive安装目录 其中装有hiveserver2的node105节点,由于某种需要向lib目录下上传了某些jar包…

无人机支持的空中无蜂窝大规模MIMO系统中上行链路分布式检测

无人机支持的空中无蜂窝大规模MIMO系统中上行链路分布式检测 无人机支持的空中无蜂窝大规模MIMO系统中上行链路分布式检测介绍题目一. 背景(解决的问题)二. 系统模型2.1 信道模型2.1.1 信道系数2.1.2 进行标准化 2.2 信道估计 和 数据传输2.2.1 信道估计…

环境搭建及源码运行_java环境搭建_idea版本下载及安装

1、介绍 Idea是一款被广泛使用的Java集成开发环境,它提供了丰富的功能和工具来帮助开发人员更高效地编写和调试代码。作为一款开源软件,Idea不仅提供了基本的代码编辑、自动完成和调试功能,还支持大量的插件和扩展,可为开发人员提…

将Abp默认事件总线改造为分布式事件总线

文章目录 原理创建分布式事件总线实现自动订阅和事件转发 使用启动Redis服务配置传递Abp默认事件传递自定义事件 项目地址 原理 本地事件总线是通过Ioc容器来实现的。 IEventBus接口定义了事件总线的基本功能,如注册事件、取消注册事件、触发事件等。 Abp.Events…

MySQL之表的约束

目录 前言 not null约束 default约束 同时设置not null约束和default约束 comment约束 zerofill约束 primary key约束(又称主键约束) 复合主键约束 auto_increment约束(又称自增长约束) unique约束(又称唯一…

Redis分布式缓存-Redis持久化

RDB持久化 RDB全称Redis Database Backup file(Redis数据备份文件),也被叫做Redis数据快照。简单来说就是把内存中的所有数据都记录到磁盘中。当Redis实例故障重启后,从磁盘读取快照文件,恢复数据。快照文件称为RDB文…

cpp_04_类_对象_this指针_常对象_常(成员)函数

1 类 1.1 类的定义 类的作用是抽象事物(抽取事物特征)的规则。 类的外化表现是用户自定义的复合数据类型(包括成员变量、成员函数): 成员变量用于表达事物的属性,成员函数用于表达事物的行为。 类的表现…

力扣79. 单词搜索(java DFS解法)

Problem: 79. 单词搜索 文章目录 题目描述思路解题方法复杂度Code 题目描述 思路 该问题可以归纳为一类遍历二维矩阵的题目,此类中的一部分题目可以利用DFS来解决,具体到本题目(该题目可以的写法大体不变可参看前面几个题目:&…

校园圈子交友系统,APP小程序H5,三端源码交付,支持二开!实名认证,大V认证,地图找伴,二手平台!

校园圈子交友系统,是属于自主定义开发的系统,内容有很多,先截取一些给大家看看,让大家更多的了解本系统,然后再做评价! 校园后端下载地址:校园圈子系统小程序,校园拼车,校…

Netty Review - StringEncoder字符串编码器和StringDecoder 解码器的使用与源码解读

文章目录 概念概述StringEncoderStringDecoder Code源码分析StringEncoderStringDecoder 小结 概念 概述 Netty是一个高性能的网络应用程序框架,它提供了丰富的功能,包括编解码器,这些编解码器用于在网络中发送和接收数据时进行数据的编码和…

mac电脑安装虚拟机教程

1、准备一台虚拟机,安装CentOS7 常用的虚拟化软件有两种: VirtualBoxVMware 这里我们使用VirtualBox来安装虚拟机,下载地址:Downloads – Oracle VM VirtualBox 001 点击安装 002 报错:he installer has detected an…

uni-app 用于开发H5项目展示饼图,使用ucharts 饼图示例

先下载ucharts H5示例源码: uCharts: 高性能跨平台图表库,支持H5、APP、小程序(微信小程序、支付宝小程序、钉钉小程序、百度小程序、头条小程序、QQ小程序、快手小程序、360小程序)、Vue、Taro等更多支持canvas的框架平台&#…

在Windows系统平台下部署运行服务端Idea工程的jar服务

前言 目前云原生docker等技术,加上部署流水线大大的简化了各种流程,我们后端开发的人员只需要提交代码后,构建、部署、测试、发布等环节都无需人员接入,完全的自动化交付了。那么你肯定不禁想问,如题的需求不是点击一…

pyCharm 创建一个FastApi web项目,实现接口调用

FastApi和Django区别 我这边演示项目使用的fastApi作为web框架,当然主流一般都是使用Django做web框架,但是Django是一个重量级web框架他有很多组件,如授权,分流等全套web功能。我这边呢只需要有个接口可以被别人调用,…

python 绘制网格图/马赛克图

python 绘制网格图/马赛克图 文章目录 python 绘制网格图/马赛克图前言 前言 python绘制网格并在相应的坐标填充颜色 参考博客 def mplot_intf(t, data):plt.rcParams["figure.figsize"] (t, len(data))plt.rcParams["xtick.major.size"] 0plt.rcParams…

ios微信小程序table头部与左侧固定双重滚动会抖动的坑,解决思路

正常情况是左右滑动时,左侧固定不动,上下滑动时表头不动;而且需求不是完整页面滚动。而是单独这个表滚动; 第一个坑是他有一个ios自带的橡胶上下回弹效果。导致滚动时整个表都跟着回弹; 这个是很好解决。微信开发官网…

Achronix提供由FPGA赋能的智能网卡(SmartNIC)解决方案来打破智能网络性能极限

作者:Achronix 随着人工智能/机器学习(AI/ML)和其他复杂的、以数据为中心的工作负载被广泛部署,市场对高性能计算的需求持续飙升,对高性能网络的需求也呈指数级增长。高性能计算曾经是超级计算机这样一个孤立的领域&a…