html查询每一秒的一条信息,每天学习一个命令:ffprobe 查看多媒体信息

本文详细介绍了如何利用FFprobe工具以JSON格式获取多媒体文件信息,包括视频时长、编码格式、流信息等,并通过shell脚本示例展示了批量分析视频时长的过程。此外,与mediainfo工具进行了对比,突出了FFprobe在编程友好输出方面的优势。
摘要由CSDN通过智能技术生成

在 ffmpeg package 中有一个 ffprobe 工具,主要用来查看多媒体文件或者流媒体信息,在线的视频信息也能够快速获取。大部分情况下个人比较喜欢使用 ffmpeg -i input.mp4 来快速查看,这种时候在终端上比较快速,而如果有些时候想要分析一下媒体文件,需要编程获取得到的媒体文件结果,显然 ffmpeg 的输出结果简直无法忍受,而 ffprobe 提供非常清晰的输出格式,非常方便的可以提供给编程软件解析使用。

官网说明:http://ffmpeg.org/ffprobe.html

命令格式

ffprobe [OPTION] file

常用的参数

-show_format 显示输入多媒体流的容器格式信息

-show_streams 显示输入多媒体流中每一个流的信息

-i input_file 指定输入文件

-print_format json json 形式输出

-of 或者 -print_format default/compact/csv/flat/ini/json/xml

命令行:

./ffprobe -print_format json -show_format -show_streams -i ./video/c.ts

其中:

-print_format json 以 json 格式输出 ,

-show_format 输出封装格式信息 ,

-show_streams 输出流信息,

-i ./video/c.ts 输入文件

使用实例

基本用法

ffprobe -v error -show_format -show_streams input.mp4

输出该视频的基本信息,如果上面的命令输出结果过多,而只想要比如 size 可以

ffprobe -v error -show_entries format=size -of default=noprint_wrappers=1 input.mp4

如果只想要结果可以

ffprobe -v error -show_entries format=size -of default=noprint_wrappers=1:nokey=1 input.mp4

上面的命令中:

-v 参数是日志输出级别

error 则略去了 build 和 generic 信息,暴露 error 错误

-print_format 则是输出结果格式

获取视频时长

ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 input.mp4

直接输出视频时长。

下面是一段 shell 脚本,之前遇到过有一批视频地址,想要获取这批视频的市场,用 ffprobe 就能够完成。

while IFS='' read -r line || [[ -n "$line" ]]; do

lineArray=($line)

echo ${lineArray[0]}

duration=$(ffprobe -i ${lineArray[1]} -show_entries format=duration -v quiet -of csv="p=0")

echo $duration

echo "${lineArray[0]} ${duration}" >> duration.txt

done < "$1"

以 json 格式输出

ffprobe -show_streams -show_entries format=bit_rate,filename,start_time:stream=duration,width,height,display_aspect_ratio,r_frame_rate,bit_rate -of json -v quiet -i 98a74a06741a091b8a42aaa31b4edc66.mp4

输出:

{

"programs": [

],

"streams": [

{

"width": 720,

"height": 1280,

"display_aspect_ratio": "0:1",

"r_frame_rate": "30/1",

"duration": "40.833333",

"bit_rate": "1710937",

"disposition": {

"default": 1,

"dub": 0,

"original": 0,

"comment": 0,

"lyrics": 0,

"karaoke": 0,

"forced": 0,

"hearing_impaired": 0,

"visual_impaired": 0,

"clean_effects": 0,

"attached_pic": 0

},

"tags": {

"language": "und",

"handler_name": "VideoHandler"

}

},

{

"r_frame_rate": "0/0",

"duration": "40.890431",

"bit_rate": "128102",

"disposition": {

"default": 1,

"dub": 0,

"original": 0,

"comment": 0,

"lyrics": 0,

"karaoke": 0,

"forced": 0,

"hearing_impaired": 0,

"visual_impaired": 0,

"clean_effects": 0,

"attached_pic": 0

},

"tags": {

"language": "und",

"handler_name": "SoundHandler"

}

}

],

"format": {

"filename": "98a74a06741a091b8a42aaa31b4edc66.mp4",

"start_time": "-0.046440",

"bit_rate": "1065995"

}

}

外延

mediainfo 也是一个用来获取音频视频信息的工具,比如封装格式、音视频编码格式、码率等信息。

mediainfo 可以获取的信息包括

General: title, author, director, album, track number, date,

duration…

Video: codec, aspect, fps, bitrate…

Audio: codec, sample rate, channels, language, bitrate…

Text: language of subtitle

Chapters: number of chapters, list of chapters

mediainfo 支持的格式

Video: MKV, OGM, AVI, DivX, WMV, QuickTime, Real, MPEG-1, MPEG-2,

MPEG-4, DVD (VOB)…

Video Codecs: DivX, XviD, MSMPEG4, ASP, H.264, AVC…

Audio: OGG, MP3, WAV, RA, AC3, DTS, AAC, M4A, AU, AIFF…

Subtitles: SRT, SSA, ASS, SAMI…

mediainfo 输出的字段不容易被解析,表述方法不统一。例如,对于 h264 这种编码格式,mediainfo 可能输出的表述为 H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10;还比如,对于 mp3 这样的音频格式,居然会分两个字段进行描述,分别说明 mpeg 和 layer3.

reference

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值