FFmpeg 的使用

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流分片的文件名格式。
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值