ffmpeg常用方法(一)

FFmpeg是一个非常强大的开源项目,提供了一套可以用来录制、转换数字音频、视频,并能将其转换成不同格式的工具和库。它是命令行工具,意味着它没有图形用户界面,但它能够被嵌入到其他应用程序中。它支持多种操作系统,包括Linux、Mac OS X、Windows。

由于FFmpeg的功能极其强大和复杂,下面仅介绍几个常见的用法示例,帮助你快速上手:

  1. 基本转换
    将视频文件从一种格式转换成另一种格式。以下示例将MP4文件转换为AVI格式:
ffmpeg -i input.mp4 output.avi
  1. 提取音频
    从视频文件中提取音频。以下命令从MP4视频中提取音频,并保存为MP3格式:
ffmpeg -i input.mp4 -q:a 0 -map a output.mp3
  1. 剪辑视频
    剪辑视频文件。以下命令从视频的第10秒开始,提取持续时间为15秒的片段:
ffmpeg -ss 00:00:10 -t 00:00:15 -i input.mp4 output.mp4

-ss 参数指定开始时间。
-t 参数指定持续时间。
4. 视频缩放
改变视频的分辨率。以下命令将视频缩放到宽度为1280px,高度为720px:

ffmpeg -i input.mp4 -vf "scale=1280:720" output.mp4
  1. 将图片序列转换为视频
    将一系列图片(例如,img001.jpg, img002.jpg, …)转换为视频文件:
ffmpeg -framerate 24 -i img%03d.jpg output.mp4

-framerate 参数指定视频的帧率。
6. 将视频转换为GIF
将视频文件转换为GIF动图:

ffmpeg -i input.mp4 -vf "fps=10,scale=320:-1:flags=lanczos" -c:v gif output.gif

fps 参数用来设置GIF的帧率。
scale 参数用来设置GIF的尺寸。

在FFmpeg中将多段视频合并为一个视频文件,有几种不同的方法。选择最佳方法取决于你的视频格式是否一致(编解码器、分辨率等)。以下是两种常见的合并视频的方法:
方法1:使用concat协议(适用于格式相同的视频)
如果所有视频文件的格式完全相同(即,具有相同的编解码器、比特率、分辨率等),可以使用FFmpeg的concat协议。首先,创建一个文本文件(例如filelist.txt),其中包含所有要合并的视频文件的列表,每个文件用file关键字开始,如下所示:

file 'video1.mp4'
file 'video2.mp4'
file 'video3.mp4'

然后使用以下命令将它们合并为一个单一的视频文件:

ffmpeg -f concat -safe 0 -i filelist.txt -c copy output.mp4

-f concat指示FFmpeg使用concat协议。
-safe 0允许使用绝对路径和不安全的文件路径。如果你的视频文件是由当前目录中的相对路径指定的,通常需要这个选项。
-i filelist.txt指明输入的是列表文件。
-c copy表示使用“复制”模式,不重新编解码视频,这可以大大加速处理过程。

方法2:使用concat滤镜(适用于格式不同的视频)
如果要合并的视频格式不完全相同,则可以使用FFmpeg的concat滤镜。这种方法涉及到重新编码过程,因此可能比第一种方法耗费更多时间。以下是使用concat滤镜合并三个视频(video1.mp4,video2.mp4,video3.mp4)的示例命令:

ffmpeg -i video1.mp4 -i video2.mp4 -i video3.mp4 -filter_complex "[0:v][0:a][1:v][1:a][2:v][2:a]concat=n=3:v=1:a=1[v][a]" -map "[v]" -map "[a]" output.mp4

通过-filter_complex使用复杂的滤镜链,[0:v][0:a][1:v][1:a][2:v][2:a]部分表示从三个输入文件(video1.mp4,video2.mp4和video3.mp4)中选择视频和音频流。
concat=n=3:v=1:a=1指定了要合并的视频数量(n=3),以及输出包含的视频(v=1)和音频轨道(a=1)数量。
-map "[v]"和-map "[a]"重新映射合并后的视频和音频流到输出。
注意:使用concat滤镜方法时,因为涉及到编解码,建议详细指定输出视频的编码设置,以保持你期望的视频质量。如果你不熟悉编码参数,可以通过阅读FFmpeg文档来学习更多。

这两种方法都可以在FFmpeg中有效合并视频,具体选择哪一种取决于你的具体需求和视频文件的情况。

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

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

相关文章

ROS ur10机械臂添加140夹爪全流程记录

ROS ur10机械臂添加140夹爪 系统版本:Ubuntu20.04 Ros版本:noetic Moveit版本:moveit-noetic 参考博客: ur3robotiq ft sensorrobotiq 2f 140配置rviz仿真环境_有末端力传感器的仿真环境-CSDN博客 UR5机械臂仿真实例&#xf…

Redis速成(1)VMware虚拟机安装Redis+Session验证登录注册+MybatisPlus

课程:黑马程序员Redis入门到实战教程,深度透析redis底层原理redis分布式锁企业解决方案黑马点评实战项目_哔哩哔哩_bilibili Mybatis与MybatisPlus: 参考springboot,需要额外写mapper.class,在方法上Select等 在ssm中,…

thinkphp下的Job队列处理

需要think-queue扩展,没有的请composer安装一下 "require": {"php": ">7.2.5","topthink/framework": "^6.1","topthink/think-orm": "^2.0","topthink/think-multi-app": &qu…

2024-2025 学年广东省职业院校技能大赛 “信息安全管理与评估”赛项 技能测试试卷(五)

2024-2025 学年广东省职业院校技能大赛 “信息安全管理与评估”赛项 技能测试试卷(五) 第一部分:网络平台搭建与设备安全防护任务书第二部分:网络安全事件响应、数字取证调查、应用程序安全任务书任务 1:应急响应&…

JSON Schema 入门指南:如何定义和验证 JSON 数据结构

文章目录 一、引言二、什么是 JSON Schema?三、JSON Schema 的基本结构3.1 基本关键字3.2 对象属性3.3 数组元素3.4 字符串约束3.5 数值约束 四、示例:定义一个简单的 JSON Schema五、使用 JSON Schema 进行验证六、实战效果6.1 如何使用 七、总结 一、引…

VMware虚拟机Mac版安装Win10系统

介绍 Windows 10是由美国微软公司开发的应用于计算机和平板电脑的操作系统,于2015年7月29日发布正式版。系统有生物识别技术、Cortana搜索功能、平板模式、桌面应用、多桌面、开始菜单进化、任务切换器、任务栏的微调、贴靠辅助、通知中心、命令提示符窗口升级、文…

计算机网络:ICMP协议(Internet控制消息协议)介绍

目录 一、简介 二、为什么要有ICMP协议? 三、ICMP协议报文格式 四、ICMP报文的类型 4.1 差错报文 4.2 查询报文 五、ICMP报文的实际案例 5.1 Ping命令 5.2 Traceroute命令 总结 今天和大家聊聊ICMP协议相关的知识,感兴趣的可以一起了解一下! 一、简介 ICMP(Inte…

python读取sqlite温度数据,并画出折线图

需求: 在Windows下请用python画出折线图,x轴是时间,y轴是温度temperature 和体感温度feels_like_temperature 。可以选择县市近1小时,近1天,近1个月的。sqlite文件weather_data.db当前目录下,建表结构如下…

window下kafka安装

kafka下载 下载好,直接解压即可 默认是带有zookeeper(注册中心) 需要先启动zookeeper zookeeper配置 先配置下zookeeper 这个data文件夹是自定建的 随意建在哪里 注意 这里斜杠用和linux一样 启动zookeeper 进入bin/windows目录 启动zookeeper zookeeper-server-start.ba…

开发HarmonyOS NEXT版五子棋游戏实战

大家好,我是 V 哥。首先要公布一个好消息,V 哥原创的《鸿蒙HarmonyOS NEXT 开发之路 卷1:ArkTS 语言篇》图书终于出版了,有正在学习鸿蒙的兄弟可以关注一下,写书真是磨人,耗时半年之久,感概一下…

2月26(信息差)

🌍思科和英伟达新旧双王联手 目标重塑网络架构抢占下沉市场 🎄全球AI大混战升温!超越Sora的阿里万相大模型开源 家用显卡都能跑 ✨小米15 Ultra、小米SU7 Ultra定档2月27日 雷军宣布:向超高端进发 1.全球首个!人形机器…

物联网通信应用案例之《智慧农业》

案例概述 在智慧农业方面,一般的应用场景为可以自动检测温度湿度等一系列环境情况并且可以自动做出相应的处理措施如简单的浇水和温度控制等,且数据情况可远程查看,以及用户可以实现远程控制。 基本实现原理 传感器通过串口将数据传递到Wi…

C# Unity 唐老狮 No.1 模拟面试题

本文章不作任何商业用途 仅作学习与交流 安利唐老狮与其他老师合作的网站,内有大量免费资源和优质付费资源,我入门就是看唐老师的课程 打好坚实的基础非常非常重要: Unity课程 - 游习堂 - 唐老狮创立的游戏开发在线学习平台 - Powered By EduSoho 目录 C# 1.其他类型转object类…

网络安全扫描--基础篇

前言 1、了解互联网安全领域中日趋重要的扫描技术 2、了解在不同网络场景下扫描技术手段 3、熟悉linux下系统内核防护策略并能大件一个有效的系统防护体系 4、增强工作安全意识,并能有效的实践于工作场景中 目录 1、熟悉主机扫描工具(fping,…

P8697 [蓝桥杯 2019 国 C] 最长子序列

P8697 [蓝桥杯 2019 国 C] 最长子序列 题目 分析代码 题目 分析 先分析一波xdm 题意呢就是在s中找有多少个能和t匹配的字符,注意:连续匹配,输出连续的次数 欧克,开始分析,首先,哎~字母!还强调…

一篇docker从入门到精通

Docker Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙盒机制,相互之间不会有任何接口(类似 iP…

TCP/IP 5层协议簇:物理层

目录 1. 物理层(physical layer) 2. 网线/双绞线 1. 物理层(physical layer) 工作设备:网线、光纤、空气 传输的东西是比特bit 基本单位如下:数字信号 信号:【模拟信号(放大器&a…

生成对抗网络(GAN)

生成对抗网络(GAN):生成对抗网络是一种深度学习模型,由 Ian Goodfellow 等人在 2014 年提出。GAN由生成器和判别器组成,生成器生成假数据,判别器区分真假数据。两者通过对抗训练不断提升,最终生成器能够生成…

FastJSON 默认行为:JSON.toJSONString 忽略 null 字段

完整的 FakeRegistrationController 代码,这让我可以全面分析后端逻辑,特别是为什么空的字段(如 compareDate)不返回给前端。我将详细分析代码的每个接口,尤其是与 list 请求和字段返回相关的部分,并解释原…

网络通信/IP网络划分/子网掩码的概念和使用

文章目录 概述子网的考题子网掩码的历史有/无类地址子网划分!子网掩码超网技术/CIDR子网掩码和路由IP子网掩码定义 网络规划网络规划-拆子网网络规划-组超网子网划分案例 区分于其他特殊IP地址IP地址和网络地址子网掩码和网络地址子网掩码和广播地址 子网间的通信其他 概述 本…