FFmpeg常用命令详解与实战指南

下载地址:Releases · BtbN/FFmpeg-Builds (github.com)

1. 获取视频信息

使用FFmpeg获取视频信息是最基本的操作之一。你可以使用-i选项指定输入文件,然后使用FFmpeg内置的分析器来获取视频的各种信息,包括视频编解码器、音频编解码器、分辨率、帧率、码率等。

ffmpeg -i input.mp4

 结果:

Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'input.mp4':
  Metadata:
    major_brand     : mp42
    minor_version   : 0
    compatible_brands: mp42isomavc1
    creation_time   : 2024-03-12T03:09:36.000000Z
  Duration: 00:00:22.93, start: 0.000000, bitrate: 24425 kb/s
  Stream #0:0[0x1](und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709, progressive), 3840x2160, 24422 kb/s, 30 fps, 30 tbr, 30 tbn (default)
      Metadata:
        creation_time   : 2024-03-12T03:09:36.000000Z
        handler_name    : Vimeo Artax Video Handler
        vendor_id       : [0][0][0][0]
        encoder         : AVC Coding
  • 文件类型:mov, mp4, m4a, 3gp, 3g2, mj2 (这些都是 MPEG-4 媒体容器格式)
  • 创建时间:2024年3月12日,03:09:36
  • 持续时间:00:00:22.93
  • 视频流信息:
    • 编解码器:h264 (High),也就是 AVC (Advanced Video Coding),通常称为 H.264
    • 视频像素格式:yuv420p,色彩空间为 YUV,采样结构为 4:2:0,色度信息被降采样
    • 视频分辨率:3840x2160,即 4K 分辨率
    • 比特率:24422 kb/s
    • 帧率:30 帧每秒 (fps)
    • 时间基:30 tbr (帧率)、30 tbn
    • 其他元数据信息:包括创建时间、处理程序名称、供应商 ID、编码器等

2. 音视频分离

音视频分离是指将视频文件中的视频流和音频流分别提取出来。你可以使用FFmpeg的-vn(禁用视频流)和-an(禁用音频流)选项来实现这一功能。

# 提取视频流
ffmpeg -i input.mp4 -vn output_audio.mp3
# 提取视频流
ffmpeg -i input.mp4 -an output_video.mp4

将test.mp4和tmp.mp3音视频合并 

# 确保音频流就是mp3的才可以这么干
ffmpeg -i "test.mp4" -vn -c:a copy "tmp.mp3"

3. 转换音视频格式

FFmpeg支持将音视频文件转换为各种常见的格式,如MP4、FLV、AVI、MOV等。你可以使用-f选项指定输出格式,使用-vcodec-acodec选项分别指定视频编解码器和音频编解码器。

MP4转FLV

ffmpeg -i input.mp4 -codec copy output.flv

MP4转AVI

ffmpeg -i input.mp4 output.avi

MP4转MOV 

ffmpeg -i input.mp4 output.mov

4. 视频裁剪与拼接

FFmpeg提供了强大的视频裁剪和拼接功能。你可以使用-ss选项指定裁剪的起始时间,使用-t选项指定裁剪的持续时间,使用-to选项指定裁剪的结束时间。对于视频拼接,你可以使用多个输入文件,并指定输出文件。

裁剪视频(从第10秒开始,持续10秒)

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

视频拼接(将两个视频文件拼接成一个)

ffmpeg -i input1.mp4 -i input2.mp4 output.mp4

5. 视频转码

视频转码是指将视频文件转换为不同的编解码器或分辨率。你可以使用-vcodec选项指定视频编解码器,使用-vf选项指定视频滤镜来调整分辨率、帧率等参数。

将MP4视频转码为H.264编码的MKV文件:

ffmpeg -i input.mp4 -vcodec libx264 output.mkv

调整视频分辨率:

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

6. 音频处理

除了视频处理外,FFmpeg还提供了丰富的音频处理功能,包括音频转码、音频提取、音频剪辑等。你可以使用-acodec选项指定音频编解码器,使用-af选项指定音频滤镜来处理音频数据。

提取视频中的音频并转码为MP3格式

ffmpeg -i input.mp4 -vn -acodec libmp3lame output.mp3

音频剪辑(从第30秒开始,持续10秒) 

ffmpeg -i input.mp3 -ss 00:00:30 -t 10 output.mp3

调整视频大小

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

视频截图

ffmpeg -i input.mp4 -ss 00:00:10 -vframes 1 screenshot.jpg

 9 音频转码

ffmpeg -i input.wav -b:a 192K output.mp3

 10 合并视频

原视频包含音频和视频信息情况下:

ffmpeg -i input1.mp4 -i input2.mp4 -filter_complex "[0:v][0:a][1:v][1:a]concat=n=2:v=1:a=1[outv][outa]" -map "[outv]" -map "[outa]" output.mp4

单独合并视频信息:

 去掉a,直接对v进行合并

ffmpeg -i input.mp4 -i output.mp4 -filter_complex "[0:v][1:v]concat=n=2:v=1[outv]" -map "[outv]"  output2.mp4

11 m3u8生成

ffmpeg -i input.mp4 -c:v copy -c:a copy -f hls -hls_time 10 output.m3u8

 -c:v copy-c:a copy 参数表示视频和音频流不进行重新编码

-hls_time 控制每个TS文件的时长,-hls_list_size 控制M3U8文件中最多保留的TS文件数目

指定为每一个ts指定baseurl

ffmpeg -i input.mp4 -c:v copy -c:a copy -f hls -hls_time 10 -hls_base_url http://example.com/videos/ output.m3u8

生成内容:

 

12 m3u8转音频视频

视频:

ffmpeg -protocol_whitelist "file,http,https,tcp,tls" -i input.m3u8 -c copy output.mp4

-protocol_whitelist 参数允许FFmpeg使用指定的协议(在这里是 "file", "http", "https", "tcp", "tls")来下载TS文件。 -c copy 参数表示不对视频进行重新编码,只是直接将输入流复制到输出文件中。 

音频: 

ffmpeg -protocol_whitelist "file,http,https,tcp,tls" -i input.m3u8 -map 0:a -c copy output.mp3

 -map 0:a 参数用于选择第一个输入文件(M3U8文件)的所有音频流。-c copy 参数表示不对音频进行重新编码

13 m3u8生成指定时间的音频视频

# 提取视频
ffmpeg -protocol_whitelist "file,http,https,tcp,tls" -ss 00:01:30 -i input.m3u8 -t 60 -c:v copy -c:a copy output_video.mp4

# 提取音频
ffmpeg -protocol_whitelist "file,http,https,tcp,tls" -ss 00:01:30 -i input.m3u8 -t 60 -vn -c:a copy output_audio.mp3

 测试越多越感觉ffmpeg功能好强大,简直能满足对音视频的大多需求

参数说明

选项说明
-h显示基本选项。
-h long显示更多选项。
-h full显示所有选项(包括所有格式和编解码器特定选项,非常长)。
-h type=name显示指定解码器/编码器/解封装器/封装器/过滤器/比特流过滤器/协议的所有选项。
-L显示许可证信息。
-version显示版本信息。
-muxers显示可用的封装器。
-demuxers显示可用的解封装器。
-devices显示可用设备。
-decoders显示可用的解码器。
-encoders显示可用的编码器。
-filters显示可用的过滤器。
-pix_fmts显示可用的像素格式。
-layouts显示标准声道布局。
-sample_fmts显示可用的音频采样格式。
-v <loglevel>设置日志级别。
-y覆盖输出文件。
-n永不覆盖输出文件。
-stats在编码过程中打印进度报告。
-f <fmt>强制指定容器格式(否则自动检测)。
-t <duration>在指定持续时间后停止转码。
-to <time_stop>在达到指定时间后停止转码。
-ss <time_off>从指定时间开始转码。
-metadata添加元数据。
-r重写输入帧速率/转换为指定输出帧速率。
-aspect设置宽高比。
-vn禁用视频。
-vcodec选择视频流的编码器/解码器。
-vf应用视频流的指定滤镜。
-b视频比特率。
-aq设置音频质量(特定于编解码器)。
-ar设置音频采样率。
-ac设置音频通道数。
-an禁用音频。
-acodec选择音频流的编码器/解码器。
-ab音频比特率。
-af应用音频流的指定滤镜。
-sn禁用字幕。
-scodec选择字幕流的编码器/解码器。

HLS M3U8参数:

参数说明
-hls_time <duration>指定每个TS文件的时长。例如,-hls_time 10 表示每个TS文件的时长为10秒。
-hls_list_size <number>指定M3U8播放列表中最多包含的TS文件数目。当生成的TS文件数量超过这个值时,旧的TS文件将被删除。例如,-hls_list_size 5 表示M3U8播放列表最多包含5个TS文件。
-hls_segment_filename <pattern>指定TS文件的命名模式。默认情况下,FFmpeg会根据输入文件的名称生成TS文件,但您也可以使用这个选项来自定义TS文件的命名。例如,-hls_segment_filename file_%03d.ts 将生成形如 file_001.tsfile_002.ts 等命名的TS文件。
-hls_base_url <url>指定TS文件在服务器上的基本URL。当客户端请求TS文件时,会使用这个URL与TS文件名拼接成完整的URL。例如,-hls_base_url http://example.com/videos/ 将使用 http://example.com/videos/ 作为TS文件的基本URL。
-hls_flags <flags>指定一些HLS相关的标志。常见的标志包括: split_by_timeomit_endlist等。

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

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

相关文章

2.外卖点餐系统(Java项目 springboot)

目录 0.系统的受众说明 1.系统功能设计 2.系统结构设计 3.数据库设计 3.1实体ER图 3.2数据表 4.系统实现 4.1用户功能模块 4.2管理员功能模块 4.3商家功能模块 4.4用户前台功能模块 4.5骑手功能模块 5.相关说明 新鲜运行起来的项目&#xff1a;如需要源码数据库…

封装一个可以最小化和展开的弹窗组件

gl-dialog 大概思路&#xff1a; 在弹窗组件内部引入gl-dialog-collapse&#xff0c;这个组件主要用于存储已经被最小化的弹窗&#xff08;基础数据&#xff09; 弹窗内部的数据如何在父组件拿到是通过作用域插槽来实现的 gl-dialog接收一个tempData这个数据会在内部被记录下来…

IDEA远程连接Docker服务

1.确保你的服务器已经安装docker docker安装步骤可查看&#xff1a;CentOS 9 (stream) 安装 Docker 2.安装完docker后开启远程连接 默认配置下&#xff0c;Docker daemon只能响应来自本地Host的客户端请求。如果要允许远程客户端请求&#xff0c;需要在配置文件中打开TCP监听…

【数据结构】栈(Stack)和队列(Queue)

文章目录 栈一、栈的概念及结构二、栈的特点三、栈的实现1.初始化栈2.判断栈空3.入栈4.出栈5.取栈顶元素6.栈的元素个数7.销毁 队列一、队列的概念及结构二、队列的特点三、队列的实现1.初始化2.入队3.出队4.判断队空5.取队头元素6.取队尾元素 总结 栈 一、栈的概念及结构 栈…

k8s 理论知识基本介绍

目录 一 k8s 理论前言 &#xff08;一&#xff09;微服务是什么 1&#xff0c;应用场景 2&#xff0c;API 是什么 &#xff08;二&#xff09;&#xff0c;微服务 如何做版本迭代 1. Docker镜像构建 2. 版本标记 3. Docker Registry 4. 环境一致性 5. 滚动更新…

26 | 备库为什么会延迟好几个小时?

在官方的 5.6 版本之前,MySQL 只支持单线程复制,由此在主库并发高、TPS 高时就会出现严重的主备延迟问题。 coordinator 就是原来的 sql_thread, 不过现在它不再直接更新数据了,只负责读取中转日志和分发事务。真正更新日志的,变成了 worker 线程。而 work 线程的个数,就是…

今日刷三题(day12):兑换零钱(一)+最长回文子串+编辑距离(一)

题目一&#xff1a;兑换零钱&#xff08;一&#xff09; 题目描述&#xff1a; 给定数组coins&#xff0c;coins中所有的值都为正整数且不重复。每个值代表一种面值的货币&#xff0c;每种面值的货币可以使用任意张&#xff0c;再给定一个aim&#xff0c;代表要找的钱数&…

单位圆内的正交向量多项式,第一部分:由Zernike多项式的梯度导出的基组

clear all; close all; clc; %% I1=double(imread(E:\zhenlmailcom-E8E745\华为家庭存\image\imgs\right\0.bmp)); I2=double(imread(E:\zhenlmailcom-E8E745\华为家庭存储\.法\image\imgs\right\1.bmp)); I3=double(imread(E:\zhenlmailcom-E8E745\华为家庭存储\.p\image\imgs…

学习torchmd分子动力学模拟

TorchMD打算提供一种简单易用的API&#xff0c;用于使用PyTorch进行分子动力学。这使研究人员能够更快地进行力场开发研究&#xff0c;并以PyTorch的简单性和强大性将神经网络潜力无缝集成到动力学中。 TorchMD使用与经典MD代码&#xff08;如ACEMD&#xff09;一致的化学单位&…

实在Agent智能体:引领智能自动化新纪元

在数字化转型的浪潮中&#xff0c;实在智能科技有限公司凭借其前沿技术&#xff0c;推出了实在Agent智能体——一款革命性的超自动化智能体。它不仅代表了人工智能技术的新高度&#xff0c;更预示着未来工作方式的变革。 什么是实在Agent智能体&#xff1f; 实在Agent智能体是…

《Fundamentals of Power Electronics》——状态空间平均法

文献中出现了许多交流变换器建模技术&#xff0c;包括电流注入法、电路平均法和状态空间平均法。尽管给定方法的支持者可能更喜欢用特定形式表示最终结果&#xff0c;但几乎所有方法的最终结果都是等效的。所有人都会赞同&#xff0c;平均和小信号线性化是PWM变换器建模的关键步…

云动态摘要 2024-05-06

给您带来云厂商的最新动态&#xff0c;最新产品资讯和最新优惠更新。 最新优惠与活动 [免费试用]即刻畅享自研SaaS产品 腾讯云 2024-04-25 涵盖办公协同、营销拓客、上云安全保障、数据分析处理等多场景 云服务器ECS试用产品续用 阿里云 2024-04-14 云服务器ECS试用产品续用…

用得助全媒体呼叫中心,让AI落到实处帮品牌做营销

怎么让人工智能落到实处的帮助到我们&#xff1f;我们今天来讲讲中关村科金得助全媒体呼叫中心是怎么让AI帮品牌。 这次聊的案例是知名的护肤品牌&#xff0c;该品牌在中国功能性护肤品市场占有率达到20.5%&#xff0c;这么高的市场占有率客户的咨询量也是非常庞大的&#xff0…

MAC M1 配置 Git SSH

背景 换了新笔记本&#xff0c;本地想要克隆github 上的项目需要配置ssh 公钥到自己的github账户中&#xff0c;否则使用ssh 地址克隆会报错&#xff0c;如下。 gitgithub.com: Permission denied (publickey). fatal: Could not read from remote repository.操作 1. 生成s…

探索大型语言模型(LLM)的世界

​ 引言 大型语言模型&#xff08;LLM&#xff09;作为人工智能领域的前沿技术&#xff0c;正在重塑我们与机器的交流方式&#xff0c;在医疗、金融、技术等多个行业领域中发挥着重要作用。本文将从技术角度深入分析LLM的工作原理&#xff0c;探讨其在不同领域的应用&#xff0…

安卓使用Fiddler抓包 2024

简介 最近试了一下安卓使用fiddler 抓包&#xff0c;发现https包基本都会丢失。原因是Anandroid 7版本针对ssl安全性做了加强&#xff0c;不认可用户的证书。我们要做的就是把fiddler导出的证书进过处理后放置到系统证书目录下面&#xff0c;这样才能抓包https请求。 这里使用…

【Anaconda】升级Anaconda Navigator提示JSONDecoderError,删除.condarc文件后搞定

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、报错&#xff1a;JSONDecoderError二、错误原因三、解决问题总结 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 时间长未升级Ana…

AI 绘画神器 Fooocus 本地部署指南:简介、硬件要求、部署步骤、界面介绍

本文收录于《AI绘画从入门到精通》专栏&#xff0c;专栏总目录&#xff1a;点这里&#xff0c;订阅后可阅读专栏内所有文章。 大家好&#xff0c;我是水滴~~ 随着人工智能技术的飞速发展&#xff0c;AI 绘画逐渐成为创意领域的新宠。Fooocus 作为一款免费开源的 AI 绘画工具&am…

窜货溯源采买的目的

当品牌遇到窜货时&#xff0c;不管是线上还是线下渠道&#xff0c;快速的治理方法&#xff0c;就是找到窜货源头&#xff0c;对源头进行打击&#xff0c;这里面有一步很关键的操作便是买货&#xff0c;将货品买回后做溯源&#xff0c;通过产品本身或者外包装上的条码&#xff0…

【Java orm 框架比较】十 新增hammer_sql_db 框架对比

迁移到&#xff08;https://gitee.com/wujiawei1207537021/spring-orm-integration-compare&#xff09; orm框架使用性能比较 比较mybatis-plus、lazy、sqltoy、mybatis-flex、easy-query、mybatis-mp、jpa、dbvisitor、beetlsql、dream_orm、wood、hammer_sql_db 操作数据 …
最新文章