FFmpeg是一个流行的开源音视频处理工具,支持多种音视频格式的解码、编码、转换等功能。

常见的使用场景包括:

  • 将视频文件转换为不同格式,如将MP4转换为AVI或FLV等。
  • 对视频进行剪辑和合并,如将多个视频文件合并为一个或剪辑一个视频文件的一部分。
  • 对视频进行处理,如添加水印、调整音量等。
  • 抓取视频截图或生成视频缩略图。

安装

官网 https://ffmpeg.org/download.html

windows

官网下载安装包、bin目录里有exe文件
https://www.gyan.dev/ffmpeg/builds/

linux

sudo apt-get install ffmpeg

mac

  • 用homebrew, 命令 brew install ffmpeg
  • 官网下载压缩包 https://evermeet.cx/ffmpeg/ 解压后将可执行文件 ffmpeg、ffprobe、ffplay直接放到 /user/local/bin 或其他PATH 路径下

基本命令示例

格式如下: ffmpeg -i 输入文件名 [参数] 输出文件名

解码:-i参数指定输入文件,如:
ffmpeg -i input.mp4 output.avi编码:-c:v和-c:a参数指定视频和音频编码器,如:
ffmpeg -i input.mp4 -c:v libx264 -c:a aac output.mp4转换:-vf参数指定视频过滤器,如:
ffmpeg -i input.mp4 -vf scale=640:480 output.mp4剪辑:-ss和-t参数指定起始时间和持续时间,如:
ffmpeg -i input.mp4 -ss 00:00:10 -t 00:00:30 output.mp4合并:使用-concat参数合并多个文件,如:
ffmpeg -i input1.mp4 -i input2.mp4 -filter_complex concat -c copy output.mp4

参数详解

可以通过ffmpeg -h命令查看FFmpeg的所有选项和参数

基本参数

-i input_file:指定输入文件,可以是本地文件或远程URL。
-f format:指定输出文件格式,例如:mp4、avi、mov等。
-y:覆盖输出文件。
-n:不覆盖输出文件。
-vn: 禁止输出视频
-an:禁止输出音频
-sn: 禁止输出字幕

视频参数

-c:v codec:指定视频编码器,例如:libx264(H.264编码器)或vp9(Google VP9编码器)。
-b:v bitrate:指定视频比特率,即视频的压缩率。值越高,视频质量越好,但文件大小也越大。
-crf quality:指定视频质量,即压缩比。值越小,视频质量越好,但文件大小也越大。
-s size:指定视频分辨率,例如:1280x720或1920x1080。
-r fps:指定视频帧率,即每秒钟显示的帧数。
-aspect aspect_ratio:指定视频宽高比,例如:16:9或4:3。
-profile:v profile_name:指定视频编码器的配置文件,例如:high表示高级配置文件。
-level:v level_value:指定视频编码器的级别,例如:4.1表示H.264编码器的4.1级别。
-maxrate:v max_bitrate:指定视频的最大比特率,例如:1000k表示最大每秒使用1000K位的比特率。
-bufsize:v buffer_size:指定视频码率控制缓冲区大小。
-vf filter:指定视频过滤器,例如:scale、rotate等。
-ss start_time:指定从输入文件的哪个时间点开始转码。
-t duration:指定转码的时长。
-map [input_file_id:stream_specifier]:指定输出文件中包含哪些流,例如:-map 0:v:0表示将输入文件中的第一个视频流复制到输出文件中。
-pix_fmt format:指定视频的像素格式,例如:yuv420p表示4:2:0格式。

音频参数

-c:a codec:指定音频编码器,例如:aac(Advanced Audio Coding)或mp3(MPEG Audio Layer III)。
-b:a bitrate:指定音频比特率,即音频的压缩率。值越高,音频质量越好,但文件大小也越大。
-c:a copy 表示直接复制音频流,不进行任何编码或处理。
-ar sample_rate:指定音频采样率,即每秒钟采样的次数。
-ac channels:指定音频声道数,例如:1(单声道)或2(立体声)。
-af filter:指定音频过滤器,例如:volume=2表示将音量增加2倍。
-ss start_time:指定从输入文件的哪个时间点开始转码。
-t duration:指定转码的时长。
-map [input_file_id:stream_specifier]:指定输出文件中包含哪些流,例如:-map 0:a:0表示将输入文件中的第一个音频流复制到输出文件中。

其他参数

-preset preset_name:指定编码速度和质量的预设值,例如:slow表示慢速但高质量的编码。
-tune tuning_parameter:指定编码器的调整参数,例如:film表示适用于电影的参数。
-threads threads_count:指定线程数,即并行处理的线程数。
-shortest:当多个流转码时,输出文件的长度将是最短的流的长度。
-movflags flag1,flag2,...:指定输出文件的MOV标志,例如:faststart表示使用快速启动。
-pix_fmt format:指定像素格式,例如:yuv420p表示4:2:0格式。
-f segment:指定输出文件的分段格式。
-segment_time duration:指定分段的时长。
-segment_wrap number:指定分段时循环的次数。
-hls_time duration:指定HLS(HTTP Live Streaming)流的分片时长。
-hls_list_size size:指定HLS流的播放列表大小。
-hls_segment_filename file_name:指定HLS流分片的文件名格式。

FFmpeg 的使用相关推荐

  1. Ubuntu 安装 ffmpeg

    sudo add-apt-repository ppa:djcj/hybrid sudo apt-get update sudo apt-get install ffmpeg 在安装 ffmpeg 之 ...

  2. Linux实现ffmpeg H.265视频编码

    Linux实现ffmpeg H.265视频编码 几乎所有观看的视频,数字地面电视,电缆,卫星或互联网上的压缩.原始的,未压缩的视频太大,会浪费太多的带宽.在DVD和Blu-ray之前,有视频CD(VC ...

  3. NVIDIA FFmpeg 转码技术分析

    NVIDIA FFmpeg 转码技术分析 所有从 Kepler 一代开始的 NVIDIA GPUs 都支持完全加速的硬件视频编码,而从费米一代开始的所有 GPUs 都支持完全加速的硬件视频解码.截至 ...

  4. H265与ffmpeg改进开发

    H265与ffmpeg改进开发 Introduction KSC265是集编码.解码于一体的H.265编解码软件,完全遵循H.265协议标准.符合H.265编码规范的视频都可以通过KSC265进行解码 ...

  5. FFmpeg扩展开发

    FFmpeg扩展开发 对FFmpeg RTMP/FLV部分做了扩展,用于支持H.265. 针对<video_file_format_spec_v10_1> VIDEODATA部分扩展如下: ...

  6. ffmpeg architecture(下)

    ffmpeg architecture(下) 第3章-转码 TLDR:给我看代码和执行. $ make run_transcoding 我们将跳过一些细节,但是请放心:源代码可在github上找到. ...

  7. ffmpeg architecture(中)

    ffmpeg architecture(中) 艰苦学习FFmpeg libav 您是否不奇怪有时会发出声音和视觉? 由于FFmpeg作为命令行工具非常有用,可以对媒体文件执行基本任务,因此如何在程序中 ...

  8. ffmpeg architecture(上)

    ffmpeg architecture(上) · 视频-您看到的是什么! · 如果您有一系列图像序列,并以给定的频率(例如每秒24张图像)进行更改,则会产生运动的错觉.总之,这是视频背后的基本概念:一 ...

  9. FFmpeg集成到GPU

    FFmpeg集成到GPU GPU加速视频处理集成到最流行的开源多媒体工具中. FFmpeg是最流行的开源多媒体操作工具之一,它有一个插件库,可以应用于音频和视频处理管道的各个部分,并在世界各地得到广泛 ...

  10. FFmpeg学习4:音频格式转换

    前段时间,在学习试用FFmpeg播放音频的时候总是有杂音,网上的很多教程是基于之前版本的FFmpeg的,而新的FFmepg3中audio增加了平面(planar)格式,而SDL播放音频是不支持平面格式 ...

最新文章

  1. poj3169(差分约束+SPFA)
  2. SpringBoot注解大全
  3. python数组加入新元素_Python之list添加新元素、删除元素、替换元素
  4. Ubuntu18.04 root 登录
  5. [内核编程] 内核环境及其特殊性,驱动编程基础篇
  6. C#Socket通信
  7. 如何用matlab消除谐波,如何在含有整次谐波和非整次谐波的信号中去除整次谐波?...
  8. C# CRC16 在textbox中显示实时时间
  9. 实现机器学习的循序渐进指南IX ——树回归
  10. 测试用例-写测试用例时怎么入手
  11. 大数据 数据库 评测_大数据产品能力评测介绍.pdf
  12. 人工智能时代!Python跃升编程语言第一名!
  13. Fiddler代理配置
  14. 运行c语言程序显示已停止运行程序,c – “此应用程序已请求运行时以不寻常的方式终止它.”...
  15. oracle物理结构视频教学,详解Oracle物理结构
  16. stm32c8t6之跑马灯程序配置
  17. js小学生图片_小学生画报设计图片
  18. Coding 码市:携手开发者与创业者,重新定义软件外包
  19. WITNESS基础教程
  20. 跳台阶算法的三种实现方案(PHP)

热门文章

  1. outlook过滤发件人_将联系人添加到Outlook 2007中的安全发件人
  2. MWC2018 大会5G成大热门 中国芯大有可为
  3. 2021计算机二级12月报名时间以及考试科目
  4. Jdk8新特性一:jdk8新特性之default关键字、日期类、Base64类、Optional
  5. GYP使用总结 ---- 从Makefile到GYP
  6. docker搭建owncloud
  7. python之逗号的用法(转载自codeDRT)
  8. bootloader调试
  9. idea 忽略报错配置
  10. 商用密码最新标准和国家标准