【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.mzph.cn/diannao/84067.shtml

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

相关文章

有哪些GIF图片转换的开源工具

以下是关于GIF图片转换的开源工具的详细总结,涵盖功能特点、适用场景及用户评价: 1. FFmpeg 功能特点: 作为开源命令行工具,FFmpeg支持视频转GIF、调整帧率、分辨率、截取片段等操作,可通过脚本批量处理。适用场景: 适合开发者或技术用户进行高效批处理,常用于服务器端自…

js不同浏览器标签页、窗口或 iframe 之间可以相互通信

一、创建一个广播通道 // 创建一个名为 vue-apps-channel 的广播通道 const channel new BroadcastChannel(vue-apps-channel);二、发送消息 channel.postMessage({type: popup, message: false}); 三、接收消息(也需要创建广播通道) // 也创建一个…

【算法笔记day two】滑动窗口(不定长版)

前言 hello大家好,本期文章紧接着上期,讲述滑窗的下一个大分类——不定长。 定长滑窗请看我上期文章,有详细介绍。温馨提醒,代码大部分为手搓,答案方法不唯一。如果想要优雅的版本可以去找其他题解,我的…

Node.js Express 项目现代化打包部署全指南

Node.js Express 项目现代化打包部署全指南 一、项目准备阶段 1.1 依赖管理优化 # 生产依赖安装(示例) npm install express mongoose dotenv compression helmet# 开发依赖安装 npm install nodemon eslint types/node --save-dev1.2 环境变量配置 /…

Linux电源管理——PSCI初始化流程和多核启动流程

目录 一、PSCI 初始化流程 1、PSCI设备树节点 2、PSCI kernel初始化流程 get_set_conduit_method set_conduit psci_probe 二、CPU PSCI 操作初始化流程 1、CPU 设备树节点 2、 struct cpu_operations 3、kernel 流程 cpu_read_bootcpu_ops smp_init_cpus 三、CPU…

【Nginx学习笔记】:Fastapi服务部署单机Nginx配置说明

服务部署单机Nginx配置说明 服务.conf配置文件: upstream asr_backend {server 127.0.0.1:8010; }server {listen 80;server_name your_domain.com;location / {proxy_pass http://localhost:8000;proxy_set_header Host $host;proxy_set_header X-Real-IP $remot…

nfs存储IO等待,导致k8s业务系统卡慢问题处理

注:服务器配置:64C,128G,麒麟v10系统,系统磁盘使用空间(5T)均低于50%,存储磁盘iops约为800左右 发现业务系统卡慢,使用top 命令查看.系统负载较高长期保持在60以上,发现wa值的指标参数长期高于15,返现CPU用于写入磁盘IO等待的时间较高,系统的磁盘I/O压力较大. 配合开发查看日志…

Pytorch 项目实战-1: MNIST 手写数字识别

刚接触深度学习的小伙伴们,是不是经常听说 MNIST 数据集和 PyTorch 框架?今天就带大家从零开始,用 PyTorch 实现 MNIST 手写数字识别,轻松迈出深度学习实践的第一步! 一、MNIST 数据集:深度学习界的 “Hel…

大数据量下Redis分片的5种策略

随着业务规模的增长,单一Redis实例面临着内存容量、网络带宽和计算能力的瓶颈。 分片(Sharding)成为扩展Redis的关键策略,它将数据分散到多个Redis节点上,每个节点负责整个数据集的一个子集。 本文将分享5种Redis分片策略。 1. 取模分片(M…

CentOS 7上搭建高可用BIND9集群指南

在 CentOS 7 上搭建一个高可用的 BIND9 集群通常涉及以下几种关键技术和策略的组合:主从复制 (Master-Slave Replication)、负载均衡 (Load Balancing) 以及可能的浮动 IP (Floating IP) 或 Anycast。 我们将主要关注主从复制和负载均衡的实现,这是构成高…

LangChain4j入门AI(六)整合提示词(Prompt)

前言 提示词(Prompt)是用户输入给AI模型的一段文字或指令,用于引导模型生成特定类型的内容。通过提示词,用户可以告诉AI“做什么”、 “如何做”以及“输出格式”,从而在满足需求的同时最大程度减少无关信息的生成。有…

【MySQL】笔记

📚 博主的专栏 🐧 Linux | 🖥️ C | 📊 数据结构 | 💡C 算法 | 🅒 C 语言 | 🌐 计算机网络 在ubuntu中,改配置文件: sudo nano /etc/mysql/mysql.conf.d/mysq…

TDengine 运维—容量规划

概述 若计划使用 TDengine 搭建一个时序数据平台,须提前对计算资源、存储资源和网络资源进行详细规划,以确保满足业务场景的需求。通常 TDengine 会运行多个进程,包括 taosd、taosadapter、taoskeeper、taos-explorer 和 taosx。 在这些进程…

OpenCV CUDA模块图像过滤------创建一个盒式滤波器(Box Filter)函数createBoxFilter()

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 cv::cuda::createBoxFilter 是 OpenCV CUDA 模块中的一个工厂函数,用于创建一个 盒式滤波器(Box Filter)&…

谷歌I/O 2025 完全指南:由Gemini开创的AI新时代及其对我们未来的影响

在这个朝着智能化一切狂奔的世界中,谷歌I/O 2025不仅展示了人工智能创新——它传递了一个明确的信息:未来已来临,而且由Gemini驱动。 从突破性的模型进步到沉浸式通信工具和个性化AI助手,谷歌正在重塑人机交互的本质。让我们一起了解最重大的公告及其对开发者、用户和AI生…

5000 字总结CSS 中的过渡、动画和变换详解

CSS 中的过渡、动画和变换详解 一、CSS 过渡(Transitions) 1. 基本概念 CSS 过渡是一种平滑改变 CSS 属性值的机制,允许属性值在一定时间内从一个值逐渐变化到另一个值,从而创建流畅的动画效果。过渡只能用于具有中间值的属性(如颜色、大小、位置等),不能用于 displa…

【图像生成大模型】CogVideoX-5b:开启文本到视频生成的新纪元

CogVideoX-5b:开启文本到视频生成的新纪元 项目背景与目标模型架构与技术亮点项目运行方式与执行步骤环境准备模型加载与推理量化推理 执行报错与问题解决内存不足模型加载失败生成质量不佳 相关论文信息总结 在人工智能领域,文本到视频生成技术一直是研…

辨析Spark 运行方式、运行模式(master)、部署方式(deploy-mode)

为了理清 Spark 运行方式、部署模式(master)、部署方式(deploy-mode) 之间的关系,我们先明确几个核心概念,再对比它们的联系与区别。 一、核心概念解析 1. Spark 运行方式(代码执行方式&#…

从芯片互连到机器人革命:英伟达双线出击,NVLink开放生态+GR00T模型定义AI计算新时代

5月19日,在台湾举办的Computex 2025上,英伟达推出新技术“NVLink Fusion”,允许非英伟达CPU和GPU,同英伟达产品以及高速GPU互连技术NVLink结合使用,加速AI芯片连接。新技术的推出旨在保持英伟达在人工智能开发和计算领…

04算法学习_209.长度最小的子数组

04算法学习_209.长度最小的子数组题目描述:个人代码:学习思路:第一种写法:题解关键点: 第二种写法:题解关键点: 个人学习时疑惑点解答: 04算法学习_209.长度最小的子数组 力扣题目链…