【ffmpeg】ffprobe基本用法

发布于:2025-05-22 ⋅ 阅读:(27) ⋅ 点赞:(0)

ffprobe 是 FFmpeg 工具集中的一个强大命令行工具,主要用于分析多媒体文件(如视频、音频等)的格式和内容信息。它可以提取文件的元数据、编解码器信息、流详情、帧信息等,而无需对文件进行转码或修改。


基本用法

ffprobe [选项] 输入文件

常用功能及示例

1. 显示文件基本信息

默认输出文件的格式、流信息(视频/音频/字幕等):

ffprobe input.mp4
2. 以 JSON 格式输出详细信息

适合程序解析:

ffprobe -v quiet -print_format json -show_format -show_streams input.mp4
  • -v quiet:隐藏日志信息。
  • -print_format json:输出 JSON 格式。
  • -show_format:显示文件格式信息(如时长、码率等)。
  • -show_streams:显示所有流(视频、音频等)的详细信息。
3. 查看特定信息
  • 查看视频分辨率、帧率:

    ffprobe -v error -select_streams v:0 -show_entries stream=width,height,avg_frame_rate -of csv=p=0 input.mp4
    
    • -select_streams v:0:选择第一个视频流。
    • -of csv=p=0:输出 CSV 格式(无表头)。
  • 查看音频采样率和声道数:

    ffprobe -v error -select_streams a:0 -show_entries stream=sample_rate,channels -of csv=p=0 input.mp4
    
4. 查看帧信息(关键帧、PTS 等)
ffprobe -show_frames input.mp4
  • 输出每一帧的详细信息(如帧类型、时间戳等)。
5. 检查关键帧(I帧)位置
ffprobe -v error -select_streams v:0 -show_entries frame=pkt_pts_time,pict_type -of csv=p=0 input.mp4
  • pict_type=I 表示关键帧。
6. 查看文件时长
ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 input.mp4
7. 查看编解码器信息
ffprobe -show_streams -show_format input.mp4
  • 输出中包含 codec_name(如 h264aac)。

常用选项

选项 说明
-show_format 显示文件容器格式信息(如 MP4、MKV)。
-show_streams 显示所有流(视频、音频、字幕等)的详细信息。
-show_frames 显示每一帧的详细信息(可能输出很长)。
-select_streams v:0 仅选择第一个视频流(a:0 表示第一个音频流)。
-v error 隐藏冗余日志,仅显示错误。
-print_format json 以 JSON 格式输出(还支持 xml, csv 等)。
-of default 控制输出格式(如 -of csv=p=0 输出简洁 CSV)。

代码示例

PS C:\Users\Mayn\Desktop> ffprobe .\testVideo.mp4
ffprobe version 7.1-essentials_build-www.gyan.dev Copyright (c) 2007-2024 the FFmpeg developers
  built with gcc 14.2.0 (Rev1, Built by MSYS2 project)
  configuration: --enable-gpl --enable-version3 --enable-static --disable-w32threads --disable-autodetect --enable-fontconfig --enable-iconv --enable-gnutls --enable-libxml2 --enable-gmp --enable-bzlib --enable-lzma --enable-zlib --enable-libsrt --enable-libssh --enable-libzmq --enable-avisynth --enable-sdl2 --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxvid --enable-libaom --enable-libopenjpeg --enable-libvpx --enable-mediafoundation --enable-libass --enable-libfreetype --enable-libfribidi --enable-libharfbuzz --enable-libvidstab --enable-libvmaf --enable-libzimg --enable-amf --enable-cuda-llvm --enable-cuvid --enable-dxva2 --enable-d3d11va --enable-d3d12va --enable-ffnvcodec --enable-libvpl --enable-nvdec --enable-nvenc --enable-vaapi --enable-libgme --enable-libopenmpt --enable-libopencore-amrwb --enable-libmp3lame --enable-libtheora --enable-libvo-amrwbenc --enable-libgsm --enable-libopencore-amrnb --enable-libopus --enable-libspeex --enable-libvorbis --enable-librubberband
  libavutil      59. 39.100 / 59. 39.100
  libavcodec     61. 19.100 / 61. 19.100
  libavformat    61.  7.100 / 61.  7.100
  libavdevice    61.  3.100 / 61.  3.100
  libavfilter    10.  4.100 / 10.  4.100
  libswscale      8.  3.100 /  8.  3.100
  libswresample   5.  3.100 /  5.  3.100
  libpostproc    58.  3.100 / 58.  3.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '.\testVideo.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf58.20.100
  Duration: 00:00:12.10, start: 0.000000, bitrate: 2770 kb/s
  Stream #0:0[0x1](und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709, progressive), 720x1280, 2714 kb/s, 30 fps, 30 tbr, 90k tbn (default)
      Metadata:
        handler_name    : VideoHandler
        vendor_id       : [0][0][0][0]
  Stream #0:1[0x2](und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, mono, fltp, 48 kb/s (default)
      Metadata:
        handler_name    : SoundHandler
        vendor_id       : [0][0][0][0]

版本信息和编译配置详情

ffprobe version 7.1-essentials_build-www.gyan.dev Copyright (c) 2007-2024 the FFmpeg developers
  built with gcc 14.2.0 (Rev1, Built by MSYS2 project)
  configuration: --enable-gpl --enable-version3 --enable-static --disable-w32threads --disable-autodetect --enable-fontconfig --enable-iconv --enable-gnutls --enable-libxml2 --enable-gmp --enable-bzlib --enable-lzma --enable-zlib --enable-libsrt --enable-libssh --enable-libzmq --enable-avisynth --enable-sdl2 --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxvid --enable-libaom --enable-libopenjpeg --enable-libvpx --enable-mediafoundation --enable-libass --enable-libfreetype --enable-libfribidi --enable-libharfbuzz --enable-libvidstab --enable-libvmaf --enable-libzimg --enable-amf --enable-cuda-llvm --enable-cuvid --enable-dxva2 --enable-d3d11va --enable-d3d12va --enable-ffnvcodec --enable-libvpl --enable-nvdec --enable-nvenc --enable-vaapi --enable-libgme --enable-libopenmpt --enable-libopencore-amrwb --enable-libmp3lame --enable-libtheora --enable-libvo-amrwbenc --enable-libgsm --enable-libopencore-amrnb --enable-libopus --enable-libspeex --enable-libvorbis --enable-librubberband
  libavutil      59. 39.100 / 59. 39.100
  libavcodec     61. 19.100 / 61. 19.100
  libavformat    61.  7.100 / 61.  7.100
  libavdevice    61.  3.100 / 61.  3.100
  libavfilter    10.  4.100 / 10.  4.100
  libswscale      8.  3.100 /  8.  3.100
  libswresample   5.  3.100 /  5.  3.100
  libpostproc    58.  3.100 / 58.  3.100

1. FFprobe 版本信息

  • 版本号ffprobe version 7.1-essentials_build-www.gyan.dev
    • 这是由第三方开发者 GyanD 编译的 FFmpeg 7.1 版本(非官方构建)。
    • essentials_build 表示这是一个精简版,可能只包含常用功能。
  • 版权声明Copyright (c) 2007-2024 the FFmpeg developers
    FFmpeg 是一个开源项目,版权归开发者社区所有。

2. 编译环境

  • 编译器built with gcc 14.2.0
    使用 GNU Compiler Collection (GCC) 14.2 编译,支持 C/C++。
  • 构建系统MSYS2 project
    在 Windows 上通过 MSYS2 环境编译(兼容 Linux 工具的 Windows 开发环境)。

3. 编译配置(configuration:

这一长串 --enable-xxx--disable-xxx 是 FFmpeg 编译时的选项,表示启用了哪些功能库。关键点:

通用功能
  • --enable-gpl:启用 GPL 许可证(允许使用 GPL 授权的代码)。
  • --enable-static:生成静态链接库(所有功能集成到单个可执行文件)。
硬件加速支持
  • --enable-cuda-llvm:NVIDIA CUDA 加速(通过 LLVM)。
  • --enable-dxva2 / --enable-d3d11va:Windows 硬件解码(DirectX)。
  • --enable-nvenc / --enable-nvdec:NVIDIA 显卡的编码/解码。
编解码器支持
  • 视频:H.264 (libx264)、H.265 (libx265)、VP9 (libvpx)、AV1 (libaom) 等。
  • 音频:AAC (libfdk-aac)、MP3 (libmp3lame)、Opus (libopus) 等。
其他库
  • --enable-libass:字幕渲染支持。
  • --enable-libfreetype:字体渲染。
  • --enable-libvmaf:视频质量评估工具。

4. 库版本信息

FFmpeg 由多个子库组成,版本号如下:

库名称 版本号 说明
libavutil 59.39.100 工具库(数学、日志等基础功能)
libavcodec 61.19.100 编解码器核心库(H.264/AAC等)
libavformat 61.7.100 容器格式解析(MP4/MKV等)
libavdevice 61.3.100 设备输入/输出(摄像头、屏幕捕获)
libavfilter 10.4.100 音视频滤镜(裁剪、缩放等)
libswscale 8.3.100 图像缩放/色彩转换
libswresample 5.3.100 音频重采样(采样率转换)
libpostproc 58.3.100 后处理(去块效应等)
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '.\testVideo.mp4':
  Metadata:
    major_brand     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf58.20.100
  Duration: 00:00:12.10, start: 0.000000, bitrate: 2770 kb/s
  Stream #0:0[0x1](und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709, progressive), 720x1280, 2714 kb/s, 30 fps, 30 tbr, 90k tbn (default)
      Metadata:
        handler_name    : VideoHandler
        vendor_id       : [0][0][0][0]
  Stream #0:1[0x2](und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, mono, fltp, 48 kb/s (default)
      Metadata:
        handler_name    : SoundHandler
        vendor_id       : [0][0][0][0]

这是 ffprobetestVideo.mp4 文件的解析结果,详细说明了视频的容器格式、元数据和基本参数。以下是逐项解析:


1. 容器格式

  • Input #0, mov,mp4,m4a,3gp,3g2,mj2
    表示这是一个 MP4 容器(兼容多种格式,如 QuickTime .mov、3GP 等)。

2. 元数据(Metadata)

  • major_brand: isom 文件的主要品牌标识符,isom 表示标准 ISO 媒体格式(MP4 的基础)。
  • minor_version: 512 次要版本号,用于兼容性标记。
  • compatible_brands: isomiso2avc1mp41 兼容的品牌列表:
    • isom:ISO 基础格式。
    • iso2:ISO 扩展格式。
    • avc1:表示视频流是 H.264 编码。
    • mp41:MP4 版本 1。
  • encoder: Lavf58.20.100 文件由 FFmpeg 的 libavformat 库(版本 58.20.100)生成。

3. 基础参数

  • Duration: 00:00:12.10 视频总时长:12 秒 100 毫秒
  • start: 0.000000 起始时间戳为 0(正常情况)。
  • bitrate: 2770 kb/s 文件的总平均码率:2770 kbps(视频 + 音频)。

4. 流信息(Stream Information)

4.1. 视频流(Stream #0:0)

  • 编码格式h264 (High)(H.264 High Profile),四字符码为 avc1
  • 像素格式yuv420p(标准 4:2:0 色彩采样)。
    • 色彩参数
      tv, bt709:使用 BT.709 色彩空间(高清视频标准)。
      progressive:逐行扫描(非交错)。
  • 分辨率720x1280(竖屏视频)。
  • 码率2714 kb/s(占整体码率的主要部分)。
  • 帧率
    • 30 fps:帧率为 30 帧/秒。
    • 30 tbr(理论帧率)、90k tbn(时间基单位)。
  • 元数据
    handler_name: VideoHandler(默认视频流标记)。

4.2. 音频流(Stream #0:1)

  • 编码格式
    aac (LC)(AAC Low Complexity Profile),四字符码为 mp4a
  • 采样率48000 Hz(标准采样率)。
  • 声道mono(单声道)。
  • 码率48 kb/s(低码率,适合语音或背景音)。
  • 元数据
    handler_name: SoundHandler(默认音频流标记)。

网站公告

今日签到

点亮在社区的每一天
去签到