FFmpeg教程(干货快速上手)

什么是FFmpeg?

FFmpeg是一款免费、开源的跨平台多媒体处理工具,它支持几乎所有的视频格式和编码标准。FFmpeg包含了一系列的子项目和工具,如ffmpeg命令行工具用于转码和处理视频和音频文件,ffplay用于播放多媒体内容,而ffprobe则用于分析多媒体流的信息。

如何安装FFmpeg?

Windows

  • 下载最新版的FFmpeg:访问官方网站或github下载。
  • 解压缩到指定目录,例如:C:\FFmpeg
  • 添加FFmpeg到系统环境变量,确保能在任何路径下调用FFmpeg。
    如果在尝试运行 ffprobe 时收到 “不是内部或外部命令,也不是可运行的程序或批处理文件。” 的错误,这通常意味着 ffprobe(随 FFmpeg 一起安装)没有被添加到你的系统环境变量

macOS

推荐使用Homebrew,一个macOS的包管理器,通过简单的命令brew install ffmpeg即可完成安装。

Linux

大部分Linux发行版的包管理器都包含FFmpeg。以Ubuntu为例,使用sudo apt-get install ffmpeg命令即可安装。

如何添加 FFmpeg 到环境变量?

在 Windows 上:

  1. 找到 FFmpeg 的安装路径:记录下你解压缩 FFmpeg 的文件夹路径,需要找到 bin 目录的路径,例如 C:\ffmpeg\bin
  2. 编辑环境变量
    • 在搜索栏中搜索并打开“系统环境变量”或“编辑系统环境变量”。
    • 点击“环境变量”按钮。
    • 在“系统变量”区域找到并选择变量名为“Path”的变量,然后点击“编辑”。
    • 在编辑环境变量窗口,点击“新建”,然后粘贴你的 FFmpeg bin 目录路径(例如 C:\ffmpeg\bin)。
    • 点击“确定”保存你的更改,并关闭所有剩余的系统属性窗口。
  3. 验证安装:打开一个新的命令提示符窗口,输入 ffprobe -version,如果安装成功,你将看到 FFmpeg 的版本信息,如下图所示即为成功:在这里插入图片描述

在 macOS 或 Linux 上,通常通过终端安装 FFmpeg,路径会自动添加到环境变量中。如果遇到路径问题,可以手动添加路径到您的 shell 配置文件(如 .bash_profile, .bashrc, .zshrc 等)中。

查看视频的编码信息(重要

最大的作用是用来分析视频的兼容性问题!

  1. 打开命令行界面:这可以是 Windows 的命令提示符、PowerShell,或者是 macOS/Linux 的终端。

  2. 运行 ffprobe 命令:使用以下命令格式来获取视频文件的详细信息:

    ffprobe -v error -show_format -show_streams   路径+视频名称.格式
    
比如:ffprobe -v error -show_format -show_streams "C:\Users\lenovo\Desktop\红黑树\2.mp4"

这里,-v error 选项意味着只显示错误消息,-show_format-show_streams 选项用于显示文件的格式和各个流的详细信息。你需要将 your_video_file.mp4 替换为你想要检查的视频文件的路径和文件名。

运行这个命令后,ffprobe 会输出该视频文件的一系列信息,包括每个流(视频、音频等)的编解码器类型、分辨率、帧率等详细信息。具体地,你可以在输出中查找以下信息:

  • 视频流(Video stream):查找 codec_name 字段可以知道视频编码类型(如 h264hevc 等),widthheight 字段显示视频分辨率,avg_frame_rater_frame_rate 显示帧率。

  • 音频流(Audio stream):同样地,codec_name 字段表示音频编码类型(如 aacmp3 等)。

这些信息对于理解为何某些视频文件无法在特定的播放器或浏览器中播放非常有用,因为它可以帮助你确认文件是否使用了不被支持的编码格式。如果发现问题,您可以使用 FFmpeg 将视频转码为更兼容的格式。
以下是一个示例视频的编码信息:

[STREAM]
index=0
codec_name=h264
codec_long_name=H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10
profile=High
codec_type=video
codec_tag_string=[27][0][0][0]
codec_tag=0x001b
width=850
height=480
coded_width=850
coded_height=480
closed_captions=0
film_grain=0
has_b_frames=2
sample_aspect_ratio=256:255
display_aspect_ratio=16:9
pix_fmt=yuv420p
level=30
color_range=unknown
color_space=unknown
color_transfer=unknown
color_primaries=unknown
chroma_location=left
field_order=progressive
refs=1
is_avc=false
nal_length_size=0
ts_id=1
ts_packetsize=188
id=0x100
r_frame_rate=25/1
avg_frame_rate=25/1
time_base=1/90000
start_pts=133200
start_time=1.480000
duration_ts=156337200
duration=1737.080000
bit_rate=N/A
max_bit_rate=N/A
bits_per_raw_sample=8
nb_frames=N/A
nb_read_frames=N/A
nb_read_packets=N/A
extradata_size=41
DISPOSITION:default=0
DISPOSITION:dub=0
DISPOSITION:original=0
DISPOSITION:comment=0
DISPOSITION:lyrics=0
DISPOSITION:karaoke=0
DISPOSITION:forced=0
DISPOSITION:hearing_impaired=0
DISPOSITION:visual_impaired=0
DISPOSITION:clean_effects=0
DISPOSITION:attached_pic=0
DISPOSITION:timed_thumbnails=0
DISPOSITION:non_diegetic=0
DISPOSITION:captions=0
DISPOSITION:descriptions=0
DISPOSITION:metadata=0
DISPOSITION:dependent=0
DISPOSITION:still_image=0
[/STREAM]
[STREAM]
index=1
codec_name=aac
codec_long_name=AAC (Advanced Audio Coding)
profile=LC
codec_type=audio
codec_tag_string=[15][0][0][0]
codec_tag=0x000f
sample_fmt=fltp
sample_rate=44100
channels=2
channel_layout=stereo
bits_per_sample=0
initial_padding=0
ts_id=1
ts_packetsize=188
id=0x101
r_frame_rate=0/0
avg_frame_rate=0/0
time_base=1/90000
start_pts=129020
start_time=1.433556
duration_ts=156328910
duration=1736.987889
bit_rate=67783
max_bit_rate=N/A
bits_per_raw_sample=N/A
nb_frames=N/A
nb_read_frames=N/A
nb_read_packets=N/A
DISPOSITION:default=0
DISPOSITION:dub=0
DISPOSITION:original=0
DISPOSITION:comment=0
DISPOSITION:lyrics=0
DISPOSITION:karaoke=0
DISPOSITION:forced=0
DISPOSITION:hearing_impaired=0
DISPOSITION:visual_impaired=0
DISPOSITION:clean_effects=0
DISPOSITION:attached_pic=0
DISPOSITION:timed_thumbnails=0
DISPOSITION:non_diegetic=0
DISPOSITION:captions=0
DISPOSITION:descriptions=0
DISPOSITION:metadata=0
DISPOSITION:dependent=0
DISPOSITION:still_image=0
TAG:language=eng
[/STREAM]
[FORMAT]
filename=C:\Users\lenovo\Desktop\浠嶤++绾㈤粦鏍戣璧?涓嶅彲鎾斁\浠嶤++绾㈤粦鏍戣璧穃绗竴绔?1\璇炬椂1-浠嶤++绾㈤粦鏍戣璧?mp4
nb_streams=2
nb_programs=1
nb_stream_groups=0
format_name=mpegts
format_long_name=MPEG-TS (MPEG-2 Transport Stream)
start_time=1.433556
duration=1737.126444
size=41636080
bit_rate=191746
probe_score=50
[/FORMAT]

基础使用技巧

视频转码

转码是FFmpeg最常见的应用之一。例如,将MKV格式转换为MP4:

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

裁剪视频

FFmpeg可以根据时间裁剪视频,无需重新编码:

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

合并视频

FFmpeg可以合并同格式的视频文件:

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

其中filelist.txt包含了所有要合并视频文件的列表。

提取音频

从视频文件中提取音频轨道:

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

高级应用

批量处理

FFmpeg支持批量处理文件,结合Shell脚本可以大幅提高工作效率。

实时流处理

FFmpeg支持处理实时视频流,可以用于直播场景。通过RTMP或HLS等协议推流和拉流。

视频滤镜

FFmpeg拥有丰富的滤镜库,支持视频剪辑、色彩校正、字幕添加等高级编辑功能。

ffmpeg -i input.mp4 -vf "fps=25,scale=1280:-1:flags=lanczos" -c:v libx264 -preset fast -c:a aac output.mp4

学习资源推荐

  • FFmpeg官方文档:深入理解FFmpeg的最好资源。
  • GitHub:许多开源项目使用FFmpeg,从中学习实际应用。

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

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

相关文章

Python学习笔记 -- 基础语法篇

目录 一. 数据类型 二. 注释 三. 输入输出及强制类型转换 3.1 print和input 3.2 强制类型转换 四. 运算符 4.1 算数运算符 4.2 比较运算符 4.3 逻辑运算符 五. 多元赋值 六. 条件语句 七. 循环语句 7.1 while循环 7.2 for循环 7.3 continue和break 一. 数据类型 …

人工智能|机器学习——k-近邻算法(KNN分类算法)

1.简介 k-最近邻算法,也称为 kNN 或 k-NN,是一种非参数、有监督的学习分类器,它使用邻近度对单个数据点的分组进行分类或预测。虽然它可以用于回归问题,但它通常用作分类算法,假设可以在彼此附近找到相似点。 对于分类…

ADS功分器模型含义

ADS功分器模型含义 文章目录 ADS功分器模型含义dbpolar和单个值polar和单个值polar和dbpolar单个值 S21和S31传输系数 S11和S22反射系数 Isolation 隔离度 Zref 端口的参考阻抗,默认为50Ω CheckPassivity 检查是否无源,默认是无源器件 目前根据仿真结…

3D数字孪生运行不起来?该检查你的电脑配置了

运行3D数字孪生项目通常需要一定的计算资源和图形处理能力。以下是一些常见的电脑配置要求,可以作为参考:1处理器(CPU):推荐使用多核心处理器,如Intel Core i7或更高级别的处理器。较高的时钟频率和较大的缓…

2024 批量下载公众号文章内容/阅读数/在看数/点赞数/留言数/粉丝数导出pdf文章备份(带留言):公众号半佛仙人近1500篇历史文章在线查看,找文章方便了

关于公众号文章批量下载,我之前写过很多文章: 视频更新版:批量下载公众号文章内容/话题/图片/封面/音频/视频,导出html,pdf,excel包含阅读数/点赞数/留言数 2021陶博士2006/caoz的梦呓/刘备我祖/六神读金…

在Vue中处理接口返回的二进制图片数据

🌟 前言 欢迎来到我的技术小宇宙!🌌 这里不仅是我记录技术点滴的后花园,也是我分享学习心得和项目经验的乐园。📚 无论你是技术小白还是资深大牛,这里总有一些内容能触动你的好奇心。🔍 &#x…

flink实战--Flink任务资源自动化优化

背景 在生产环境Flink任务资源是用户在实时平台端进行配置,用户本身对于实时任务具体配置多少资源经验较少,所以存在用户资源配置较多,但实际使用不到的情形。比如一个 Flink 任务实际上 4 个并发能够满足业务处理需求,结果用户配置了 16 个并发,这种情况会导致实时计算资…

清华大学1748页CTF竞赛入门指南,完整版开放下载!

CTF是一种针对信息安全领域的经济性挑战,旨在通过解决一系列的难题来寻找隐藏的“flag”。CTF比赛战队一般是以高校、科研单位、企业、信息安全从业者或社会团体组成。对于网安爱好者及从业者来说,拥有“CTF参赛经验”也是求职中的加分项。 前几天分享的…

react的diff源码

react 的 render 阶段,其中 begin 时会调用 reconcileChildren 函数, reconcileChildren 中做的事情就是 react 知名的 diff 过程 diff 算法介绍 react 的每次更新,都会将新的 ReactElement 内容与旧的 fiber 树作对比,比较出它们…

力扣刷题Days13--翻转二叉树(js)

目录 1,题目 2,代码 2.1递归思想-深度优先遍历 2.2迭代-广度优先遍历 3,学习与总结 1,题目 给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。 2,代码 2.1递归思想-深度优先遍历 我们从根节点开始&…

Pytorch_lightning先前版本的官方文档地址

https://lightning.ai/docs/pytorch/1.4.2/https://lightning.ai/docs/pytorch/1.4.2/ Pytorch_lightning更新到2后,和之前版本的变化较大,以前原有的api被删除了 比如:on_pretrain_routine_start 官方也没有在显眼的位置放置先前版本的文档…

成都源聚达:抖音电商创业卖什么好

在抖音这个充满活力的平台上,选择何种商品进行电商创业是许多创业者思考的问题。要在这竞争激烈的市场中脱颖而出,选品策略需细致入微,紧跟潮流同时具备前瞻性。 应考虑的是产品与平台的契合度。抖音以短视频著称,因此&#xff0c…