内容简介: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 许可协议。转载请注明出处!
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- MySQL 建表语句转 PostgreSQL 建表语句全纪录
- Go语言开发-过程式编程-通信和并发语句-Select语句
- SQL语句优化之JOIN和LEFT JOIN 和 RIGHT JOIN语句的优化
- Python 条件语句
- Python 循环语句
- Python break 语句
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
产品经理的第二本书
[美] 哥乔斯 / 戴维侬 / 中国财政经济出版社 / 2004-4 / 39.80元
产品经理的第二本书:产品经理实战技巧指南,ISBN:9787500570950,作者:(美)琳达·哥乔斯(Linda Gorchels)著;戴维侬译;戴维侬译一起来看看 《产品经理的第二本书》 这本书的介绍吧!