установка обложки альбома mp3 с php

Я ищу лучший или любой способ установить альбом Art of mp3s с помощью PHP.

Предложения?

Solutions Collecting From Web of "установка обложки альбома mp3 с php"

Обложка альбома представляет собой фрейм данных, обозначенный как «прикрепленное изображение» из спецификации ID3v2, а getID3 () теперь является лишь одним из способов записи всех возможных кадров данных в ID3v2 с использованием чистого PHP.

Посмотрите на этот источник: http://getid3.sourceforge.net/source/write.id3v2.phps

Искать этот текст в источнике:

// 4.14 APIC Attached picture 

есть кусок кода, ответственный за запись обложек альбомов.

Другим способом, который, кажется, не так медленно, как чистый PHP, является использование некоторого внешнего приложения, которое будет запущено скриптом PHP. Если ваш сервис, предназначенный для работы под высокой нагрузкой, будет лучшим решением для двоичного скомпилированного инструмента.

Лучшим (более быстрым) способом сделать это было бы через внешнее приложение и функцию PHP exec (), чтобы развлечь команду. Я бы рекомендовал eyeD3 .

Не уверен, что это все еще проблема, но:

удивительно полный проект getid3 () ( http://getid3.org ) решит все ваши проблемы. Посетите этот форум для получения дополнительной информации.

Вы можете посмотреть проект getID3 () . Я не могу обещать, что он может обрабатывать изображения, но он утверждает, что умеет писать теги ID3 для MP3, поэтому я думаю, что это будет ваш лучший выбор.

Вместо того, чтобы просто поделиться кодом для обновления обложек альбомов, я собираюсь опубликовать весь мой класс оболочки MP3 getID3 здесь, чтобы вы могли использовать, как хотите

Применение

 $mp3 = new Whisppa\Music\MP3($mp3_filepath); //Get data $mp3->title $mp3->artist $mp3->album $mp3->genre //set properties $mp3->year = '2014'; //change album art $mp3->set_art(file_get_contents($pathtoimage), 'image/jpeg', 'New Caption');//sets front album art //save new details $mp3->save(); 

Класс

 <?php namespace Whisppa\Music; class MP3 { protected static $_id3; protected $file; protected $id3; protected $data = null; protected $info = ['duration']; protected $tags = ['title', 'artist', 'album', 'year', 'genre', 'comment', 'track', 'attached_picture', 'image']; protected $readonly_tags = ['attached_picture', 'comment', 'image']; //'popularimeter' => ['email'=> 'music@whisppa.com', 'rating'=> 1, 'data'=> 0],//rating: 5 = 255, 4 = 196, 3 = 128, 2 = 64,1 = 1 | data: counter public function __construct($file) { $this->file = $file; $this->id3 = self::id3(); } public function update_filepath($file) { $this->file = $file; } public function save() { $tagwriter = new \GetId3\Write\Tags; $tagwriter->filename = $this->file; $tagwriter->tag_encoding = 'UTF-8'; $tagwriter->tagformats = ['id3v2.3', 'id3v1']; $tagwriter->overwrite_tags = true; $tagwriter->remove_other_tags = true; $tagwriter->tag_data = $this->data; // write tags if ($tagwriter->WriteTags()) return true; else throw new \Exception(implode(' : ', $tagwriter->errors)); } public static function id3() { if(!self::$_id3) self::$_id3 = new \GetId3\GetId3Core; return self::$_id3; } public function set_art($data, $mime = 'image/jpeg', $caption = 'Whisppa Music') { $this->data['attached_picture'] = []; $this->data['attached_picture'][0]['data'] = $data; $this->data['attached_picture'][0]['picturetypeid'] = 0x03; // 'Cover (front)' $this->data['attached_picture'][0]['description'] = $caption; $this->data['attached_picture'][0]['mime'] = $mime; return $this; } public function __get($key) { if(!in_array($key, $this->tags) && !in_array($key, $this->info) && !isset($this->info[$key])) throw new \Exception("Unknown property '$key' for class '" . __class__ . "'"); if($this->data === null) $this->analyze(); if($key == 'image') return isset($this->data['attached_picture']) ? ['data' => $this->data['attached_picture'][0]['data'], 'mime' => $this->data['attached_picture'][0]['mime']] : null; else if(isset($this->info[$key])) return $this->info[$key]; else return isset($this->data[$key]) ? $this->data[$key][0] : null; } public function __set($key, $value) { if(!in_array($key, $this->tags)) throw new \Exception("Unknown property '$key' for class '" . __class__ . "'"); if(in_array($key, $this->readonly_tags)) throw new \Exception("Tying to set readonly property '$key' for class '" . __class__ . "'"); if($this->data === null) $this->analyze(); $this->data[$key] = [$value]; } protected function analyze() { $data = $this->id3->analyze($this->file); $this->info = [ 'duration' => isset($data['playtime_seconds']) ? ceil($data['playtime_seconds']) : 0, ]; $this->data = isset($data['tags']) ? array_intersect_key($data['tags']['id3v2'], array_flip($this->tags)) : []; $this->data['comment'] = ['http://whisppa.com']; if(isset($data['id3v2']['APIC'])) $this->data['attached_picture'] = [$data['id3v2']['APIC'][0]]; } } 

Заметка

Пока нет кода обработки ошибок. В настоящее время я просто полагаюсь на исключения, когда я пытаюсь запустить какие-либо операции. Не стесняйтесь изменять и использовать по мере необходимости. Требуется PHP GETID3

Вот базовый код для добавления изображения и данных ID3 с помощью getID3. (@frostymarvelous 'wrapper включает эквивалентный код, однако я думаю, что полезно показать основы.)

 <?php // Initialize getID3 engine $getID3 = new getID3; // Initialize getID3 tag-writing module $tagwriter = new getid3_writetags; $tagwriter->filename = 'audiofile.mp3'; $tagwriter->tagformats = array('id3v2.3'); $tagwriter->overwrite_tags = true; $tagwriter->remove_other_tags = true; $tagwriter->tag_encoding = $TextEncoding; $pictureFile=file_get_contents("image.jpg"); $TagData = array( 'title' => 'My Title', 'artist' => 'My Artist', 'attached_picture' => array( array ( 'data'=> $pictureFile, 'picturetypeid'=> 3, 'mime'=> 'image/jpeg', 'description' => 'My Picture' ) ) ); ?> 

Я не думаю, что это действительно возможно с PHP. Я имею в виду, я полагаю, что все возможно, но это может быть не родное PHP-решение. Из документов PHP я думаю, что единственными предметами, которые могут быть обновлены, являются:

  • заглавие
  • Художники
  • Альбом
  • Год
  • Жанр
  • Комментарий
  • трек

Извини чувак. Возможно, у Perl, Python или Ruby может быть какое-то решение.

Я не уверен, что вы знакомы с Perl (мне лично это не нравится, но это хорошо для таких вещей …). Вот сценарий, который, похоже, способен вставлять и редактировать обложку альбома в формате MP3: http://www.plunder.com/-download-66279.htm