[最新]php-MediaInfo获取媒体信息

php获取视频时长?获取音轨信息?获取媒体文件的详细信息?
php-mediainfo了解一下

准备工作

个人博客地址为:https://dangbowen.com,欢迎加入收藏夹
本机或者服务器必须有medainfo
linux

$ sudo apt-get install mediainfo

mac

$ brew install mediainfo

测试软件是否可用,可以在mplayer提供的各种媒体文件用来测试

$ 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

当你能看到上面显示的各种信息时说明你的环境已安装mediainfo

安装php-mediainfo

  1. github: php-mediainfo

  2. composer安装如下

$ composer require mhor/php-mediainfo

实际使用过程

  1. 使用之前仔细看github中的readme中的Extra里面有这么一个提示:Support new mediainfo version (>=17.10) 所以在初始化类的时候需如下:
$mediaInfo = new MediaInfo();
$mediaInfo->setConfig('use_oldxml_mediainfo_output_format', true);//这句必须加,因为目前的mediainfo版本早超过17.1,所以需要主动申明下config的格式
$mediaInfoContainer = $mediaInfo->getInfo('music.mp3');

现在百度和谷歌大部分的php-mediainfo资料都是16年左右的,当时mediainfo版本没有到17.1所以你如果按照他们的实际过程操作会提示错误,由于我在操作的时候根据错误提示修改了包的源码,虽然数据顺利取到了,但是宽高和duration数值都是个位数(仅发现的bug),我还纳闷这么成熟的包应该不会有这样的bug,最后仔细看了下readme文件,发现尾部这个提示后才觉得自作聪明要不得,这个坑因为自己瞎改源码耽误了小一个小时.

  1. 初始化类并处理返回值获得文件大小代码,$url是可以为远程文件或者本地文件
$mediaInfo = new MediaInfo();
$mediaInfo->setConfig('use_oldxml_mediainfo_output_format', true);
$mediaInfoContainer = $mediaInfo->getInfo($url);
//打印下 $mediaInfoContainer 变量,你就可以获取所有关于媒体信息的详细数据
$jsonInfo = json_encode($mediaInfoContainer);
$jsonInfo = json_decode($jsonInfo);
$general = $jsonInfo->general;
//获取文件的size大小 单位是 bit,general是基础信息
$data['size'] = $general->file_size->bit;
  1. 获取文件format,可以用来逻辑判断 视频 还是 音频 还是 图片 来取对应信息,比如图片是没有duration字段的,视频和音频是包含音轨信息的等.
$ext = $general->format->shortName;
if ($ext == 'GIF' or $ext == 'JPEG' or $ext == 'PNG'){
    //图片宽高 size $jsonInfo->images的结果是数组
    $image_info = $jsonInfo->images[0];
    $data['width'] = $image_info->width->absoluteValue ?: 0;
    $data['height'] = $image_info->height->absoluteValue ?: 0;
} elseif ($ext == 'MPEG-4') {
    //mp4格式文件 先获取音轨数
    $data['audio_count'] = $general->count_of_audio_streams ?: 0;
    //$jsonInfo->videos获得是视频信息的数组,因为视频文件里有可多包含多个视频轨道
    $video_info = $jsonInfo->videos[0];
    //获取第一个视频的时长
    $data['duration'] = $video_info->duration->milliseconds ?: 0;
    //获取第一个视频的宽
    $data['width'] = $video_info->width->absoluteValue ?: 0;
    //获取第一个视频的高
    $data['height'] = $video_info->height->absoluteValue ?: 0;
}

最后

php-mediainfo是php处理媒体信息的一个扩展包,如果是日常处理媒体信息的脚本,我们可以直接调用mediainfo命令来获取各种想要的信息,详情可以看这篇博客Mediainfo命令实操记录

本文作者: Bowen
本文链接: https://dangbowen.com/php/extension/77969671.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,732评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,496评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,264评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,807评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,806评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,675评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,029评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,683评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,704评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,666评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,773评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,413评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,016评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,204评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,083评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,503评论 2 343

推荐阅读更多精彩内容