WordPress как на ладони
Очень Удобный и Быстрый Хостинг для сайтов на WordPress. Пользуюсь сам и вам рекомендую!

wp_read_audio_metadata()WP 3.6.0

Получает все данные об аудио файле из его 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
Хуки из функции

Возвращает

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

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

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

Примеры

1

#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 );

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

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

#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 );

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
		)

)

*/

Список изменений

С версии 3.6.0 Введена.

Код wp_read_audio_metadata() WP 6.5.2

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();
	// Required to get the `created_timestamp` value.
	$id3->options_audiovideo_quicktime_ReturnAtomData = true; // phpcs:ignore WordPress.NamingConventions.ValidVariableName

	$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'];
	}

	if ( empty( $metadata['created_timestamp'] ) ) {
		$created_timestamp = wp_get_media_creation_timestamp( $data );

		if ( false !== $created_timestamp ) {
			$metadata['created_timestamp'] = $created_timestamp;
		}
	}

	wp_add_id3_tag_data( $metadata, $data );

	$file_format = isset( $metadata['fileformat'] ) ? $metadata['fileformat'] : null;

	/**
	 * Filters the array of metadata retrieved from an audio file.
	 *
	 * In core, usually this selection is what is stored.
	 * More complete data can be parsed from the `$data` parameter.
	 *
	 * @since 6.1.0
	 *
	 * @param array       $metadata    Filtered audio metadata.
	 * @param string      $file        Path to audio file.
	 * @param string|null $file_format File format of audio, as analyzed by getID3.
	 *                                 Null if unknown.
	 * @param array       $data        Raw metadata from getID3.
	 */
	return apply_filters( 'wp_read_audio_metadata', $metadata, $file, $file_format, $data );
}
3 комментария
    Войти