一、目的
使用PHP利用ffmpeg获取音频、视频的详细信息,音视频总时长、码率、视频分辨率、音频编码、音频采样频率、实际播放时间、文件大小。
二、下载并安装ffmpeg
1、下载地址:https://www.ffmpeg.org/
2、解压放到项目下,文件夹下有三个exe
三、PHP代码
说明:ffmpeg 更换成自己实际存放地址;
getVideoInfo()方法有三个判断,分别是获取音视频基本信息(音视频时长、音视频秒数、开始时间、码率等),视频信息(视频编码、视频格式、视频分辨率、视频尺寸),音频信息(音频编码、音频采样频率)、音视频文件大小
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 | /** * 获取音视频基本信息 */ public function getVideoInfo( $file ) { $command = sprintf( 'E:/phpstudy_pro/WWW/test/public/ffmpeg/bin/ffmpeg -i "%s" 2>&1' , $file ); //你的ffmpeg路径 ob_start(); passthru ( $command ); $info = ob_get_contents(); ob_end_clean(); $data = array (); if (preg_match( "/Duration: (.*?), start: (.*?), bitrate: (d*) kb/s/" , $info , $match )) { $data [ 'duration' ] = $match [1]; //播放时间 $arr_duration = explode ( ':' , $match [1]); $data [ 'seconds' ] = $arr_duration [0] * 3600 + $arr_duration [1] * 60 + $arr_duration [2]; //转换播放时间为秒数 $data [ 'start' ] = $match [2]; //开始时间 $data [ 'bitrate' ] = $match [3]; //码率(kb) } if (preg_match( "/Video: (.*?), (.*?), (.*?)[,s]/" , $info , $match )) { $data [ 'vcodec' ] = $match [1]; //视频编码格式 $data [ 'vformat' ] = $match [2]; //视频格式 $data [ 'resolution' ] = $match [3]; //视频分辨率 $arr_resolution = explode ( 'x' , $match [3]); $data [ 'width' ] = $arr_resolution [0]; $data [ 'height' ] = $arr_resolution [1]; } if (preg_match( "/Audio: (w*), (d*) Hz/" , $info , $match )) { $data [ 'acodec' ] = $match [1]; //音频编码 $data [ 'asamplerate' ] = $match [2]; //音频采样频率 } if (isset( $data [ 'seconds' ]) && isset( $data [ 'start' ])) { $data [ 'play_time' ] = $data [ 'seconds' ] + $data [ 'start' ]; //实际播放时间 } $data [ 'size' ] = filesize ( $file ); //文件大小 return $data ; } /** * 调用 */ public function video() { // 定义视频路径 $videoPath = 'E:/phpstudy_pro/WWW/test/public/uploads/8秒.mp4' ; $video_info = $this ->getVideoInfo( $videoPath ); echo '<pre>' ; print_r( $video_info ); }</pre> |
四、运行结果
以上就是PHP利用ffmpeg获取音频、视频的详细信息的详细内容,更多关于PHP ffmpeg获取音频信息的资料请关注IT俱乐部其它相关文章!