内容简介:php获取视频时长?获取音轨信息?获取媒体文件的详细信息? php-mediainfo了解一下个人博客地址为:dangbowen.com,欢迎加入收藏夹 本机或者服务器必须有medainfolinux
php获取视频时长?获取音轨信息?获取媒体文件的详细信息? php-mediainfo了解一下
准备工作
个人博客地址为: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
-
github: php-mediainfo
-
composer安装如下
$ composer require mhor/php-mediainfo 复制代码
实际使用过程
- 使用之前仔细看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文件,发现尾部这个提示后才觉得自作聪明要不得,这个坑因为自己瞎改源码耽误了小一个小时.
- 初始化类并处理返回值获得文件大小代码,$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; 复制代码
- 获取文件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 本文链接: dangbowen.com/php/extensi… 版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!
以上所述就是小编给大家介绍的《php-MediaInfo 获取媒体信息》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
iPhone开发实战
2009-10 / 69.00元
《iPhone开发实战》全面探讨了iPhone平台的两种编程方式——Web开发和SDK编程。全书结合示例对这两种编程方式的基本流程、基本原理和基本原则给出了详细而通俗的讲解。在Web开发方面,分别介绍了三个iPhone Web库,即WebKit、iUI和Canvas,并讨论了Web开发环境Dashcode,最后阐述Web应用程序的调试。在SDK开发方面,详细描述其各种组件和功能,包括Xcode、I......一起来看看 《iPhone开发实战》 这本书的介绍吧!
MD5 加密
MD5 加密工具
RGB HSV 转换
RGB HSV 互转工具