Php ile Ses Dosyalarının Kontrolü

Bir projede ses dosyalarının kontrollerini yapmam gerekmişti ve günümüzde bir çok sistemde de upload işlemlerinin kullanıldığını göz önünde bulundurursak bu post da ihtiyaç doğrultusunda kullanılacak bir konuya değinecek. Normalde dosyaların uzantılarını, boyutlarını ve bazı diğer ayrıntılarına ulaşabiliyoruz. Ama ses dosyalarında bu konu biraz farklılaşmakta. Örneğin ses dosyasının yapımcısı (artist), bit rate değeri (kbps), herz vs gibi bilgilerini çekmek için mecburen burada farklı bir yapıya ihtiyaç duyuyoruz. Ben bunu en hızlı şekilde GetID3 apisini kullanarak çözdüm. Gayet hızlı ve projelerinizde çok basit bir kullanıma olanak sağlıyor.

Başlamadan önce aşağıda belirtmiş olduğum kaynak link üzerinden indirip önce bize gereken sınıfları projemize dahil edelim. Sonrasında ise bizim ihtiyacımız olan satırları “demo.audioinfo.class.php” adlı sınıf dosyasından alarak yeni bir sınıfa dahil edeceğiz.

- basic.audioinfo.class.php
    require_once('getid3/getid3.php');

    class BasicAudioInfo {
        var $result = NULL;
        var $info   = NULL;

        function BasicAudioInfo() {
            $this->getID3 = new getID3;
            $this->getID3->option_md5_data        = true;
            $this->getID3->option_md5_data_source = true;
            $this->getID3->encoding               = 'UTF-8';
        }

        function get_audio_info($file) {
            $this->info = $this->getID3->analyze($file);

            if (isset($this->info['error'])) :
                return $this->basic_error_message = $this->info['error'][0];
            endif;

            $this->result = array();
            $this->result['format_name']     = (isset($this->info['fileformat']) ? $this->info['fileformat'] : '').'/'.(isset($this->info['audio']['dataformat']) ? $this->info['audio']['dataformat'] : '').(isset($this->info['video']['dataformat']) ? '/'.$this->info['video']['dataformat'] : '');
            $this->result['encoder_version'] = (isset($this->info['audio']['encoder'])         ? $this->info['audio']['encoder']         : '');
            $this->result['encoder_options'] = (isset($this->info['audio']['encoder_options']) ? $this->info['audio']['encoder_options'] : '');
            $this->result['bitrate_mode']    = (isset($this->info['audio']['bitrate_mode'])    ? $this->info['audio']['bitrate_mode']    : '');
            $this->result['channels']        = (isset($this->info['audio']['channels'])        ? $this->info['audio']['channels']        : '');
            $this->result['sample_rate']     = (isset($this->info['audio']['sample_rate'])     ? $this->info['audio']['sample_rate']     : '');
            $this->result['bits_per_sample'] = (isset($this->info['audio']['bits_per_sample']) ? $this->info['audio']['bits_per_sample'] : '');
            $this->result['playing_time']    = (isset($this->info['playtime_seconds'])         ? $this->info['playtime_seconds']         : '');
            $this->result['avg_bit_rate']    = (isset($this->info['audio']['bitrate'])         ? $this->info['audio']['bitrate']         : '');
            $this->result['tags']            = (isset($this->info['id3v1'])                     ? $this->info['id3v1']                     : '');
            $this->result['comments']        = (isset($this->info['comments'])                 ? $this->info['comments']                 : '');
            $this->result['warning']         = (isset($this->info['warning'])                  ? $this->info['warning']                  : '');
            $this->result['md5']             = (isset($this->info['md5_data'])                 ? $this->info['md5_data']                 : '');

            return $this->result;
        }
    }

Sınıf dosyamız içerisine, var olan “demo.audioinfo.class.php” dosyamızdan bize gereken satırları alarak bir kaç değişiklikle sade bir şekilde ekledik. İlk olarak GetID3 dosyamızı çağırıp sınıfa dahil ettik ve “BasicAudioFile” adlı bir sınıf oluşturduk.

Sınıfımızda sonradan kullanım için result ve info değişkenlerini oluşturup null değerlerini atadık. Ve basit bir construct tanımlayıp, “getID3” sınıfımızı çağırdık.

Sınıfımızda son olarak dosyanın çağrılıp işleneceği ve işlendikten sonra datalarını basit bir şekilde yazdırabileceği bir fonksiyon oluşturduk. Fonksiyonumuz içerisinde önce var ise bastırmasını istediğimiz bir error mesajı tanımladık ki bunu dosya işleneceği zaman kullanacağız. Sonrasında ise işlenen dosyanın, yine aşağıda GetID3 demosunda görebileceğiniz bazı datalarını “result” değişkenimize basit bir kontrol yapısı ile birer değer olarak atadık ve işlenen dataları result ettik. Şimdi ise işlenen dataları ekrana bastıralım.

- Sınıfın örnek kullanımı
require_once "basic.audioinfo.class.php";

$getID3    = new BasicAudioInfo;
$getID3->get_audio_info("Tomandandy - Binoculars.mp3");

if (isset($getID3->info['error'])) :
    echo $getID3->basic_error_message;
else :
    $bit_rate        = $getID3->result['avg_bit_rate'];
    $herz             = $getID3->result['sample_rate'];
    $playing_time    = $getID3->result['playing_time'];
    $file_formant    = $getID3->result['format_name'];
    $file_title        = $getID3->result['tags']['title'];
    $artist            = $getID3->result['tags']['artist'];
    $album            = $getID3->result['tags']['album'];
    $year            = $getID3->result['tags']['year'];
    $comment        = $getID3->result['tags']['comment'];
    $track            = $getID3->result['tags']['track'];
    $genre            = $getID3->result['tags']['genre'];
endif;

Oluşturduğumuz sınıfı projemize dahil edip önce sınıfı sonra fonksiyonu çağırıyoruz. Sınıf içerisinde işlenen dosyanın hata mesajını kontrol ettirmiştik. Projede ise bunu hata mesajı var ise bastır yok ise işlenen dosyanın datalarını göster şeklinde işleyecek basit bir kontrol yapısı kurarak çalıştırıyoruz. Sonrasında ise sınıfta işlettiğimiz dataları tek tek değişkenlere atayıp istediğimiz şekilde kullanabiliriz. Değişkenlere atanan değerlerin detaylarına aşağıdaki GetID3’ün demo sayfasından ulaşabilirsiniz.

Burada önemli olan GetID3’ün kullanım kolaylığı ve hızı. Tabi bu sadece ses dosyaları için geçerli değil bir çok örneği mevcut.

GetID3 - MP3 Örneği
Kaynak

GetID3 | GetID3 Demo

Yayınlayan

Bulut Üzer

Web ortamında gelişmesine yardımcı olan Yusuf Doru sayesinde şuan web developer olarak ilerlemekte.Web ve mobil ortamlarda uygulama geliştirmeye çalışmak da.Ayrı yeten de kişisel blogunda web ve php ile ilgili çalışmalarını ve deneyimlerini paylaşmayı hedeflemekte.

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir