Тема: ffprobe
Всем привет!
Помогите с кодом
<?php
$ffprobe = 'путь к ffprobe';
$videoFile = 'http://cdn.streambox.in/pd/kinopub/aWQ9ODIxMzUwOzE2MDU2MDE2ODE7NzQ0MzA4MjsxNjA1NzE2MTI4Jmg9S1NRYjkwTFdXbnRUSTBpYTFBbXd0dyZlPTE2MDU4MDI1Mjg/c/62/HipmvwdnSbMfvnrnV.mp4';
$cmd = shell_exec($ffprobe .' -v quiet -show_format -show_streams -show_programs -show_chapters -show_private_data -print_format json "'.$videoFile.'"');
$parsed = json_decode($cmd, true);
// print_r($parsed);
// Получаем кодек
echo "Кодек: ";
$codec = $parsed[streams][0][codec_name];
$codec = str_replace("h264", "H.264", $codec);
$codec = str_replace("hevc", "H.265 / HEVC", $codec);
$codec = str_replace("h265", "H.265 / HEVC", $codec);
print_r($codec);
// Получаем HDR
$hdr = $parsed[streams][0][profile];
$hdr = str_replace("Main 10", ' /<span style="color: #159ff6"> HDR</span>', $hdr);
$hdr = str_replace("High", "", $hdr);
print_r($hdr);
echo '<br />';
// Получаем Разрешение видео
echo "Разрешение видео: ";
print_r($parsed[streams][0][width]);
echo "x";
print_r($parsed[streams][0][height]);
echo '<br />';
// Получаем Размер файла
function get_size( $bytes )
{
if ( $bytes < 1000 * 1024 ) {
return number_format( $bytes / 1024, 2 ) . " KB";
}
elseif ( $bytes < 1000 * 1048576 ) {
return number_format( $bytes / 1048576, 2 ) . " MB";
}
elseif ( $bytes < 1000 * 1073741824 ) {
return number_format( $bytes / 1073741824, 2 ) . " GB";
}
else {
return number_format( $bytes / 1099511627776, 2 ) . " TB";
}
}
echo "Размер: ";
echo get_size( $parsed[format][size] );
echo '<br />';
// Получаем Битрейт файла
function get_bitrate( $bitrate )
{
if ( $bitrate < 1000 * 1024 ) {
return number_format( $bitrate / 1024, 2 ) . " mb/s";
}
elseif ( $bitrate < 1000 * 1048576 ) {
return number_format( $bitrate / 1048576, 2 ) . " mb/s";
}
elseif ( $bitrate < 1000 * 1073741824 ) {
return number_format( $bitrate / 1073741824, 2 ) . " mb/s";
}
else {
return number_format( $bitrate / 1099511627776, 2 ) . " mb/s";
}
}
echo "Битрейт: ";
echo get_bitrate( $parsed[format][bit_rate] );
echo '<br />';
// Получаем Длительность видео
$time = $parsed[format][duration];
echo "Продолжительность: ";
echo $hours = floor($time/3600);
echo ":";
echo floor($minutes = ($time/3600 - $hours)*60);
echo ":";
echo $seconds = ceil(($minutes - floor($minutes))*60);
// Получаем звуковые дорожки
foreach ($parsed as $key) {
// Кбираем первый элемент из массива
unset($key[0]);
foreach ($key as $key2) {
echo "<pre>";
print_r($key2[index]);
echo ". ";
print_r($key2[streams][title]);
echo " ";
print_r($key2[codec_name]);
echo " ";
print_r($key2[channel_layout]);
echo " ";
print_r($key2[tags][language]);
echo "</pre>";
}
}
// echo "<pre>";
// print_r($parsed);
// echo "</pre>";
Вот что выводится
Кодек: H.264
Разрешение видео: 3840x1600
Размер: 23.31 GB
Битрейт: 23.57 mb/s
Продолжительность: 2:15:4
1. aac 5.1 rus
2. aac 5.1 rus
3. aac 5.1 rus
4. aac 5.1 rus
5. aac 5.1 rus
6. aac 5.1 rus
7. aac stereo ukr
8. aac stereo ukr
9. aac stereo ukr
10. aac 5.1 eng
11. ac3 5.1(side) rus
h. h h h h
.
.
m. m m m m
Q. Q Q Q Q
0. 0 0 0 0
8. 8 8 8 8
2. 2 2 2 2
2. 2 2 2 2
.
.
Нужно чтобы отображались только звуковые дорожки
То есть после
11. ac3 5.1(side) rus
все удалить