wp_read_audio_metadata

Получает все данные об аудио файле из его ID3 меток. Сюда входят все доступные данные: формат, каналы, битрейт, размер, MIMEтип, продолжительность, год, альбом, артист, комментарий, картинка и т.д.

Функция не определена во внешней части сайта (фронт-энде). Чтобы она там работала, нужно подключить файл:

if( ! is_admin() ) require_once ABSPATH . 'wp-admin/includes/media.php';
✈ 1 раз = 0.014777с = тормоз | 50000 раз = 1538.81с = тормоз PHP 7.0.5, WP 4.5

Хуков нет.

Возвращает

Массив/true/false. Массив данных файла, если он найден.

Использование

wp_read_audio_metadata( $file );
$file(строка) (обязательный)
Путь до файла. Нужно указывать абсолютный путь сервера, а не URL.

Примеры

#1 Получим все данные аудио файла по пути файла

// во фронте, функция wp_read_audio_metadata() недоступна.
if( ! is_admin() ) require_once ABSPATH . 'wp-admin/includes/media.php';

$file = wp_get_upload_dir()['basedir'] . '/2016/04/Happy_Birthday.mp3'; // путь до файла

$metadata = wp_read_audio_metadata( $file );

print_r( $metadata );

/* Выведет:

Array
(
	[dataformat] => mp3
	[channels] => 2
	[sample_rate] => 44100
	[bitrate] => 320000
	[channelmode] => stereo
	[bitrate_mode] => cbr
	[lossless] => 
	[encoder_options] => CBR320
	[compression_ratio] => 0.226757369615
	[fileformat] => mp3
	[filesize] => 342016
	[mime_type] => audio/mpeg
	[length] => 8
	[length_formatted] => 0:08
	[text] => Elsynor Elsy
	[artist] => Gregory House
	[album] => Original from TVShow
	[band] => Gregory House
	[title] => Happy Birthday
	[publisher] => FOX
	[year] => 2004
	[comment] => House M.D. - 01x06 The Socratic Method
	[genre] => Sound clip
	[image] => Array
		(
			[data] => ����JFIF��C ...данные самого файла
			[mime] => image/jpeg
			[width] => 624
			[height] => 352
		)

)

*/

#2 Выведем продолжительность аудио файла в секундах

// во фронте, функция wp_read_audio_metadata() недоступна.
if( ! is_admin() ) require_once ABSPATH . 'wp-admin/includes/media.php';

$file = wp_get_upload_dir()['basedir'] . '/2016/04/Happy_Birthday.mp3'; // путь до файла

$metadata = wp_read_audio_metadata( $file );

echo  'Аудио длится ' . $metadata['length'] . ' сек.';

// выведет: Аудио длится 60 сек.

Код из


wp-admin/includes/media.php

WP 4.7.2

<?php
function wp_read_audio_metadata( $file ) {
	if ( ! file_exists( $file ) ) {
		return false;
	}
	$metadata = array();

	if ( ! defined( 'GETID3_TEMP_DIR' ) ) {
		define( 'GETID3_TEMP_DIR', get_temp_dir() );
	}

	if ( ! class_exists( 'getID3', false ) ) {
		require( ABSPATH . WPINC . '/ID3/getid3.php' );
	}
	$id3 = new getID3();
	$data = $id3->analyze( $file );

	if ( ! empty( $data['audio'] ) ) {
		unset( $data['audio']['streams'] );
		$metadata = $data['audio'];
	}

	if ( ! empty( $data['fileformat'] ) )
		$metadata['fileformat'] = $data['fileformat'];
	if ( ! empty( $data['filesize'] ) )
		$metadata['filesize'] = (int) $data['filesize'];
	if ( ! empty( $data['mime_type'] ) )
		$metadata['mime_type'] = $data['mime_type'];
	if ( ! empty( $data['playtime_seconds'] ) )
		$metadata['length'] = (int) round( $data['playtime_seconds'] );
	if ( ! empty( $data['playtime_string'] ) )
		$metadata['length_formatted'] = $data['playtime_string'];

	wp_add_id3_tag_data( $metadata, $data );

	return $metadata;
}