mp3 e resim eklemekten kastın ne?
En popüler mp3 oynatıcılar bile, mp3 içine resim yerleştiremiyor. Bunun yapılabileceğinden emin misin? Bildiğim kadarıyla, MP3 dosyaları, video formatı olmadığından, içine resim eklenemiyor. Ancak resmi, dosyanın yanına yerleştirip, referans verebiliyorlar. Yinede bunun yapılabildiğinden eminsen, PECL kütüphanelerini bir araştır derim, bu kütüphanenin içinde MP3, resim vb.. dosyaların bilgilerini düzenleyecek, fonksiyonlar yer alıyor. Eğer resim ekleniyorsa, mutlaka onun fonksiyonlarıda mevcuttur.Arkadaşlar PHP`yle MP3`e resim nasıl ekleye bilirim?
Veya bize nerede kullanıldığı konusunda bir örnek verirseniz ona göre çözüm üretmeye çalışırız.
id3_set_tag() fonksiyonuyla yapabilirsin diye düşünüyorum
http://www.php.net/manual/tr/function.id3-set-tag.php
id3_set_tag()'ın işlevi vermiş olduğunuz sayfada da belirtildiği gibi, başlık, sanatçı, albüm, yıl, tür, yorum, iznumarası ile sınırlıdır, mp3'e resim eklemek gibi bir fonksiyonu bulunmamaktadır. Zaten mp3'e resim eklenebildiğine dair, herhangi bir ibare veya örnekte görmedim şimdiye kadar, bunun olabiliceğini sanmıyorum.
<?php
define(_Title,"TIT2");
define(_Artist,"TPE1");
define(_Group,"TPE2");
define(_Album,"TALB");
define(_Genre,"TCON");
define(_TrackNo,"TRCK");
define(_Year,"TYER");
$frames = array(_Album=>"",
_TrackNo=>"1",
_Title=>"001 Al-Fatihah (The Opening)",
_Artist=>"",
_Group=>"",
_Year=>"",
_Genre=>"Quran");
#..........................................
# WRITE ID3 TAGS (Write MP3 [v1, v2]
#..........................................
function writeTags($mp3) {
$fl = file_get_contents($mp3);
$Header = substr($fl,0,10);
$tagLen = calcDecTagLen(substr($Header,6,4),$tagLen);
$music = substr($fl,$tagLen+10,-128);
# Can use input Header for output but you may
# wish to change the output filename for testing
$tagLen = 1024; # or whatever you like >your actual
$Header = substr($Header,0,6).setHexTagLen($tagLen);
file_put_contents($mp3,mkV2Tag($Header,$tagLen).$music.mkV1Tag());
}
# Create the V2 tag
function mkV2Tag($Hdr,$tagLen) {
Global $frames;
$lisanssız = chr(0);
$nl3 = $lisanssız.$lisanssız.$lisanssız; # 0 bytes for flags and encoding
$out = "";
foreach($frames as $ky=>$val) {
$n=strlen($val)+1;
$out.= $ky.mkFrmLen($n).$nl3.$val;
}
return $Hdr.str_pad($out,$tagLen,$lisanssız);
}
# Calculate Tag Length from bytes 6-10 of existing header
function calcDecTagLen($word) {
$m = 1;
$int = 0;
for ($i=strlen($word)-1;$i>-1;$i--) {
$int +=$m*ord($word[$i]);
$m=$m*128;
}
return $int;
}
# Make the 4 byte frame length value for the V2tag
function mkFrmLen($int) {
$hx = "";
while ($int>0) {
$n = $int % 256;
$hx = chr($n).$hx;
$int=floor($int/256);
}
return str_pad($hx,4,chr(0),STR_PAD_LEFT);
}
# Create the 128 byte V1 tag
function mkV1Tag() {
Global $frames;
$tagOut = "TAG".
adj($frames[_Title]).
adj($frames[_Artist]).
adj($frames[_Album]).
str_pad($frames[_Year],4).
str_pad(" ",29," ").
chr($frames[_TrackNo]).
chr($n);
return $tagOut;
}
# Pad the header to 30 characters
function adj($str) {
return substr(str_pad($str,30,chr(0)),0,30);
}
$papqa = "../../../Ahmad Al-Hawashi/";
# This is a simple example for an mp3 in current folder
writeTags($papqa."001.MP3");
?>
The setHexTagLen can be figured out from the calcDecTagLen but here's some sample code.
<?php
function setHexTagLen($int) {
$n = pow(128,3);
$intVar = $int;
$m = "";
for ($i=0;$i<4;$i++) {
$m .= chr(floor($intVar/$n));
$intVar = $intVar % $n;
$n=$n/128;
}
header("Location: Set_Name_002.php");
return $m;
}
?>
Eğer PHP`yle resm eklemek (MP3`ün yanına) mümkün değilse , neden bu sayfayı çalıştırdıktan sonra. Yani yeni tag ve ya taglar MP3`dosyasına eklendikten sonra kapak dediğimiz albüm resmi media player`ile dinlediğimizde gözükmüyor? Yani arada olan bağ neden kopuyor?
İnanmıyorsanız kullanın bakın.
Arkadaşım gayet açık ve net bir şekilde sana o resmin php ile değilde dizinde bulunan bir resim ile olduğunu söylemişler. Resmin olmadığından ve gözükmediğinden bahsediyorsun. Hala neyin peşindesin ki? Yada kendini düzgün bir biçimde ifade edemiyorsun.
Hocam düşüncemi gayet basit bir şekilde anlatmaya çalıştım en sona indim.
Bilmiyorum yazdığım mesajı yada mesajları tam olarak okuyup okumadığını.
MP3`lerin albüm resimleri olur.
Bunları normal tag editör programlar yaparlar.(eklerler ve ya silerler)
Bana bunu PHP`ile yapmak lazım.
Bunun peşindeyim hocam. Anlata bildimmi acaba?
Ben kimseye mp3 te resim oynatmak istediğimi sölemedim.
EĞer ki PHP`ile upload ede biliyorsak basit bir resmi,
ve eğer ki, MP3`ün taglarını değiştiğimiz zaman yani MP3`e yeni tag atadığımız zaman MP3`le onun yanındaki resmi arasındaki bağı kopara biliyorsak. Bir resm upload edip klasöre , seçtiğimiz MP3`e de yeni bir tag atayarak bu resimle o MP3 arasında bağlantı kurup.
Upload ettiğimiz resmi o MP3`le bağlantılı hale getirebiliriz düşüncesindeyim.
Neden anlamak istemiyorsunuz bilmiyorum.
o resmin php ile değilde dizinde bulunan bir resim ile olduğunu söylemişler. - yazmışsın. Sence bu mümkünmü? Bir resim otomatik kendini MP3`e ataya bilirmi? Acaba bir JPG` kendiliğinden çalışan program falanmıdır?
Çok rica ediyorum sakın yanlış anlaşılmasın.
Her kese teşekkür ediyorum ilgilendiği için ama hala bu sorunu çözememekteyim. Lütfen PHP`den iyi anlayan biri yardım etsin.
Edit:
Tag editleyen kodu da verdim. Bir incelesenize. Albüm resmi olan bir mp3`e bu kodla yeni bir tag atayın bakın sonucu gözlerinizle görüceksiniz.
Bu söylediğini hiç bir program veya tag editörü yapmıyor, media player örneğinde olduğu gibi, resimleri farklı bir yere yükleyip, ordan referans olarak kullanıyorlar. Bu referans işini Media Player, mp3 ile aynı dizinde bulunan dektop.ini dosyasından yapıyor.MP3`lerin albüm resimleri olur.
Bunları normal tag editör programlar yaparlar.(eklerler ve ya silerler)
Bana bunu PHP`ile yapmak lazım.
Mp3 dosyasının içine resim ekleyip, bunun media player tarzı uygulamalarda görünmesini istemekle, eklenen resmin oynatılması arasındaki fark nedir?Ben kimseye mp3 te resim oynatmak istediğimi sölemedim.
Arada ki bağı koparmak diye bir şey yok, zaten arada bağ falanda yok, sadece referanslama var. dektop.ini dosyasını ve resimleri sildiğiniz anda veya mp3 dosyasını tek başına, başka bir yere aldığınız anda, sizin deyişinizle aradaki bağı koparmış oluyorsunuz zaten, tagları değiştirip değiştirmemniz, birşeyi etkilemiyor.EĞer ki PHP`ile upload ede biliyorsak basit bir resmi, ve eğer ki, MP3`ün taglarını değiştiğimiz zaman yani MP3`e yeni tag atadığımız zaman MP3`le onun yanındaki resmi arasındaki bağı kopara biliyorsak. Bir resm upload edip klasöre , seçtiğimiz MP3`e de yeni bir tag atayarak bu resimle o MP3 arasında bağlantı kurup.
Upload ettiğimiz resmi o MP3`le bağlantılı hale getirebiliriz düşüncesindeyim.
Resim kendi kendine çalışmıyor, onu Media Player kendi çalışma biçimine göre, adlandırıyor ve gerektiğinde, ilgili dizindeki dektop.ini dosyasından referans alarak çağrıyor. Veritabanı kullanımı ve ordan referans alma hakkında, azıcıkda olsa bilginiz varsa, resmin nasıl referans alındığını anlayabilirsiniz.Neden anlamak istemiyorsunuz bilmiyorum.
o resmin php ile değilde dizinde bulunan bir resim ile olduğunu söylemişler. - yazmışsın. Sence bu mümkünmü? Bir resim otomatik kendini MP3`e ataya bilirmi? Acaba bir JPG` kendiliğinden çalışan program falanmıdır?
Sizde lütfen yanlış anlamayın, Zend'e "böyle php olmaz olsun, mp3'e bir resim bile eklenmiyor" diyerek, mail atın. Sizin için, içine resimde eklenebilen, yeni bir mp3 formatı çıkarsınlar.Çok rica ediyorum sakın yanlış anlaşılmasın.
Her kese teşekkür ediyorum ilgilendiği için ama hala bu sorunu çözememekteyim. Lütfen PHP`den iyi anlayan biri yardım etsin.
Bu söylediğini hiç bir program veya tag editörü yapmıyor, media player örneğinde olduğu gibi, resimleri farklı bir yere yükleyip, ordan referans olarak kullanıyorlar.
Mp3 dosyasının içine resim ekleyip, bunun media player tarzı uygulamalarda görünmesini istemekle, eklenen resmin oynatılması arasındaki fark nedir?
Arada ki bağı koparmak diye bir şey yok, zaten arada bağ falanda yok, sadece referanslama var. dektop.ini dosyasını ve resimleri sildiğiniz anda veya mp3 dosyasını tek başına, başka bir yere aldığınız anda, sizin deyişinizle aradaki bağı koparmış oluyorsunuz zaten, tagları değiştirip değiştirmemniz, birşeyi etkilemiyor.
Eğer Media Player'ın oluşturduğu resimleri ve dektop.ini dosyasını, mp3 dosyasıyla birlikte zipleyerek saklarsanız, daha sonra yine Media Player ile açtığınızda, resimleri referans olarak kullanır ve görüntüler. Bu durumda, mp3'leri sitenizden direk vermek yerine, dektop.ini ve resimlerle birlikte zip/rar dosyası içinde sunarsanız, kullanıcı dosyayı indirip açtığında, resimleride görüntülemiş olur.
Yukarıdaki o tagların görevi standart alanların doldurulmasını sağlamak. O metod ile resim eklemenin mümkün olmadığını söylüyoruz. Daha ne demeliyiz ki? Not defterinde resim görüntülemek gibi birşey senin istediğin.
Mümkün Değil! <= Türkçe
Not Possible! <= İngilizce
Nicht Möglich! <= Almanca
Pas Possible! <= Fransızca
不可 <= Japonca
Non è possibile <= İtalyanca
Não é possível <= Portekizce
4.14. Attached picture
This frame contains a picture directly related to the audio file.
Image format is the MIME type and subtype [MIME] for the image. In
the event that the MIME media type name is omitted, "image/" will be
implied. The "image/png" [PNG] or "image/jpeg" [JFIF] picture format
should be used when interoperability is wanted. Description is a
short description of the picture, represented as a terminated
text string. There may be several pictures attached to one file, each
in their individual "APIC" frame, but only one with the same content
descriptor. There may only be one picture with the picture type
declared as picture type $01 and $02 respectively. There is the
possibility to put only a link to the image file by using the 'MIME
type' "-->" and having a complete URL instead of picture data. The us... $14 Publisher/Studio logotype [/QUOTE]
Tamam bende nasıl yapacağını anlattım zaten. Tekrar söylüyorum, Media Player'ın oluşturduğu, resimleri ve dektop.ini dosyasını, mp3 ile birlikte, sıkıştırıp bir arada siteye yükle, mp3'ü indirenlerde, resimlerle birlikte yüklemiş olur, sorunda kalmaz.Bende bunu yapsın dedim zaten abim.
Teknik açıdan, bir media dosyasında, hareketli veya hareketsiz bir resmin gösterilmesi arasında fark yoktur. Resmi, artık mp3'e gömemeyeceğinizi anladığınızı var saydığım için, bunu geçiyorum.farkı benim istediğim albüm resmi.
ama sizin anladığınız mpeg gibi , gif gibi resm oynatması mediaplayer`in.
Kaç gündür söylüyoruzda anlatıyoruzda, son mesajımda da gayet açık bir şekilde, konuyu anlattım da, konunun ne php ile ne mp3 ile en ufak bir ilgisi bulunmuyor. Konu tamamen, Media Player'la ilgili, hala kalkıp php diyorsun, kod diyorsun.Sen benim verdiğim kodu denedinmi?
Etkilemeseydi zaten bunu yazmazdım abi.
Media Player'a özel olan bir resim referans sistemini, bırak PHP'yi, herhangi başka bir media oynatıcısında dahi, görüntüleyemezsin. Boşa kürek çekiyorsun. En fazla cover.jpg dosyasını mp3'ün yanına eklersin, o ismi standart kullanan playerlar referans alır.Ben Linux kullanıyorum , PHP`yle yapmak istiyorum şu olayı media playerle yapmak istemiyorum ki.
Çünkü Media Player mp3'e resmi, aynı dizinde bulunan desktop.ini dosyasından referans alarak atıyor, o dosyayı açıp bakacak olursanız, bu atamayı hangi şartlara göre yaptığını da görebilirsiniz.Benim takıldığım bir yer var bana söliye bilirmisiniz neden yukarıda verdiğim kodu kullandığım zaman media player tag` değiştikden sonra kapak resmini göstermiyordu?
[.ShellClassInfo]
FolderType=MusicAlbum
MusicBuyUrl=http://redir.metaservices.microsoft.com/redir/buynow/?providerName=AMG&albumID=29235827-A323-4847-ACD4-11ED1845624D&a_id=R%20%20%20782614&album=The%20Art%20of%20Breaking&artistID=9D62FE5F-CB5B-4E33-A8D0-B00FA50F6E82&p_id=P%20%20%20474329&artist=Thousand%20Foot%20Krutch&locale=41f&geoid=eb&version=12.0.7600.16415&userlocale=41f
desktop.ini'den gelen anahtarları, parçalayacak olursak, görebileceğiniz gibi, referans dosya adına göre yapılmıyor.
Mp3 üzerinde görünen resme atanmış olan isim
albumID=29235827-A323-4847-ACD4-11ED1845624D
Albüm İsmi
album=The%20Art%20of%20Breaking
Sanatçı Adı
artist=Thousand%20Foot%20Krutch
gibi pek çok ayrıntıda göz önünde bulunduruluyor, siz kalkıp php de, bu bilgileri değiştirdiğinizde, artık mp3'ünüz, desktop.ini de aranan özelliklerini kaybetmiş oluyor ve dosya adı da önemsiz olduğundan, önceden kaydedilmiş resimler gösterilmiyor.