صدا/برچسب صدا audio/tag
خواندن و نوشتن برچسبهای یک ترانه: عنوان، هنرمند، آلبوم و تصویر جلد.
واردسازی audio.tag
پرونده صدا بیش از صدا با خود دارد. این بسته آن بخشی را میخواند و مینویسد که میگوید موسیقی چیست: عنوان، چه کسی نواخت، از کدام آلبوم آمد، و تصویری که روی جلد است.
سه قالب برچسب تقریبا هر چه در کار است را میپوشانند. آیدی۳ یک همان صد و بیست و هشت بایت پایان یک امپیتری است. آیدی۳ دو در آغاز مینشیند و همان است که پروندههای امروزی بهراستی به کار میبرند، در هر یک از چهار رمزگذاری متن. یادداشت وربیس همان است که فلاک و اوگ برچسبشان را در آن نگه میدارند. خواندن برچسبها درمیآورد که پرونده کدام را دارد و میخواندش، پس بیشتر فراخوانان هیچگاه نام قالبی نمیبرند.
دانستنیها
- هر رشته در یک دسته
برچسبهااز آن است. همه دسته را باآزادسازی برچسبهارها کنید؛ میدانی که گذاشته نشده خالی است و هزینهای ندارد. - متن هر چه پرونده به کار برده باشد به شکل یونیکد هشت بیتی باز میگردد، پس عنوانهای فارسی و عربی رفت و برگشت از آیدی۳ دو را زنده میمانند.
- نوشتن آیدی۳ نگارش ۲.۴ با یونیکد هشت بیتی میسازد، که هر پخشکننده امروزی میخواندش.
- تصویر جلد به شکل بافر بایت و هنوز در قالب خودش باز میگردد، پس آن را راست به تصویر بدهید تا کدگشایی شود.
آغاز صداوپایان صدامیگویند صدا بهراستی کجاست، که کدگشا برای پریدن از برچسبها همان را میخواهد.
گونهها
برچسبها Tags
ساختار برچسبها| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| عنوان | title | رشته = "" | عنوان قطعه. |
| هنرمند | artist | رشته = "" | چه کسی اجرا کرد. |
| آلبوم | album | رشته = "" | به کدام آلبوم وابسته است. |
| هنرمند آلبوم | albumartist | رشته = "" | آلبوم به نام چه کسی است، که مجموعهها به آن نیاز دارند. |
| آهنگساز | composer | رشته = "" | چه کسی نوشت. |
| سبک | genre | رشته = "" | چه گونه موسیقی است. |
| یادداشت | comment | رشته = "" | یادداشتی آزاد. |
| ترانه | lyrics | رشته = "" | واژهها. |
| گونه هنر | art_mime | رشته = "" | گونه رسانه تصویر جلد، مثل image/jpeg. |
| سال | year | صحیح = 0 | سال، یا صفر وقتی نیست. |
| شماره قطعه | track | صحیح = 0 | این چندمین قطعه است. |
| شمار قطعهها | tracks | صحیح = 0 | آلبوم چند قطعه دارد. |
| شماره دیسک | disc | صحیح = 0 | این چندمین دیسک است. |
| ضربان | bpm | صحیح = 0 | ضربه در دقیقه، آنگونه که برچسب میگوید. |
| هنر | art | compress.ByteBuf | خود تصویر جلد، هنوز در هر قالبی که نگه داشته شده بود. آن را به تصویر.کدگشایی بدهید. |
واردسازی صدا.برچسب صدا
واردسازی فشرده سازی
واردسازی رشته
تابع ریشه:
ناپایا برچسبم := برچسب صدا.برچسبهای جدید()
سرچاپ برچسب صدا.برچسب دارد(برچسبم)
برچسبم.عنوان = رشته.رونوشت("Shiraz Nights")
برچسبم.هنرمند = رشته.رونوشت("Darya")
برچسبم.آلبوم = رشته.رونوشت("Zagros")
برچسبم.سبک = رشته.رونوشت("Folk")
برچسبم.سال = 2026
برچسبم.شماره قطعه = 3
برچسبم.شمار قطعهها = 12
سرچاپ برچسب صدا.برچسب دارد(برچسبم)
نگارش۱ := برچسب صدا.نوشتن آیدی۳ یک(برچسبم)
سرچاپ فشرده سازی.طول بافر(نگارش۱)
ناپایا پرونده۱ := فشرده سازی.بافر بایت جدید()
ناپایا لایه := 0
تا لایه کوچکتر 32:
فشرده سازی.افزودن بایت(پرونده۱، 0)
لایه += 1
پایان
فشرده سازی.افزودن بافر(پرونده۱، نگارش۱)
سرچاپ برچسب صدا.آیدی۳ یک دارد(پرونده۱.data، پرونده۱.len)، برچسب صدا.پایان صدا(پرونده۱.data، پرونده۱.len)
ناپایا گرفته۱ := برچسب صدا.برچسبهای جدید()
سرچاپ برچسب صدا.خواندن آیدی۳ یک(پرونده۱.data، پرونده۱.len، گرفته۱)
سرچاپ گرفته۱.عنوان، گرفته۱.هنرمند، گرفته۱.آلبوم، گرفته۱.سال، گرفته۱.شماره قطعه
نگارش۲ := برچسب صدا.نوشتن آیدی۳ دو(برچسبم)
سرچاپ برچسب صدا.آیدی۳ دو دارد(نگارش۲.data، نگارش۲.len)، برچسب صدا.نگارش آیدی۳ دو(نگارش۲.data، نگارش۲.len)
سرچاپ برچسب صدا.اندازه آیدی۳ دو(نگارش۲.data، نگارش۲.len) برابر فشرده سازی.طول بافر(نگارش۲)
ناپایا گرفته۲ := برچسب صدا.برچسبهای جدید()
سرچاپ برچسب صدا.خواندن آیدی۳ دو(نگارش۲.data، نگارش۲.len، گرفته۲)
سرچاپ گرفته۲.عنوان، گرفته۲.هنرمند، گرفته۲.آلبوم، گرفته۲.سبک
سرچاپ گرفته۲.سال، گرفته۲.شماره قطعه، گرفته۲.شمار قطعهها
ناپایا فارسی := برچسب صدا.برچسبهای جدید()
فارسی.عنوان = رشته.رونوشت("شبهای شیراز")
فارسی۲ := برچسب صدا.نوشتن آیدی۳ دو(فارسی)
ناپایا گرفته۳ := برچسب صدا.برچسبهای جدید()
برچسب صدا.خواندن آیدی۳ دو(فارسی۲.data، فارسی۲.len، گرفته۳)
سرچاپ گرفته۳.عنوان
ناپایا کامل := فشرده سازی.بافر بایت جدید()
فشرده سازی.افزودن بافر(کامل، نگارش۲)
ناپایا بدنه := 0
تا بدنه کوچکتر 40:
فشرده سازی.افزودن بایت(کامل، 65)
بدنه += 1
پایان
فشرده سازی.افزودن بافر(کامل، نگارش۱)
سرچاپ برچسب صدا.آغاز صدا(کامل.data، کامل.len) برابر فشرده سازی.طول بافر(نگارش۲)
لخت := برچسب صدا.برداشتن برچسبها(کامل.data، کامل.len)
سرچاپ فشرده سازی.طول بافر(لخت)، فشرده سازی.دریافت بایت(لخت، 0)
سرچاپ برچسب صدا.نام سبک(17)، برچسب صدا.نام سبک(8)، برچسب صدا.نام سبک(200) برابر ""
ناپایا درستی := نادرست
ناپایا خودکار := برچسب صدا.خواندن برچسبها(نگارش۲.data، نگارش۲.len، درستی)
سرچاپ درستی، خودکار.عنوان
برچسب صدا.آزادسازی برچسبها(برچسبم)
برچسب صدا.آزادسازی برچسبها(گرفته۱)
برچسب صدا.آزادسازی برچسبها(گرفته۲)
برچسب صدا.آزادسازی برچسبها(فارسی)
برچسب صدا.آزادسازی برچسبها(گرفته۳)
برچسب صدا.آزادسازی برچسبها(خودکار)
فشرده سازی.آزادسازی بافر(نگارش۱)
فشرده سازی.آزادسازی بافر(نگارش۲)
فشرده سازی.آزادسازی بافر(فارسی۲)
فشرده سازی.آزادسازی بافر(پرونده۱)
فشرده سازی.آزادسازی بافر(کامل)
فشرده سازی.آزادسازی بافر(لخت)
پایانبلوک Block
ساختار بلوک| نام | انگلیسی | گونه | توضیح |
|---|---|---|---|
| گونه | kind | صحیح = 0 | کدام شماره بلوک است. |
| جابجایی | offset | صحیح = 0 | بدنه از کجا آغاز میشود. |
| اندازه | size | صحیح = 0 | چند بایت دارد. |
| آخرین | last | منطقی = نادرست | در بلوک پایانی درست است. |
واردسازی صدا.برچسب صدا
واردسازی فشرده سازی
واردسازی رشته
تابع ریشه:
ناپایا برچسبم := برچسب صدا.برچسبهای جدید()
برچسبم.عنوان = رشته.رونوشت("Zagros")
برچسبم.هنرمند = رشته.رونوشت("Darya")
برچسبم.سال = 2026
برچسبم.شماره قطعه = 2
یادداشتی := برچسب صدا.نوشتن یادداشت وربیس(برچسبم)
سرچاپ فشرده سازی.طول بافر(یادداشتی) بزرگتر 8
ناپایا گرفته := برچسب صدا.برچسبهای جدید()
سرچاپ برچسب صدا.خواندن یادداشت وربیس(یادداشتی.data، 0، یادداشتی.len، گرفته)
سرچاپ گرفته.عنوان، گرفته.هنرمند، گرفته.سال، گرفته.شماره قطعه
ناپایا فلاکی := فشرده سازی.بافر بایت جدید()
فشرده سازی.افزودن بایت(فلاکی، 102)
فشرده سازی.افزودن بایت(فلاکی، 76)
فشرده سازی.افزودن بایت(فلاکی، 97)
فشرده سازی.افزودن بایت(فلاکی، 67)
فشرده سازی.افزودن بایت(فلاکی، 128 | برچسب صدا.بلوک یادداشت وربیس)
اندازه۲ := فشرده سازی.طول بافر(یادداشتی)
فشرده سازی.افزودن بایت(فلاکی، (اندازه۲ >> 16) & 255)
فشرده سازی.افزودن بایت(فلاکی، (اندازه۲ >> 8) & 255)
فشرده سازی.افزودن بایت(فلاکی، اندازه۲ & 255)
فشرده سازی.افزودن بافر(فلاکی، یادداشتی)
سرچاپ برچسب صدا.فلاک برچسبدار است(فلاکی.data، فلاکی.len)
بلوکها := برچسب صدا.بلوکهای فلاک(فلاکی.data، فلاکی.len)
سرچاپ بلوکها.طول()، بلوکها.بگیر(0).گونه برابر برچسب صدا.بلوک یادداشت وربیس، بلوکها.بگیر(0).آخرین
سرچاپ بلوکها.بگیر(0).اندازه برابر اندازه۲
ناپایا گرفته۲ := برچسب صدا.برچسبهای جدید()
سرچاپ برچسب صدا.خواندن برچسب فلاک(فلاکی.data، فلاکی.len، گرفته۲)
سرچاپ گرفته۲.عنوان، گرفته۲.هنرمند
ناپایا درستی := نادرست
ناپایا خودکار := برچسب صدا.خواندن برچسبها(فلاکی.data، فلاکی.len، درستی)
سرچاپ درستی، خودکار.عنوان
سرچاپ برچسب صدا.رمز یونی۸، برچسب صدا.رمز لاتین، برچسب صدا.رمز یونی۱۶، برچسب صدا.رمز یونی۱۶ بزرگ
بلوکها.آزادکن()
برچسب صدا.آزادسازی برچسبها(برچسبم)
برچسب صدا.آزادسازی برچسبها(گرفته)
برچسب صدا.آزادسازی برچسبها(گرفته۲)
برچسب صدا.آزادسازی برچسبها(خودکار)
فشرده سازی.آزادسازی بافر(یادداشتی)
فشرده سازی.آزادسازی بافر(فلاکی)
پایانپایاها و متغیرها
رمزگذاریهای متن Enc…
| نام | انگلیسی | مقدار |
|---|---|---|
| رمز لاتین | EncLatin1 | 0 |
| رمز یونی۱۶ | EncUtf16 | 1 |
| رمز یونی۱۶ بزرگ | EncUtf16BE | 2 |
| رمز یونی۸ | EncUtf8 | 3 |
نمونهی این مورد همراه با موارد بالاتر آمده است: tag-Id3.salam
شمارههای بلوک Block…
| نام | انگلیسی | مقدار |
|---|---|---|
| بلوک آگاهی جریان | BlockStreamInfo | 0 |
| بلوک لایی | BlockPadding | 1 |
| بلوک جدول جستن | BlockSeekTable | 3 |
| بلوک یادداشت وربیس | BlockVorbisComment | 4 |
| بلوک تصویر | BlockPicture | 6 |
نمونهی این مورد همراه با موارد بالاتر آمده است: tag-Flac.salam
تابعها
نام سبک GenreName
تابع نام سبک(id: صحیح): رشتهنمونهی این مورد همراه با موارد بالاتر آمده است: tag-Id3.salam
برچسبهای جدید NewTags
تابع برچسبهای جدید(): برچسبهانمونهی این مورد همراه با موارد بالاتر آمده است: tag-Id3.salam
آزادسازی برچسبها FreeTags
تابع آزادسازی برچسبها(t &: برچسبها)نمونهی این مورد همراه با موارد بالاتر آمده است: tag-Id3.salam
برچسب دارد HasTags
تابع برچسب دارد(t: برچسبها): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: tag-Id3.salam
آیدی۳ یک دارد HasID3v1
تابع آیدی۳ یک دارد(p: تهی*، n: صحیح): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: tag-Id3.salam
خواندن آیدی۳ یک ReadID3v1
تابع خواندن آیدی۳ یک(p: تهی*، n: صحیح، out &: برچسبها): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: tag-Id3.salam
نوشتن آیدی۳ یک WriteID3v1
تابع نوشتن آیدی۳ یک(t: برچسبها): compress.ByteBufنمونهی این مورد همراه با موارد بالاتر آمده است: tag-Id3.salam
خواندن برچسبها ReadTags
تابع خواندن برچسبها(p: تهی*، n: صحیح، ok &: منطقی): برچسبهانمونهی این مورد همراه با موارد بالاتر آمده است: tag-Id3.salam
خواندن برچسبهای پرونده ReadTagsFile
تابع خواندن برچسبهای پرونده(path: رشته، ok &: منطقی): برچسبهانمونهی این مورد همراه با موارد بالاتر آمده است: tag-Id3.salam
برداشتن برچسبها StripTags
تابع برداشتن برچسبها(p: تهی*، n: صحیح): compress.ByteBufنمونهی این مورد همراه با موارد بالاتر آمده است: tag-Id3.salam
آغاز صدا AudioStart
تابع آغاز صدا(p: تهی*، n: صحیح): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: tag-Id3.salam
پایان صدا AudioEnd
تابع پایان صدا(p: تهی*، n: صحیح): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: tag-Id3.salam
آیدی۳ دو دارد HasID3v2
تابع آیدی۳ دو دارد(p: تهی*، n: صحیح): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: tag-Id3.salam
نگارش آیدی۳ دو ID3v2Version
تابع نگارش آیدی۳ دو(p: تهی*، n: صحیح): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: tag-Id3.salam
اندازه آیدی۳ دو ID3v2Size
تابع اندازه آیدی۳ دو(p: تهی*، n: صحیح): صحیحنمونهی این مورد همراه با موارد بالاتر آمده است: tag-Id3.salam
خواندن آیدی۳ دو ReadID3v2
تابع خواندن آیدی۳ دو(p: تهی*، n: صحیح، out &: برچسبها): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: tag-Id3.salam
نوشتن آیدی۳ دو WriteID3v2
تابع نوشتن آیدی۳ دو(t: برچسبها): compress.ByteBufنمونهی این مورد همراه با موارد بالاتر آمده است: tag-Id3.salam
فلاک برچسبدار است IsFlacTagged
تابع فلاک برچسبدار است(p: تهی*، n: صحیح): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: tag-Flac.salam
بلوکهای فلاک FlacBlocks
تابع بلوکهای فلاک(p: تهی*، n: صحیح): وکتور<بلوک>نمونهی این مورد همراه با موارد بالاتر آمده است: tag-Flac.salam
خواندن یادداشت وربیس ReadVorbisComment
تابع خواندن یادداشت وربیس(p: تهی*، off: صحیح، len: صحیح، out &: برچسبها): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: tag-Flac.salam
خواندن برچسب فلاک ReadFlacTags
تابع خواندن برچسب فلاک(p: تهی*، n: صحیح، out &: برچسبها): منطقینمونهی این مورد همراه با موارد بالاتر آمده است: tag-Flac.salam
نوشتن یادداشت وربیس WriteVorbisComment
تابع نوشتن یادداشت وربیس(t: برچسبها): compress.ByteBufنمونهی این مورد همراه با موارد بالاتر آمده است: tag-Flac.salam