ffmpeg简介及常用命令

1.什么是ffmpeg

ffmpeg即使一款音视频编解码工具,同时也是一组音视频编解码开发套件,作为编解码开发套件,它为开发者提供了丰富的音视频处理的调用接口。

ffmpeg提供了多种媒体格式的封装和解封装,包括多种音视频编码、多种协议的流媒体、多种色彩格式转换、多种采样率转换、多种码率转换等; ffmpeg框架提供了多种丰富的插件模块,包含封装和解封装的插件、编码与解码的插件等。

FFmpeg在Linux平台下开发,但它同样也可以在其它操作系统环境中编译运行,包括Windows、Mac OS X等。这个项目最早由Fabrice Bellard发起,2004年至2015年间由Michael Niedermayer主要负责维护。许多FFmpeg的开发人员都来自MPlayer项目,而且当前FFmpeg也是放在MPlayer项目组的服务器上。项目的名称来自MPEG视频编码标准,前面的"FF"代表"Fast Forward"。 FFmpeg编码库可以使用GPU加速。
ffmpeg中文文档

2.ffmpeg的模块:

libavformat

用于各种音视频封装格式的生成和解析,包括获取解码所需信息以生成解码上下文结构和读取音视频帧等功能

libavcodec

用于各种类型声音/图像编解码,包括目前多媒体领域中绝大多数常用的编解码格式

libavutil

包含一些公共的工具函数

ibswscale

用于视频场景比例缩放、色彩映射转换

libpostproc

用于后期效果处理

libavfilter

一个通用的音频、视频、字幕等滤镜处理框架,可以用其做一些音视频处理,如音视频倍速、水平翻转、裁剪、加方框、叠加文字等功能

libavdevice

可以读取电脑(或其他设备上)的多媒体设备的数据,或者输出到指定的多媒体设备上

libswresample

提供了高级别的音频重采样API

3.常用命令模板

3.1.转格式

转换视频格式,该命令将 MP4 格式的视频转换为 AVI 格式。

ffmpeg -i input.mp4 output.avi

转换音频格式,该命令将 MP3 格式的音频转换为 Ogg 格式。

ffmpeg -i input.mp3 output.ogg

提取视频中的音频,该命令从输入视频中提取音频并将其保存为 AAC 格式。

ffmpeg -i input.mp4 -vn -acodec copy output.aac

转换视频为 GIF,该命令将输入视频转换为 GIF 动画,先生成调色板,再将其应用于视频。

ffmpeg -i input.mp4 -vf "scale=320:-1:flags=lanczos,palettegen" -y palette.pngffmpeg -i input.mp4 -i palette.png -filter_complex "scale=320:-1:flags=lanczos[x];[x][1:v]paletteuse" -y output.gif

提取视频帧,该命令从输入视频中提取每秒钟的一帧,并将这些帧保存为 PNG 格式的图像文件。

ffmpeg -i input.mp4 -r 1 -f image2 output-%03d.png

提取某一帧,该命令从输入视频中提取第30秒的一帧,并将这些帧保存为 PNG 格式的图像文件。

ffmpeg -i input.mp4 -ss 00:00:30 -frames:v 1 output-30.png

3.2.修改视频

调整视频大小,该命令将输入视频的分辨率调整为 640x360 并将输出保存为 MP4 格式。

ffmpeg -i input.mp4 -vf scale=640:360 output.mp4

添加水印,该命令在输入视频的左上角添加一个水印,并将输出保存为 MP4 格式。

ffmpeg -i input.mp4 -i watermark.png -filter_complex "overlay=10:10" output.mp4

调整音频音量,该命令将输入音频的音量调整为原来的 2 倍,并将输出保存为 MP3 格式。

ffmpeg -i input.mp3 -af "volume=2" output.mp3

压缩视频,该命令将输入视频压缩为分辨率为 640x? 的视频,并使用 H.264 编码器进行编码。压缩质量由 CRF 参数控制,值越小压缩质量越高。Preset 参数控制编码速度,值越小编码速度越快,但压缩质量可能会降低。

ffmpeg -i input.mp4 -vf "scale=640:-1" -c:v libx264 -crf 23 -preset veryfast -c:a copy output.mp4

添加字幕,该命令将输入视频与字幕文件结合,将字幕文件编码为 mov_text 格式,将输出保存为 MP4 格式。

ffmpeg -i input.mp4 -i subtitle.srt -c:v copy -c:a copy -c:s mov_text -metadata:s:s:0 language=eng output.mp4

旋转视频,该命令将输入视频逆时针旋转 90 度,并将输出保存为 MP4 格式。

ffmpeg -i input.mp4 -vf "transpose=1" -c:a copy output.mp4

修改视频的帧率,该命令将输入视频的帧率修改为 30 帧每秒,然后使用 H.264 编码器进行编码。

ffmpeg -i input.mp4 -r 30 -c:v libx264 -crf 23 -preset veryfast -c:a copy output.mp4

3.3.拼接剪辑

裁剪视频,该命令从输入视频的第 10 秒开始裁剪,裁剪时长为 20 秒,然后将裁剪后的视频保存为 MP4 格式。

ffmpeg -i input.mp4 -ss 00:00:10 -t 00:00:20 -c copy output.mp4

合并多个视频文件,该命令将两个 MP4 格式的视频文件合并为一个文件,并将其保存为 MP4 格式。

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

分离视频的音频和视频流,该命令将输入视频的音频流和视频流分别保存为 MP3 和 MP4 格式的文件。

ffmpeg -i input.mp4 -vn audio.mp3ffmpeg -i input.mp4 -an -vcodec copy video.mp4

合并音频和视频

ffmpeg -i video.mp4 -i audio.mp3 -c:v copy -c:a aac -strict experimental output.mp4

如果视频中已经包含了音频,这个时候还可以替换视频中的音频,使用下面命令行。

ffmpeg -i video.mp4 -i audio.mp3 -c:v copy -c:a aac -strict experimental-map 0:v:0 -map 1:a:0 output.mp4

拼接音频文件,该命令将两个 MP3 格式的音频文件拼接为一个文件,并将其保存为 MP3 格式。

ffmpeg -i "concat:input1.mp3|input2.mp3" -acodec copy output.mp3

裁剪音频,该命令从输入音频的第 30 秒开始裁剪,裁剪时长为 2 分钟,然后将裁剪后的音频保存为 MP3 格式。

ffmpeg -i input.mp3 -ss 00:00:30 -t 00:02:00 -acodec copy output.mp3

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

js、PHP连接外卖小票机打印机方案(调用佳博、芯烨等)

前言: 目前开发需要用到电脑直接连接外卖小票机打印小票,查阅各种资料,使用 6612345浏览器 终于解决了这个问题。 效果: PHP、js直接连接小票机并且自动出票。 支持的小票机: 目前测试可以的有:电脑A4打印…

SQL注入读写文件

文章目录 条件利用SQL注入漏洞读取hosts文件查看文件读写权限安全选项允许导入导出读取hosts文件 利用SQL注入漏洞写入一句话木马,并用蚁剑连接webshell写入文件 条件 SQL注入有直接SQL注入,也有文件读写时的注入,后者的主要 目的在于获取web…

回归预测 | MATLAB实现PSO-RF粒子群优化算法优化随机森林算法多输入单输出回归预测(多指标,多图)

回归预测 | MATLAB实现PSO-RF粒子群优化算法优化随机森林算法多输入单输出回归预测(多指标,多图) 目录 回归预测 | MATLAB实现PSO-RF粒子群优化算法优化随机森林算法多输入单输出回归预测(多指标,多图)效果…

嵌入式Linux开发实操(十一):ETH网络接口开发

# 前言 嵌入式linux也有些是支持网口的,比如RGMII,嵌入式系统资源支持以太网和其他基本接口的硬件平台(板上或片上系统),有充足的NOR或NAND Flash闪存,用于容纳OS、lib库、fileSystem文件系统、APP应用程序、Bootloader引导程序等。嵌入式Linux是开源的、可修改的,并且…

个人微信AI聊天机器人

个人微信AI聊天机器人 微信AI机器人介绍产品介绍联系本人微信:yao_you_meng_xiang代码地址:https://github.com/xshxsh/weChatAiRobot 前期准备个人微信号Windows电脑注册AI模型账号 搭建使用注册AI账号注册讯飞账号创建应用申请API使用 安装微信 安装代…

【网络安全】防火墙知识点全面图解(三)

本系列文章包含: 【网络安全】防火墙知识点全面图解(一)【网络安全】防火墙知识点全面图解(二)【网络安全】防火墙知识点全面图解(三) 防火墙知识点全面图解(三) 39、什…

解决idea登录github copilot报错问题

试了好多方案都没用,但是这个有用, 打开idea-help-edit custonm vm options 然后在这个文件里面输入 -Dcopilot.agent.disabledtrue再打开 https://github.com/settings/copilot 把这个设置成allow,然后重新尝试登录copilot就行就行 解决方…

C++ 逗号运算符

使用逗号运算符是为了把几个表达式放在一起。 整个逗号表达式的值为系列中最后一个表达式的值。 从本质上讲,逗号的作用是将一系列运算按顺序执行。 表达式1, 表达式2求解过程是:先求解表达式 1,再求解表达式 2。整个逗号表达式的值是表达…

nginx代理请求到内网不同服务器

需求:之前用的是frp做的内网穿透,但是每次电脑断电重启,路由或者端口会冲突,现在使用汉土云盒替换frp。 需要把公网ip映射到任意一台内网服务器上,然后在这台内网服务器上用Nginx做代理即可访问内网其它服务器&#xf…

mysql使用flashback恢复数据

常在河边走,哪有不湿鞋。如果我们经常操作数据库,很有可能就会造成误操作,假如我们不幸误删了数据,有没有办法快速恢复呢? 这里,我们就以用的最多的mysql举例,聊聊如何快速恢复数据。mysql官方貌…

springboot里 运用 easyexcel 导出

引入pom <dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>2.2.6</version> </dependency>运用 import com.alibaba.excel.EasyExcel; import org.springframework.stereotype.Contr…

YOLOv7-tracker 目标追踪 输入视频帧

参考项目&#xff1a;https://github.com/JackWoo0831/Yolov7-tracker/tree/master github链接&#xff1a;https://github.com/Whiffe/Yolov7-tracker 码云链接&#xff1a;https://gitee.com/YFwinston/Yolov7-tracker 1 项目安装 1.1 环境搭建 平台&#xff1a;AutoDL 选…

Linux TCP协议——三次握手,四次挥手

一、TCP协议介绍 TCP协议是可靠的、面向连接的、基于字节流的传输层通信协议。 TCP的头部结构&#xff1a; 源/目的端口号: 表示数据是从哪个进程来, 到哪个进程去;&#xff08;tcp是传输层的协议&#xff0c;端与端之间的数据传输&#xff0c;在TCP和UDP协议当中不会体现出I…

【Linux】一张图了解系统文件

首先先认识磁盘结构 系统文件分布图 文件查找 文件删除 文件的增删改查都是围绕inode来完成的&#xff0c;所以当我们要进行文件删除的时候&#xff0c;只需要通过inode来获取到它对应的block bitmap和inode bitmap数据块容器和保存文件属性的位置置为 0即可 &#xff0c;如果想…

【boost网络库从青铜到王者】第六篇:asio网络编程中的socket异步读(接收)写(发送)

文章目录 1、简介2、异步写 void AsyncWriteSomeToSocketErr(const std::string& buffer)3、异步写void AsyncWriteSomeToSocket(const std::string& buffer)4、异步写void AsyncSendToSocket(const std::string& buffer)5、异步读void AsyncReadSomeToSocket(cons…

ffmpeg将rtsp流转成mp4

命令行版本 ffmpeg -y -i "rtsp://你的rtsp地址" -vcodec copy -f mp4 d:/1.mp4中间的rtsp网址一定要加上双引号&#xff0c;避免出现url有特殊字符的问题 java代码版本 如果不支持tcp协议&#xff0c;去掉下面两个参数即可,加上这两个参数是因为ffmpeg默认使用ud…

一文看懂 iova、IOMMU、DMA

目录 一、概念解释 二、深入浅出 三、应用 四、常见问题 一、概念解释 IOVA&#xff08;IO Virtual Address&#xff0c;输入/输出虚拟地址&#xff09; IOMMU&#xff08;I/O Memory Management Unit&#xff09;&#xff1a;IOMMU是一种硬件单元&#xff0c;用于管理设备…

springboot sl4j2 写入日志到mysql

问题描述 springboot初始化的时候&#xff0c;会先初始化日志然后再加载数据源如果用配置文件进行初始化&#xff0c;那么会出现数据源没有加载成功&#xff0c;导致空指针异常 报错排查如下&#xff1a; 搜索报错信息&#xff0c;OBjects.invoke is Null打断点发现。dataso…

前端基础踩坑记录

前言&#xff1a;在做vue项目时&#xff0c;有时代码没有报错&#xff0c;但运行时却各种问题&#xff0c;没有报错排查起来就很费劲&#xff0c;本人感悟&#xff1a;写前端&#xff0c;需要好的眼神&#xff01;&#xff01;&#xff01;谨以此博客记录下自己的踩坑点。 一、…

使用 OpenTelemetry 构建可观测性 03 - 导出

上一个博文中&#xff0c;我提到如何使用 OpenTelemery 的特定语言 API 来收集遥测数据&#xff0c;包含手动和自动的埋点技术&#xff0c;这很重要&#xff01;但是&#xff0c;收集遥测数据只是解决方案的第一步。 你需要把遥测数据路由转发到其他地方&#xff0c;同时添加额…