如何一条Mediainfo --Inform语句同时获取视频参数和音频参数多个Parameters

栏目: IOS · Android · 发布时间: 6年前

内容简介:mediainfo是一个能获取多媒体文件详细信息的软件,包括内容信息,视频信息,音频信息,文本信息等,有了它我们可以查看视频的宽高,比例,播放时长,音轨,比特率等等信息个人博客地址为:dangbowen.com,欢迎加入收藏夹 参考php-mediainfo教程安装mediainfo并实际操作栗子看能否正确调用mediainfo命令先让我们看下一个普通视频文件的信息都包含哪些

mediainfo是一个能获取多媒体文件详细信息的软件,包括内容信息,视频信息,音频信息,文本信息等,有了它我们可以查看视频的宽高,比例,播放时长,音轨,比特率等等信息

准备工作

个人博客地址为:dangbowen.com,欢迎加入收藏夹 参考php-mediainfo教程安装mediainfo并实际操作栗子看能否正确调用mediainfo命令

命令详解

先让我们看下一个普通视频文件的信息都包含哪些

$ mediainfo 'http://samples.mplayerhq.hu/FLV/Enigma_Principles_of_Lust-part.flv'
General
Complete name                            : http://samples.mplayerhq.hu/FLV/Enigma_Principles_of_Lust-part.flv
Format                                   : Flash Video
File size                                : 500 KiB
Duration                                 : 11 s 711 ms
Overall bit rate                         : 350 kb/s
Tagged date                              : UTC 2011-02-27 11:00:33
Tagging application                      : inlet media FLVTool2 v1.0.6 - http://www.inlet-media.de/flvtool2

Video
Format                                   : AVC
Format/Info                              : Advanced Video Codec
Format profile                           : Main@L2.1
Format settings                          : CABAC / 3 Ref Frames
Format settings, CABAC                   : Yes
Format settings, ReFrames                : 3 frames
Codec ID                                 : 7
Duration                                 : 11 s 711 ms
Width                                    : 426 pixels
Height                                   : 240 pixels
Display aspect ratio                     : 16:9
Frame rate mode                          : Constant
Frame rate                               : 30.000 FPS
Original frame rate                      : 29.970 (29970/1000) FPS
Color space                              : YUV
Chroma subsampling                       : 4:2:0
Bit depth                                : 8 bits
Scan type                                : Progressive

Audio
Format                                   : AAC
Format/Info                              : Advanced Audio Codec
Format profile                           : LC
Codec ID                                 : 10-2
Duration                                 : 11 s 702 ms
Channel(s)                               : 2 channels
Channel positions                        : Front: L R
Sampling rate                            : 22.05 kHz
Frame rate                               : 21.533 FPS (1024 SPF)
Compression mode                         : Lossy
复制代码

能看到格式,size大小,宽,高,duration等等常用信息,让我们一一用mediainfo命令来获取

获取文件格式

$ mediainfo --Inform="General;%Format%" 'http://samples.mplayerhq.hu/FLV/Enigma_Principles_of_Lust-part.flv'
Flash Video
复制代码

返回的是general下的format信息,比如你要的是video下的format信息呢

$ mediainfo --Inform="Video;%Format%" 'http://samples.mplayerhq.hu/FLV/Enigma_Principles_of_Lust-part.flv'
AVC
复制代码

这会拿到的是Video信息下的format,切记这里获取参数的大小写是严格区分的.这2个栗子可以发现如果想获取mediainfo各个参数的信息是先找到 分类名(类似General,Video,Audio)->参数(Format,Width这种),格式就是 用mediainfo的Inform

mediainfo --Inform="分类名;%参数名%" 'http://samples.mplayerhq.hu/FLV/Enigma_Principles_of_Lust-part.flv'

这个格式记住可以获取你想要的任何参数

让我们来练习一下: 套用格式获取duration信息

$ mediainfo --Inform="Video;%Duration%" 'http://samples.mplayerhq.hu/FLV/Enigma_Principles_of_Lust-part.flv'
11711
复制代码

我们可以看到取出来的播放时长单位是毫秒,而不是秒.

再来尝试一下获取文件大小:

$ mediainfo --Inform="General;%File size%" 'http://samples.mplayerhq.hu/FLV/Enigma_Principles_of_Lust-part.flv'

复制代码

??? 为什么返回值是空呢,格式没有错却无法获得文件的大小. 因为在显示的参数都是格式化后的,所以你会看到File size之间是有空格的,如果想获得文件大小应该替换成FileSize

$ mediainfo --Inform="General;%FileSize%" 'http://samples.mplayerhq.hu/FLV/Enigma_Principles_of_Lust-part.flv'
512000
复制代码

此时就顺利获取到了文件大小,那如何知道各个参数的真正参数名呢,用这个命令可以获取所有的详细参数的真实参数名

$ mediainfo --Info-Parameters
General
Count                     : Count of objects available in this stream
Status                    : bit field (0=IsAccepted, 1=IsFilled, 2=IsUpdated, 3=IsFinished)
StreamCount               : Count of streams of that kind available
StreamKind                : Stream type name
StreamKind/String         : Stream type name
....此处省略剩余行信息
复制代码

参数显示的太多,不方便我们查找,我们可以输出到一个txt文件里

$ mediainfo --Info-Parameters > mediainfo_parameters.txt
复制代码

打开 mediainfo_parameters.txt 可以搜索 FileSize
那行显示 FileSize : File size in bytes ,同理我们根据这个可以获得你所需要的参数信息

看到这里你可能已经能熟练使用这个命令获取单个参数值,但是实际场景中可能获取的参数是多个的 例如:同时获取视频的宽,高,播放时长? 很简单每个参数都用 %% 包裹起来然后每个参数用 , 分割即可,命令如下:

$ mediainfo --Inform="Video;%Width%,%Height%,%Duration%" 'http://samples.mplayerhq.hu/FLV/Enigma_Principles_of_Lust-part.flv'
426,240,11711
复制代码

此时我们可以一条语句获得视频的宽,高,播放时长信息,这里的 逗号 可以替换别的字符,你可以用空格,|等可以自行尝试一下,反正解析数据的时候对应好相应的字符就行.简单例子:

$ mediainfo --Inform="Video;%Width%|%Height%|%Duration%" 'http://samples.mplayerhq.hu/FLV/Enigma_Principles_of_Lust-part.flv'
426|240|11711
复制代码

看到这里,你已经会用一条命令获取一个分类下的多个参数信息了,那么如果是要求同时获取视频的宽,高,播放时长,音频的format多个参数信息可以么? 这个问题当初也困扰了我一阵,命令各种尝试之下终无解,最后发现mediainfo的inform命令是支持文件执行的.例子如下:

#编辑一个文本放 一行命令
vi 1.txt
Video;%Width%|%Height%|%Duration%
wq
#命令调用该文本
$ mediainfo --Inform="file://1.txt" 'http://samples.mplayerhq.hu/FLV/Enigma_Principles_of_Lust-part.flv'
426|240|11711

#修改文本命令如下
vi 1.txt
Video;%Width%,%Height%,%Duration%,
Audio;%Format%
wq
#重新执行命令
$ mediainfo --Inform="file://1.txt" 'http://samples.mplayerhq.hu/FLV/Enigma_Principles_of_Lust-part.flv'
426,240,11711,AAC
复制代码

此时可以看到一条命令已经可以获得视频的宽高播放时长和音频的format信息

最后

有的人会想为什么一定要一条命令这么费劲巴拉的处理问题呢?多一条命令也不会多慢? 当你处理几条,几十条视频数据的时候你用多条命令获取这些参数可能影响不大,因为数据量太小.但是实际问题你可能一次要处理上十万条数据,甚至上百万,上千万个数据时,那么精简的一条命令可以缩短脚本的响应时间,提高任务的执行速度,尽量减小了系统开销,这是在生产环境实际处理数据后的一点经验.

本文作者: Bowen 本文链接: dangbowen.com/server/cdb3…

版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Learning JavaScript

Learning JavaScript

Shelley Powers / Oreilly & Associates Inc / 2006-10-17 / $29.99

As web browsers have become more capable and standards compliant, JavaScript has grown in prominence. JavaScript lets designers add sparkle and life to web pages, while more complex JavaScript has led......一起来看看 《Learning JavaScript》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器