利用PHP中的FFmpeg讀取視頻播放時長與碼率等信息
function
getVideoInfo(
$file
) {
define(
'FFMPEG_PATH'
,
'/usr/local/ffmpeg2/bin/ffmpeg -i "%s" 2>&1'
);
$command
= sprintf(FFMPEG_PATH,
$file
);
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
;
}
//用法
$video_info
= getVideoInfo(
'video.mp4'
);
print_r(
$video_info
);