ffmpeg常用方法(一)

devtools/2025/2/28 1:32:44/

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.ppmy.cn/devtools/163217.html

相关文章

归并排序:分而治之的排序之道

在所有的排序算法中,归并排序(Merge Sort)是一种非常经典且高效的排序算法。它采用了分治法(Divide and Conquer)策略,凭借着优秀的时间复杂度和稳定性,广泛应用于实际的排序任务中。 今天&…

Maven 的高级调试技巧与常见问题

在使用 Maven 进行构建时,尤其是大型项目或复杂依赖管理时,构建过程中可能会出现各种问题。通过有效的调试技巧和工具,可以更高效地定位和解决这些问题。本文将介绍 Maven 构建过程中常见的错误 以及 调试方法,帮助开发者快速解决…

SEO炼金术(4)| Next.js SEO 全攻略

在上一篇文章 SEO炼金术(3)| 深入解析 SEO 关键要素 中,我们深入解析了 SEO 关键要素,包括 meta 标签、robots.txt、canonical、sitemap.xml 和 hreflang,并探讨了它们在搜索引擎优化(SEO)中的作…

DOM 事件 HTML 标签属性速查手册

以下是一份 DOM 事件 & HTML 标签属性速查手册,涵盖常用场景和示例,助你快速查阅和使用: 一、DOM 事件速查表 1. 鼠标事件 事件名触发时机适用元素示例代码click元素被点击任意可见元素button.addEventListener(click, () > { ... …

gradle学习-mac安装

1、首先保证本地安装了jdk17,配置好环境变量 export JAVA_HOME/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home export PATH$JAVA_HOME/bin:$PATH2、安装 Gradle 使用 Homebrew 安装 Gradle: brew install gradle3、验证安装 安装完成后…

浅谈HTTP及HTTPS协议

1.什么是HTTP? HTTP全称是超文本传输协议,是一种基于TCP协议的应用非常广泛的应用层协议。 1.1常见应用场景 一.浏览器与服务器之间的交互。 二.手机和服务器之间通信。 三。多个服务器之间的通信。 2.HTTP请求详解 2.1请求报文格式 我们首先看一下…

Go语言--语法基础1--下载安装

2、下载安装 1、下载源码包: go1.18.4.linux-amd64.tar.gz。 官方地址:https://golang.google.cn/dl/ 云盘地址:链接: https://pan.baidu.com/s/1N2jrRHaPibvmmNFep3VYag 提 取码: zkc3 2、将下载的源码包解压…

DeepSeek R1 简明指南:架构、训练、本地部署及硬件要求

DeepSeek 新的 LLM 推理方法 DeepSeek 通过强化学习(RL)提出了一种创新的改进大规模语言模型(LLM)推理能力的方法,这在他们最近关于 DeepSeek-R1 的论文中有详细介绍。这项研究代表了在不依赖于大量有监督微调的情况下…