欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

ffmpeg] ffmpeg 命令行参数 ① ( ffpeg 命令 -i 参数指定输入文件/输入流 | ffpeg 命令 -f 参数指定输出格式 | 指定时间相关参数 )

最编程 2024-05-02 21:59:32
...

一、Windows 搭建 FFmpeg 命令行运行环境

【FFmpeg】Windows 搭建 FFmpeg 命令行运行环境 博客中 , 搭建 FFmpeg 命令行 运行环境 , 就可以在 任意 目录位置 , 执行 ffmpeg 命令 ,

ffmpeg 是一个非常强大的 " 多媒体处理工具 " , 它可以进行 音频 和 视频 的 转码 / 编辑 / 流处理 等操作 ;

命令行输出内容 :

代码语言:javascript
复制
C:\Users\octop>ffmpeg
ffmpeg version n4.4-19-g8d172d9409 Copyright (c) 2000-2021 the FFmpeg developers
  built with gcc 10-win32 (GCC) 20210408
  configuration: --prefix=/ffbuild/prefix --pkg-config-flags=--static --pkg-config=pkg-config --cross-prefix=x86_64-w64-mingw32- --arch=x86_64 --target-os=mingw32 --enable-gpl --enable-version3 --disable-debug --enable-shared --disable-static --disable-w32threads --enable-pthreads --enable-iconv --enable-libxml2 --enable-zlib --enable-libfreetype --enable-libfribidi --enable-gmp --enable-lzma --enable-fontconfig --enable-libvorbis --enable-opencl --enable-libvmaf --enable-vulkan --enable-amf --enable-libaom --enable-avisynth --enable-libdav1d --enable-libdavs2 --enable-ffnvcodec --enable-cuda-llvm --enable-libglslang --enable-libgme --enable-libass --enable-libbluray --enable-libmp3lame --enable-libopus --enable-libtheora --enable-libvpx --enable-libwebp --enable-lv2 --enable-libmfx --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-librav1e --enable-librubberband --enable-schannel --enable-sdl2 --enable-libsoxr --enable-libsrt --enable-libsvtav1 --enable-libtwolame --enable-libuavs3d --enable-libvidstab --enable-libx264 --enable-libx265 --enable-libxavs2 --enable-libxvid --enable-libzimg --extra-cflags=-DLIBTWOLAME_STATIC --extra-cxxflags= --extra-ldflags=-pthread --extra-ldexeflags= --extra-libs=-lgomp
  libavutil      56. 70.100 / 56. 70.100
  libavcodec     58.134.100 / 58.134.100
  libavformat    58. 76.100 / 58. 76.100
  libavdevice    58. 13.100 / 58. 13.100
  libavfilter     7.110.100 /  7.110.100
  libswscale      5.  9.100 /  5.  9.100
  libswresample   3.  9.100 /  3.  9.100
  libpostproc    55.  9.100 / 55.  9.100
Hyper fast Audio and Video encoder
usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...

Use -h to get full help or, even better, run 'man ffmpeg'

C:\Users\octop>

二、ffpeg 命令 -i 参数 指定 输入文件 / 输入流

1、-i 参数 说明

ffmpeg 命令 的 -i 参数 的作用是 指定 输入文件 或 输入流 , 后面通常紧跟着 输入文件 / 输入流 的 路径 和 名称 ;

如果有一个名为 input.mp4 的视频文件 , 使用 ffmpeg 对其进行处理 , 那么需要 在命令中使用 -i 参数来指定这个文件 :

代码语言:javascript
复制
ffmpeg -i input.mp4 ...

上述命令的 的 ... 可以使用 其他参数来指定 输出文件 / 编解码器 / 过滤器 等 ;

下面 就是 指定一个 avi 格式 的 输出文件 , 将 mp4 格式的 输入文件 input.mp4 转为 avi 格式的输出文件 output.avi ;

2、-i 参数 使用示例

执行

代码语言:javascript
复制
ffmpeg -i input.mp4 output.avi

命令 , 即可将 mp4 格式的文件 , 转为 avi 格式的文件 ;

执行

代码语言:javascript
复制
ffplay output.avi

命令 , 使用 ffplay 播放 avi 格式的文件 ;

三、ffpeg 命令 -f 参数 指定 输出格式

一般情况下 , ffmpeg 的 -f 参数很少用 , 一般是根据 文件名后缀 自动判定文件格式 ;

1、-f 参数 说明

ffpeg 命令的 -f 参数 用于 指定 输入或输出的格式 , 即 应该如何 解释输入数据 , 或者应该如何 封装输出数据 ;

当指定输入文件时 , ffmpeg 能够根据 " 文件扩展名 " 自动判断视频文件格式 , 如果文件名没有 文件扩展名 , 或者 文件格式 与 文件扩展名 不匹配 , 此时就需要使用 -f 参数来手动指定格式 ;

下面的命令 就是 将文件转为 avi 格式的文件 , 根据 " output.avi " 文件名称 后面的 " .avi " 扩展名 自动 匹配 文件类型 ;

代码语言:javascript
复制
ffmpeg -i input.mp4 output.avi

2、-f 参数值列举

ffmpeg 命令的 -f 参数用于 指定 输入或输出 的格式 , 下面列举了一些常用的 -f 参数值 :

  • -f mp4 : 表示 输入或输出 的 文件格式是 mp4 格式 ;
  • -f avi : 表示 输入或输出 的文件格式是 avi 格式 ;
  • -f flv : 表示 输入或输出 的文件格式是 flv 格式 ;
  • -f mov : 表示 输入或输出 的文件格式是 mov 格式 ;
  • -f mkv : 表示 输入或输出 的文件格式是 mkv 格式 ;
  • -f wav : 表示 输入或输出 的文件格式是 wav 格式 ;
  • -f rawvideo : 表示 原始视频 数据流格式 , 通常用于一些专业的音视频处理 ;
  • -f null : 特殊的格式 , 用于不产生任何输出文件 , 通常用于测试或性能分析 ;
  • -f image2 : 处理图像序列 , 将 视频帧 保存为一系列的 图片或将图片序列编码成视频 ;
  • -f image2pipe : 用于通过管道传输图像数据的格式 , 通过标准输入/输出 ( stdin/stdout ) 或其他管道机制将图像数据传递给 FFmpeg 或从 FFmpeg 接收图像数据 ;
  • -f mpegts : 表示 MPEG 传输流格式,常用于流媒体传输

3、-f 参数使用示例

执行

代码语言:javascript
复制
ffmpeg -i input.mp4 -f flv output.flv

命令 , 即可将 mp4 格式的文件 , 转为 flv 格式的文件 ;

执行

代码语言:javascript
复制
ffplay output.flv

命令 , 播放 转换后的 flv 视频文件 ;

输入文件的 信息 : 视频是 AVC 格式的 , 音频是 AAC 格式的 ;

输出文件 信息 : 输出文件时 Flash Video 格式的 ;

四、ffpeg 命令 指定 时间 相关参数

1、设置输入文件起始时间点 -ss 参数

ffmpeg 命令 中 使用 -ss position 参数 , 可以 设置 指定 输入文件 的起始时间点 , 可以从 视频 或 音频文件 的指定时间点开始进行处理 , 如 : 裁剪 / 转换格式 等 ;

上述参数 中的 position 参数值 的 格式

  • 可以是 秒 为单位的时间 , 如 : 10 表示 从 第 10 秒开始播放 ;
  • 可以是 时间标记 , 如 : 00:00:15 表示 从第 15 秒开始播放 ;

执行

代码语言:javascript
复制
ffmpeg -i input.mp4 -ss 00:00:30 output.mp4

命令 , 可以将 视频文件 从 第 30 秒处开始裁剪 到 结尾位置 ,

转换前的视频信息 :

转换后的视频信息 :

2、设置输出文件的视频长度 -t 参数

ffmpeg 命令 中 使用 -t duration 参数 , 可以 设置 输出 文件的 视频长度 , duration 指的是播放时间 , 单位是 秒 ;

从 输入文件 中 裁剪出特定长度的音频或视频片段时 , 可以使用 -t 参数 , -t 参数后面跟的时间值可以是秒 ( 如 : 5 表示 5 秒 ) 或者 更详细的时间格式 ( 如 : 00:00:05 表示 5 秒 ) ;

duration 播放时间 参数值 :

  • 可以是 秒持续 为单位的时间 , 如 : 5 表示 播放 5 秒钟 ;
  • 可以是 时间标记 , 如 : 00:00:05 表示 播放 5 秒钟 ;

如果 要 将 输入文件 特定开始点 起的 10 秒视频 进行处理 ,

  • 使用 -ss 设置 输入文件的起始时间
  • 使用 -t 参数 设置 播放持续时间

注意 : -t 参数指定的时间长度是从 -ss 参数指定的开始时间点计算的 ; 如果没有指定 -ss 参数 , 那么 -t 参数将从视频的开头开始计算播放长度 ;

执行

代码语言:javascript
复制
ffmpeg -i input.mp4 -ss 00:00:30 -t 10 output.mp4

命令 , 将 输入文件 input.mp4 的 第 30 秒开始的 10 秒视频 , 输出到 output.mp4 文件中 ;

输入文件信息 :

输出文件信息 :