Получение метаданных из аудиофайла с помощью wp_read_audio_metadata()

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.

Leave a Reply

Ваш адрес email не будет опубликован. Обязательные поля помечены *