WP_READ_AUDIO_METADATA() ─ Получение метаданных из аудиофайла
Функция wp_read_audio_metadata() позволяет извлекать метаданные из ID3 тегов аудиофайлов. Она полезна для получения информации о файле, такой как формат, продолжительность, размер и другие данные.
Производительность функции
- Время выполнения: 0.014777 сек (очень медленно) | 50000 раз: 1538.81 сек (очень медленно) | PHP 7.0.5, WP 4.5
Хуки функции
wp_read_audio_metadata
Возвращаемые значения
Функция возвращает массив с метаданными или false, если данные не найдены.
Использование функции
wp_read_audio_metadata( $file );
Параметры функции
$file(строка, обязательный) – Путь к аудиофайлу.
Примеры использования
Пример 1: Получение всех данных аудиофайла по его пути
if( ! function_exists('wp_read_audio_metadata') ){
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
=> 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] => ����JFIFC ...file data itself
[mime] => image/jpeg
[width] => 624
[height] => 352
)
)
Пример 2: Отображение продолжительности аудиофайла в секундах
// wp_read_audio_metadata() недоступна на фронтальной части сайта.
if( ! function_exists( 'wp_read_audio_metadata' ) ){
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 sprintf( 'Продолжительность аудио: %d сек.', $metadata['length'] );
// Вывод: Продолжительность аудио: 60 сек.
Изменения
- Версия с 3.6.0: функция была введена.
Код функции
Вот как выглядит код функции wp_read_audio_metadata():
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();
$id3->options_audiovideo_quicktime_ReturnAtomData = true;
$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;
return apply_filters( 'wp_read_audio_metadata', $metadata, $file, $file_format, $data );
}
Связанные функции
delete_post_meta_by_key()wp_generate_attachment_metadata()wp_get_attachment_metadata()wp_maybe_generate_attachment_metadata()wp_update_attachment_metadata()
Эти функции помогут вам более эффективно управлять метаданными вложений в WordPress.