FFmpeg命令行工具学习(一):查看媒体文件头信息工具ffprobe
一、简述
ffprobe是ffmpeg命令行工具中相对简单的,此命令是用来查看媒体文件格式的工具。
二、命令格式
在命令行中输入如下格式的命令:
ffprobe [文件名]
三、使用ffprobe查看mp3格式的文件
本文使用的是歌曲《社会摇》,执行的命令为:
ffprobe shy.mp3
输出内容为:
Input #, mp3, from 'shy.mp3':
Metadata:
genre : Blues
encoder : Lavf56.4.101
comment : key(Don't modify):L64FU3W4YxX3ZFTmbZ+8/UO6KmVXLfTij3uZN/wCXE4a00XHtvOwccwFlS+8ednRD4MnrdUH+aUYZFVY8bObsrabtBM2Ps/UAWPJtsmW/3RXnn6eJcNUHrPALM0003fIpQnn6MOWbdXqog6WFDLpaZJhoPMnFy9u41HxCalUwMEc+mkHNn+nSLlioJfpv4wPBwUhxfLNmOScmXPzOary2k37A/brRx7QUlMD9rkaZ
album : 社会摇
title : 社会摇
artist : 萧全
track :
Duration: ::09.34, start: 0.025056, bitrate: kb/s
Stream #:: Audio: mp3, Hz, stereo, s16p, kb/s
Stream #:: Video: mjpeg, yuvj444p(pc, bt470bg/unknown/unknown), 500x500 [SAR : DAR :], 90k tbr, 90k tbn, 90k tbc
Metadata:
comment : Media (e.g. label side of CD)
首先我们看以下这行信息:
Duration: ::09.34, start: 0.025056, bitrate: kb/s
这行信息表示,该视频文件的时长是4分9秒340毫秒,开始播放时间是0.025056,整个文件的比特率是256Kbit/s,然后我们看下一行信息:
Stream #:: Audio: mp3, Hz, stereo, s16p, kb/s
这行信息表示,第一个流是音频流,编码格式是MP3格式,采样率是44.1KHz,声道是立体声,采样表示格式是SInt16(short)的planner(平铺格式),这路流的比特率320Kbit/s。
四、使用ffprobe查看mp4格式的文件
本文使用的是视频《泡沫》,执行的命令为:
ffprobe pm.mp4
输出内容为:
Input #, mov,mp4,m4a,3gp,3g2,mj2, from 'pm.mp4':
Metadata:
major_brand : isom
minor_version :
compatible_brands: isomavc1
creation_time : --17T16::.000000Z
album : Yinyuetai
artist : yinyuetai.com
comment : Yinyuetai-1TR1151
date : // ::
Duration: ::33.51, start: 0.000000, bitrate: kb/s
Stream #:(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p, 960x540, kb/s, fps, tbr, 25k tbn, tbc (default)
Metadata:
creation_time : --17T16::.000000Z
handler_name : @GPAC0.5.1-DEV-rev5472
Stream #:(und): Audio: aac (LC) (mp4a / 0x6134706D), Hz, stereo, fltp, kb/s (default)
Metadata:
creation_time : --17T15::.000000Z
handler_name : Sound Media Handler
首先我们看以下这行信息:
Duration: ::33.51, start: 0.000000, bitrate: kb/s
这行信息表示,该视频文件的时长是4分33秒510毫秒,开始播放时间是0,整个文件的比特率是1104Kbit/s,然后我们看下一行信息:
Stream #:(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p, 960x540, kb/s, fps, tbr, 25k tbn, tbc (default)
这行信息表示,第一个流是视频流,编码格式是H264格式(封装格式为AVC1),每一帧的数据表示为yuv420p,分辨率为960x540,这路流的比特率为1108Kbit/s,帧率为每秒钟25帧。
接下来我们看下一行:
Stream #:(und): Audio: aac (LC) (mp4a / 0x6134706D), Hz, stereo, fltp, kb/s (default)
这行信息表示第二个流是音频流,编码方式为ACC(封装格式为MP4A),并且采用的Profile是LC规格,采样率是44.1KHz,声道是立体声,这路流的比特率92Kbit/s。
到此为止,我们就掌握了使用ffprobe提取媒体的头文件信息的方式,并了解了提取出来的信息的含义
五、ffprobe高级使用方式
1. 输出格式信息
appledeMacBook-Pro:Desktop renhui$ ffprobe -show_format pm.mp4
ffprobe version 3.4. Copyright (c) - the FFmpeg developers
built with Apple LLVM version 9.0. (clang-900.0.39.2)
configuration: --prefix=/usr/local/Cellar/ffmpeg/3.4. --enable-shared --enable-pthreads --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --disable-jack --enable-gpl --enable-libmp3lame --enable-libx264 --enable-libxvid --enable-opencl --enable-videotoolbox --disable-lzma
libavutil . 78.100 / . 78.100
libavcodec 57.107. / 57.107.
libavformat . 83.100 / . 83.100
libavdevice . 10.100 / . 10.100
libavfilter 6.107. / 6.107.
libavresample . . / . .
libswscale . 8.100 / . 8.100
libswresample . 9.100 / . 9.100
libpostproc . 7.100 / . 7.100
Input #, mov,mp4,m4a,3gp,3g2,mj2, from 'pm.mp4':
Metadata:
major_brand : isom
minor_version :
compatible_brands: isomavc1
creation_time : --17T16::.000000Z
album : Yinyuetai
artist : yinyuetai.com
comment : Yinyuetai-1TR1151
date : // ::
Duration: ::33.51, start: 0.000000, bitrate: kb/s
Stream #:(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p, 960x540, kb/s, fps, tbr, 25k tbn, tbc (default)
Metadata:
creation_time : --17T16::.000000Z
handler_name : @GPAC0.5.1-DEV-rev5472
Stream #:(und): Audio: aac (LC) (mp4a / 0x6134706D), Hz, stereo, fltp, kb/s (default)
Metadata:
creation_time : --17T15::.000000Z
handler_name : Sound Media Handler
[FORMAT]
filename=pm.mp4
nb_streams=
nb_programs=
format_name=mov,mp4,m4a,3gp,3g2,mj2
format_long_name=QuickTime / MOV
start_time=0.000000
duration=273.506667
size=
bit_rate=
probe_score=
TAG:major_brand=isom
TAG:minor_version=
TAG:compatible_brands=isomavc1
TAG:creation_time=--17T16::.000000Z
TAG:album=Yinyuetai
TAG:artist=yinyuetai.com
TAG:comment=Yinyuetai-1TR1151
TAG:date=// ::
[/FORMAT]
2. 输出每个流的具体信息(以JSON格式)
appledeMacBook-Pro:Desktop renhui$ ffprobe -print_format json -show_streams pm.mp4
ffprobe version 3.4. Copyright (c) - the FFmpeg developers
built with Apple LLVM version 9.0. (clang-900.0.39.2)
configuration: --prefix=/usr/local/Cellar/ffmpeg/3.4. --enable-shared --enable-pthreads --enable-version3 --enable-hardcoded-tables --enable-avresample --cc=clang --host-cflags= --host-ldflags= --disable-jack --enable-gpl --enable-libmp3lame --enable-libx264 --enable-libxvid --enable-opencl --enable-videotoolbox --disable-lzma
libavutil . 78.100 / . 78.100
libavcodec 57.107. / 57.107.
libavformat . 83.100 / . 83.100
libavdevice . 10.100 / . 10.100
libavfilter 6.107. / 6.107.
libavresample . . / . .
libswscale . 8.100 / . 8.100
libswresample . 9.100 / . 9.100
libpostproc . 7.100 / . 7.100
{
Input #, mov,mp4,m4a,3gp,3g2,mj2, from 'pm.mp4':
Metadata:
major_brand : isom
minor_version :
compatible_brands: isomavc1
creation_time : --17T16::.000000Z
album : Yinyuetai
artist : yinyuetai.com
comment : Yinyuetai-1TR1151
date : // ::
Duration: ::33.51, start: 0.000000, bitrate: kb/s
Stream #:(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p, 960x540, kb/s, fps, tbr, 25k tbn, tbc (default)
Metadata:
creation_time : --17T16::.000000Z
handler_name : @GPAC0.5.1-DEV-rev5472
Stream #:(und): Audio: aac (LC) (mp4a / 0x6134706D), Hz, stereo, fltp, kb/s (default)
Metadata:
creation_time : --17T15::.000000Z
handler_name : Sound Media Handler
"streams": [
{
"index": ,
"codec_name": "h264",
"codec_long_name": "H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10",
"profile": "Main",
"codec_type": "video",
"codec_time_base": "1/50",
"codec_tag_string": "avc1",
"codec_tag": "0x31637661",
"width": ,
"height": ,
"coded_width": ,
"coded_height": ,
"has_b_frames": ,
"sample_aspect_ratio": "0:1",
"display_aspect_ratio": "0:1",
"pix_fmt": "yuv420p",
"level": ,
"chroma_location": "left",
"refs": ,
"is_avc": "true",
"nal_length_size": "",
"r_frame_rate": "25/1",
"avg_frame_rate": "25/1",
"time_base": "1/25000",
"start_pts": ,
"start_time": "0.000000",
"duration_ts": ,
"duration": "273.400000",
"bit_rate": "",
"bits_per_raw_sample": "",
"nb_frames": "",
"disposition": {
"default": ,
"dub": ,
"original": ,
"comment": ,
"lyrics": ,
"karaoke": ,
"forced": ,
"hearing_impaired": ,
"visual_impaired": ,
"clean_effects": ,
"attached_pic": ,
"timed_thumbnails":
},
"tags": {
"creation_time": "2016-12-17T16:02:05.000000Z",
"language": "und",
"handler_name": "264@GPAC0.5.1-DEV-rev5472"
}
},
{
"index": ,
"codec_name": "aac",
"codec_long_name": "AAC (Advanced Audio Coding)",
"profile": "LC",
"codec_type": "audio",
"codec_time_base": "1/44100",
"codec_tag_string": "mp4a",
"codec_tag": "0x6134706d",
"sample_fmt": "fltp",
"sample_rate": "",
"channels": ,
"channel_layout": "stereo",
"bits_per_sample": ,
"r_frame_rate": "0/0",
"avg_frame_rate": "0/0",
"time_base": "1/44100",
"start_pts": ,
"start_time": "0.000000",
"duration_ts": ,
"duration": "273.507846",
"bit_rate": "",
"max_bit_rate": "",
"nb_frames": "",
"disposition": {
"default": ,
"dub": ,
"original": ,
"comment": ,
"lyrics": ,
"karaoke": ,
"forced": ,
"hearing_impaired": ,
"visual_impaired": ,
"clean_effects": ,
"attached_pic": ,
"timed_thumbnails":
},
"tags": {
"creation_time": "2016-12-17T15:50:54.000000Z",
"language": "und",
"handler_name": "Sound Media Handler"
}
}
]
}
3. 显示帧信息
ffprobe -show_frames pm.mp4
4. 查看包信息
ffprobe -show_packets pm.mp4
FFmpeg命令行工具学习(一):查看媒体文件头信息工具ffprobe的更多相关文章
- FFmpeg命令行工具和批处理脚本进行简单的音视频文件编辑
FFmpeg_Tutorial FFmpeg工具和sdk库的使用demo 一.使用FFmpeg命令行工具和批处理脚本进行简单的音视频文件编辑 1.基本介绍 对于每一个从事音视频技术开发的工程师,想必没 ...
- 【Andorid】短视频拍摄SDK——Vitamio Recorder 2.0 发布(支持ffmpeg命令行)
简介 VCamera SDK Android 版(短视频拍摄SDK)是炫一下(北京)科技有限公司推出的软件开发工具包,为Android开发者提供简单.快捷的接口,帮助开发者实现Android平台上的短 ...
- FFmpeg命令行map参数选择音视频流
FFmpeg命令行map参数选择音视频流 介绍 -map参数告诉ffmpeg要从输入源中选择/拷贝哪个stream流到输出,可以从输入源中选择多个音视频流作为输出. 不加-map参数,ffmpeg默认 ...
- FFmpeg命令行工具学习(三):媒体文件转换工具ffmpeg
一.简述 ffmpeg是一个非常强大的工具,它可以转换任何格式的媒体文件,并且还可以用自己的AudioFilter以及VideoFilter进行处理和编辑.有了它,我们就可以对媒体文件做很多我们想做的 ...
- FFmpeg命令行工具学习(二):播放媒体文件的工具ffplay
一.简述 ffplay是以FFmpeg框架为基础,外加渲染音视频的库libSDL构建的媒体文件播放器. 在使用ffplay之前必须要安装到系统中,MAC的安装教程为:http://www.cnblog ...
- FFmpeg命令行工具学习(四):FFmpeg 采集设备
在使用 FFmpeg 作为编码器时,可以使用FFmpeg采集本地的音视频采集设备的数据,然后进行编码.封装.传输等操作. 例如,我们可以采集摄像头的图像作为视频,采集麦克风的数据作为音频,然后对采集的 ...
- 使用FFMpeg命令行录屏推rtmp流
最近在做局域网内屏幕分享方面的东西,要把录制一台设备的屏幕然后实时推送给内网的一个或多个用户. 做了很多实验,效果还没有达到要求,这里分享一下推rtmp流的实验. 实验使用到的各种工具:FFmpeg. ...
- 在windows命令行窗口下执行:查看所有的端口占用情况
开始--运行--cmd 进入命令提示符 输入netstat -ano 即可看到所有连接的PID 之后在任务管理器中找到这个PID所对应的程序如果任务管理器中没有PID这一项,可以在任务管理器中选&qu ...
- [转载]Python命令行参数学习
转载自: http://blog.163.com/weak_time/blog/static/25852809120169333247925/ Python的命令行参数,提供了很多有用的功能,可以方便 ...
随机推荐
- 02-再探MySQL数据库
一.数据类型 1.数值类型 a.整数类型 整数类型:TINYINT SMALLINT MEDIUMINT INT BIGINT 作用:存储年龄,等级,id,各种号码等. =============== ...
- 经验分享:PDF怎么提取页面
PDF文件的页面有很多但有需要的并不是全部,有时候需要其中一页或几页的时候,这个时候我们就需要把单独的页面提取出来,这个时候应该怎么做呢,上次有小伙伴来询问小编,今天小编就为大家分享一下小编自己的编辑 ...
- 【玩转开源】BananaPi R2 —— 第一篇 Openwrt安装
最近手上拿到一块香蕉派的R2,这块板子可以用作路由器,所以决定在板子上面跑一下Openwrt. R2的外观长这个样子,看起来还是比较酷的: 硬件介绍 CPU 是MTK的4核芯片mt7623n,搭配mt ...
- 多项式 之 快速傅里叶变换(FFT)/数论变换(NTT)/常用套路【入门】
原文链接https://www.cnblogs.com/zhouzhendong/p/Fast-Fourier-Transform.html 多项式 之 快速傅里叶变换(FFT)/数论变换(NTT)/ ...
- git使用命令讲解
1.创建版本库 ①选择一个合适的地方,创建一个空目录 mkdir learngit cd learngit ②通过git init命令把这个目录变成Git可以管理的仓库: git init Git ...
- python 爬虫与数据可视化--matplotlib模块应用
一.数据分析的目的(利用大数据量数据分析,帮助人们做出战略决策) 二.什么是matplotlib? matplotlib: 最流行的Python底层绘图库,主要做数据可视化图表,名字取材于MATLAB ...
- 动态规划——Maximum Sum of 3 Non-Overlapping Subarrays
这个题对我来说真的是相当难的题目了,严格来讲可能不算是个动态规划的题目,但这个题目对类似的划分多个非重叠连续子区间的问题提供了一个很好解决方案 这个题目需要找三个非重叠的连续子区间,通过维护两个数组将 ...
- git commit时暂时忽略已提交的文件
当正在修改某文件A,此时需要commit,但是A没修改完暂时不能一起commit. 执行: git update-index --assume-unchanged A的路径 git暂时会忽略该文件的修 ...
- 同步计数器 CountDownLatch
CountDownLatch 是一个同步工具类,它允许一个或多个线程一直等待,直到其他线程的操作执行完后再执行. CountDownLatch 是通过一个计数器来实现的,计数器的初始值为线程的数量.每 ...
- SQLServer表、列备注管理
在开发时,为了方便,在SQL SERVER库内对表名.列名进行备注,但在DB部署客户时,想一次清理上述备注值. 特编写如下 SQL,一次清除上述备注内容: declare @table nvarcha ...