【ffmpeg】ffprobe基本用法

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 developersbuilt 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-librubberbandlibavutil      59. 39.100 / 59. 39.100libavcodec     61. 19.100 / 61. 19.100libavformat    61.  7.100 / 61.  7.100libavdevice    61.  3.100 / 61.  3.100libavfilter    10.  4.100 / 10.  4.100libswscale      8.  3.100 /  8.  3.100libswresample   5.  3.100 /  5.  3.100libpostproc    58.  3.100 / 58.  3.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '.\testVideo.mp4':Metadata:major_brand     : isomminor_version   : 512compatible_brands: isomiso2avc1mp41encoder         : Lavf58.20.100Duration: 00:00:12.10, start: 0.000000, bitrate: 2770 kb/sStream #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    : VideoHandlervendor_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    : SoundHandlervendor_id       : [0][0][0][0]

版本信息和编译配置详情

ffprobe version 7.1-essentials_build-www.gyan.dev Copyright (c) 2007-2024 the FFmpeg developersbuilt 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-librubberbandlibavutil      59. 39.100 / 59. 39.100libavcodec     61. 19.100 / 61. 19.100libavformat    61.  7.100 / 61.  7.100libavdevice    61.  3.100 / 61.  3.100libavfilter    10.  4.100 / 10.  4.100libswscale      8.  3.100 /  8.  3.100libswresample   5.  3.100 /  5.  3.100libpostproc    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 由多个子库组成,版本号如下:

库名称版本号说明
libavutil59.39.100工具库(数学、日志等基础功能)
libavcodec61.19.100编解码器核心库(H.264/AAC等)
libavformat61.7.100容器格式解析(MP4/MKV等)
libavdevice61.3.100设备输入/输出(摄像头、屏幕捕获)
libavfilter10.4.100音视频滤镜(裁剪、缩放等)
libswscale8.3.100图像缩放/色彩转换
libswresample5.3.100音频重采样(采样率转换)
libpostproc58.3.100后处理(去块效应等)
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '.\testVideo.mp4':Metadata:major_brand     : isomminor_version   : 512compatible_brands: isomiso2avc1mp41encoder         : Lavf58.20.100Duration: 00:00:12.10, start: 0.000000, bitrate: 2770 kb/sStream #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    : VideoHandlervendor_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    : SoundHandlervendor_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(默认音频流标记)。

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

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

相关文章

暗黑科技感风格智慧工地监管系统

智慧工地监管系统作为这场变革中的关键力量,正逐渐改变着传统工地的管理模式。今天,就带大家一同领略一款用Axure精心打造的暗黑科技感风格智慧工地监管系统原型,感受科技与建筑碰撞出的奇妙火花。 这款智慧工地监管系统原型采用了极具魅力的…

【软件安装】Windows操作系统中安装mongodb数据库和mongo-shell工具

这篇文章,主要介绍Windows操作系统中如何安装mongodb数据库和mongo-shell工具。 目录 一、安装mongodb数据库 1.1、下载mongodb安装包 1.2、添加配置文件 1.3、编写启动脚本(可选) 1.4、启动服务 二、安装mongo-shell工具 2.1、下载mo…

CSS:margin的塌陷与合并问题

文章目录 一、margin塌陷问题二、margin合并问题 一、margin塌陷问题 二、margin合并问题

PostgreSQL 数据库备份与恢复

1 逻辑备份(单库) postgres#pg_dump --help 使用方法: pg_dump [选项]... [数据库名字] 一般选项: -f, --fileFILENAME 输出文件或目录名 -F, --formatc|d|t|p 输出文件格式 (c 自定义压缩格式输出, d 目录, tar,p 备份为文本明…

使用 LibreOffice 实现各种文档格式转换(支持任何开发语言调用 和 Linux + Windows 环境)[全网首发,保姆级教程,建议收藏]

以下能帮助你可以使用任何开发语言,在任何平台都能使用 LibreOffice 实现 Word、Excel、PPT 等文档的自动转换,目前展示在 ASP.NET Core 中为 PDF的实战案例,其他的文档格式转换逻辑同理。 📦 1. 安装 LibreOffice 🐧…

AWS stop/start 使实例存储lost + 注意点

先看一下官方的说明: EC2有一个特性,当执行stop/start操作(注意,这个并不是重启/reboot,而是先停止/stop,再启动/start)时,该EC2会迁移到其它的底层硬件上。 对于实例存储来说,由于实例存储是由其所在的底层硬件来提供的,此时相当于分配到了一块全新的空的磁盘。 但是从…

跨域问题详解

目录 一、什么是跨域问题? 二、跨域问题出现的原因 三、跨域的解决方案 四、结语 在 Web 开发的世界里,当我们尝试通过 AJAX 等技术获取不同源的资源时,常常会遇到 “跨域问题”。这不仅是前端开发者频繁遭遇的技术障碍,也是保…

VSCode 插件 GitLens 破解方法

文章目录 1. 安装指定版本2. 修改插件文件3. 重启 VSCode 1. 安装指定版本 在 VSCode 中打开扩展(Ctrl Shift X),搜索 GitLens,右键点击 安装特定版本,在弹出的窗口中选择 17.0.2,然后等待安装完成。 2…

JavaScript的三大核心组成:ECMAScript、DOM与BOM

JavaScript的三大核心组成:ECMAScript、DOM与BOM 在前端开发领域,JavaScript是构建动态网页和交互式应用的核心语言。然而,许多人对JavaScript的组成缺乏清晰的认识。实际上,JavaScript并非单一的语言规范,而是由三个…

JC/T 2490-2019 石灰基单层装饰砂浆检测

石灰基单层装饰砂浆是指由石灰等无机胶凝材料、级配砂、外加剂或无机颜料制成的具有装饰功能的干粉饰面材料。 JC/T 2490-2019石灰基单层装饰砂浆检测项目: 测试项目 测试方法 外观 JC/T 2490 干密度 JC/T 2490 凝结时间 JGJ/T 70 抗折强度 GB/T 17671 抗…

用算法实现 用统计的方式实现 用自然语言处理的方法实现 用大模型实现 专利精益化统计分析

我们可以从算法、统计、自然语言处理(NLP)和大型语言模型(LLM)这四个方面,探讨如何实现对专利社区、作者重要性以及共同作者贡献度的分析。 1. 如何体现专利的社区 (社群效应) 🤖 用算法实现 网络分析算法…

深入浅出IIC协议 - 从总线原理到FPGA实战开发 -- 第五篇:多主仲裁与错误恢复

第五篇:多主仲裁与错误恢复 副标题 :从总线冲突到故障自愈——构建高可靠I2C系统的终极指南 1. 多主仲裁机制 1.1 仲裁原理与硬件实现 仲裁流程图解 : 仲裁失败处理 : 立即切换为从机模式 监测总线空闲后重试(随机…

146. LRU Cache

题目描述 146. LRU Cache 哈希表双向链表 详见代码和注释: class LRUCache { private:int capacity_{0};int size_{0};struct Node{int key{0};int val{0};Node* pre{nullptr};Node* next{nullptr};Node(int k,int v,Node* pr,Node* nex):key(k),val(v),pre(pr),…

docker network 自定义网络配置与管理指南

Docker 自定义网络配置与管理指南 1. 网络基础概念 Docker 网络是容器间通信和与外部世界交互的基础。通过自定义网络,可以实现容器间的隔离、静态 IP 分配和服务发现。 关键术语: 子网(Subnet):IP 地址的逻辑分组,例如 172.1…

linux strace调式定位系统问题

strace 的基本功能 strace 的主要功能包括: 跟踪系统调用:显示进程执行时调用的系统函数及其参数和返回值。监控信号:记录进程接收到的信号。性能分析:统计系统调用的执行时间和次数。调试支持:帮助定位程序崩溃、性…

告别手抖困扰:全方位健康护理指南

手抖,医学上称为震颤,是常见的身体症状,可能由多种原因引发,了解其成因并采取科学护理措施,对改善症状、维护健康至关重要。 生理性手抖往往因情绪激动、过度劳累、大量饮用咖啡或酒精等引起,这种手抖通常较…

华为2025年校招笔试真题手撕教程(一)

一、题目 输入: 第一行为记录的版本迭代关系个数N,范围是[1,100000]; 第二行到第N1行:每行包含两个字符串,第一个字符串为当前版本,第二个字符串为前序版本,用空格隔开。字符串包含字符个数为…

Qt 的多线程

Qt 中的多线程主要用于处理耗时操作,避免阻塞主线程(UI 线程),从而提高程序的响应性和运行效率。以下是 Qt 多线程的相关技术总结: 常见的多线程实现方式 继承 QThread 类 :最基础的实现方式,具…

基于ITcpServer/IHttpServer框架的HTTP服务器

https://www.cnblogs.com/MuZhangyong/p/16839231.html 在基于ITcpServer/IHttpServer框架的HTTP服务器实现中,OnBody方法主要用于接收HTTP请求体数据,而触发HTTP响应通常是在OnMessageComplete方法中完成。以下是完整的响应触发机制说明: sequenceDiagramClient->>…

Windows 下 Qt 项目配置 FFmpeg 简明指南

一、作用 在qt项目中配置ffmpeg库 二、步骤 1、直接使用已经编译好的ffmpeg库文件,分为win32版本和win64版本; 2、win32版本下载地址:https://github.com/sudo-nautilus/FFmpeg-Builds-Win32/releases/tag/latest 3、win64版本下载地址&a…