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     : mp42minor_version   : 0compatible_brands: mp42isomavc1creation_time   : 2024-03-12T03:09:36.000000ZDuration: 00:00:22.93, start: 0.000000, bitrate: 24425 kb/sStream #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.000000Zhandler_name    : Vimeo Artax Video Handlervendor_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.rhkb.cn/news/324034.html

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

相关文章

《Mask2Former》算法详解

文章地址&#xff1a;《Masked-attention Mask Transformer for Universal Image Segmentation》 代码地址&#xff1a;https://github.com/facebookresearch/Mask2Former 文章为发表在CVPR2022的一篇文章。从名字可以看出文章像提出一个可以统一处理各种分割任务&#xff08;…

智慧公厕,运用数据提升公共厕所管理水平!

随着城市人口的增加和生活水平的提高&#xff0c;公共厕所的管理变得越来越重要。传统的厕所管理方式已经无法满足人们对卫生、便利和舒适的需求。而智慧公厕作为新一代公厕管理方式&#xff0c;通过运用数据技术和大数据分析手段&#xff0c;彻底改变了公厕管理的模式&#xf…

远程桌面连接不上怎么连服务器,原因是什么?如何解决?

远程桌面连接不上怎么连服务器&#xff0c;原因是什么&#xff1f;如何解决&#xff1f; 面对远程桌面连接不上的困境&#xff0c;我们有办法&#xff01; 当你尝试通过远程桌面连接服务器&#xff0c;但遭遇连接失败的挫折时&#xff0c;不要慌张。这种情况可能由多种原因引起…

26、Qt使用QFontDatabase类加载ttf文件更改图标颜色

一、图标下载 iconfont-阿里巴巴矢量图标库 点击上面的链接&#xff0c;在打开的网页中搜索自己要使用的图标&#xff0c;如&#xff1a;最大化 找到一个自己想用图标&#xff0c;选择“添加入库” 点击“购物车”图标 能看到刚才添加的图标&#xff0c;点击“下载代码”(需要…

4D 成像毫米波雷达:新型传感器助力自动驾驶

1 感知是自动驾驶的首要环节&#xff0c;高性能传感器必不可少 感知环节负责对侦测、识别、跟踪目标&#xff0c;是自动驾驶实现的第一步。自动驾驶的实现&#xff0c;首先要能够准确理解驾驶环境信息&#xff0c;需要对交通主体、交通信号、环境物体等信息进行有效捕捉&#x…

数据可视化训练第二天(对比Python与numpy中的ndarray的效率并且可视化表示)

绪论 千里之行始于足下&#xff1b;继续坚持 1.对比Python和numpy的性能 使用魔法指令%timeit进行对比 需求&#xff1a; 实现两个数组的加法数组 A 是 0 到 N-1 数字的平方数组 B 是 0 到 N-1 数字的立方 import numpy as np def numpy_sum(text_num):"""…

一起深度学习(AlexNet网络)

AlexNet神经网络 代码实现&#xff1a; 代码实现&#xff1a; import torch from torch import nn from d2l import torch as d2lnet nn.Sequential(# 采用了11*11的卷积核来捕捉对象&#xff0c;因为原始输入数据比较大#步幅为4 &#xff0c;可减少输出的高度核宽度。#输出通…

全栈开发之路——前端篇(6)生命周期和自定义hooks

全栈开发一条龙——前端篇 第一篇&#xff1a;框架确定、ide设置与项目创建 第二篇&#xff1a;介绍项目文件意义、组件结构与导入以及setup的引入。 第三篇&#xff1a;setup语法&#xff0c;设置响应式数据。 第四篇&#xff1a;数据绑定、计算属性和watch监视 第五篇 : 组件…

基于springboot实现疾病防控综合系统项目【项目源码+论文说明】

基于springboot实现疾病防控综合系统演示 摘要 在如今社会上&#xff0c;关于信息上面的处理&#xff0c;没有任何一个企业或者个人会忽视&#xff0c;如何让信息急速传递&#xff0c;并且归档储存查询&#xff0c;采用之前的纸张记录模式已经不符合当前使用要求了。所以&…

正点原子[第二期]Linux之ARM(MX6U)裸机篇学习笔记-11.1,11.2-BSP文件目录组织

前言&#xff1a; 本文是根据哔哩哔哩网站上“正点原子[第二期]Linux之ARM&#xff08;MX6U&#xff09;裸机篇”视频的学习笔记&#xff0c;在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。…

Labels and Databases for Mac:强大的标签与数据库管理工具

Labels and Databases for Mac是一款集标签制作与数据库管理于一体的强大工具&#xff0c;专为Mac用户打造&#xff0c;旨在提供高效、便捷的标签制作与数据管理体验。 这款软件拥有丰富的内置标签格式&#xff0c;用户可轻松创建各种标签、信封和卡片&#xff0c;满足个性化需…

【CSDN搜材料的小技巧】怎么快速查到高质量最新的内容

问题描述: 我最近搜CSDN已经搜累了&#xff0c;好多东西明显是有问题的&#xff0c;还有一堆人复制粘贴&#xff0c;从海量文章中提取出最新且高质量文章成了当务之急&#xff01; 解决方案: 我本来想写个爬虫按照文章的收藏或者点赞排序的&#xff0c;无意中看到了这篇文章…

基于Spring Cloud的房产销售平台设计与实现

基于Spring Cloud的房产销售平台设计与实现 开发语言&#xff1a;Java 框架&#xff1a;SpringCloud JDK版本&#xff1a;JDK1.8 数据库工具&#xff1a;Navicat11 开发软件&#xff1a;eclipse/myeclipse/idea 系统部分展示 前台首页界面&#xff0c;前台首页包括房源信息、…

重载,重写,重定义,纯虚函数,多态习题

只要不够成重写就是重定义。 重定义&#xff1a; 抽象类&#xff1a; 包含纯虚函数的类就是抽象类。 1.纯虚函数的作用&#xff0c;强制子类去完成重写。 2.表示抽象的类型。 抽象就是在现实中没有对应的实体。 1. 下面哪种面向对象的方法可以让你变得富有( a) A 继承 B…

Google搜索广告怎么开户?谷歌广告开户投放引流技巧、账户搭建、谷歌ads广告推广投放策略 #搜索引擎 #谷歌广告#互联网营销

Google搜索广告开户步骤&#xff1a; 选择代理商&#xff1a;首先&#xff0c;您需要选择一个经验丰富、信誉良好的Google广告代理商。可以选择上海上弦来广告开户和代运营。 初步咨询&#xff1a;与代理商进行初步沟通&#xff0c;了解他们的服务内容、成功案例、收费标准等。…

上海AI Lab开源首个可替代GPT-4V的多模态大模型

与开源和闭源模型相比&#xff0c;InternVL 1.5 在 OCR、多模态、数学和多轮对话等 18 个基准测试中的 8 个中取得了最先进的结果。 上海AI Lab 推出的 InternVL 1.5 是一款开源的多模态大语言模型 (MLLM)&#xff0c;旨在弥合开源模型和专有商业模型在多模态理解方面的能力差距…

Agent AI智能体的未来

Agent AI智能体的未来 Agent AI智能体代表了人工智能在智能个人助理和虚拟代理人领域的最新进展。未来&#xff0c;Agent AI智能体将继续发挥着重要的作用&#xff0c;并且在以下几个方面实现更多的发展和创新&#xff1a; 个性化服务&#xff1a;Agent AI智能体将通过对用户行…

5月白银现货最新行情走势

美联储5月的议息会议举行在即&#xff0c;但从联邦公开市场委员会&#xff08;FOMC&#xff09;近期透露的信息来看&#xff0c;降息似乎并没有迫切性。——美联储理事鲍曼认为通胀存在"上行风险"&#xff0c;明尼阿波利斯联邦储备银行行长卡什卡利提出了今年不降息的…

华为招聘目的:不是筛选人才,而是筛选忠诚度。。

华为招聘 日常瞎逛发现一篇「机械应届生锐评华为」的帖子&#xff1a; 楼主提到&#xff1a;华为很会营销&#xff0c;华为和爱国之间的等号已经植入到老一辈的思想中&#xff0c;这就导致家里父母总是不断关心华为招聘的进展。 虽然楼主原本并不反感华为&#xff0c;但却被本次…

git 常用命令 git怎么撤销命令 持续更新中!!!!

基本流程 # 拉取仓库 git clone 仓库地址 # 拉取最新版本 git pull # 本地提交 git add . git commit -m "本次提交信息&#xff01;" # 推送上云 git push分支 # 创建分支 git checkout -b cart # 删除本机的分支 git branch -d cart # 切换分支 本地切换到主分支…