تقنية

sunau في بايثون 3.12: لماذا يعيد إطار واحد أربعة بايتات؟

حجم الإطار
قناتان في نموذجنا. [1] [2] [3]

نقرأ نموذج AU مؤلفًا بالذاكرة. [1] [2] [3]

الخلاصة السريعة

الإطار هنا يجمع عينتي قناتين؛ ليس بايتًا واحدًا. [1] [2] [3]

  • الخرج: 2 2 2 ثم 4 1 28 في 3.12.14. [1] [2] [3]
  • قناتان بعرض بايتين للعينة: أربعة بايتات للإطار. [1] [2] [3]
  • البيانات الثمانية تمثل إطارين في نموذجنا. [1] [2] [3]
  • بعد قراءة إطار: tell() للقارئ 1، وللمخزن 28. [1] [2] [3]
  • المكتبة مهجورة منذ 3.11 ومحذوفة منذ 3.13. [1] [2] [3]

المثال

import io,sunau
raw=b".snd"+b"".join(n.to_bytes(4,"big") for n in (24,8,3,8000,2))+bytes(8)
with io.BytesIO(raw) as f:
 with sunau.open(f,"rb") as r:
  print(r.getnchannels(),r.getsampwidth(),r.getnframes())
  print(len(r.readframes(1)),r.tell(),f.tell())

[1] [2] [3]

وحدتان للموضع

الإطار الأول يستهلك أربعة بايتات بعد ترويسة حجمها 24؛ موضع المخزن 28. يزيد موضع القارئ إطارًا واحدًا. رمز الترميز 3 يعني عينات خطية بعرض بايتين هنا. [1] [2] [3]

موضعان بوحدتين
الترويسة والقراءة. [1] [2] [3]

حدود

الأعداد الأخرى بالترويسة: حجم البيانات 8، معدل الإطارات 8000، القنوات 2. لم نشغل صوتًا؛ النتيجة ليست قاعدة لحجم البيانات بعد فك ضغط ترميزات أخرى. [1] [2] [3]

المراجع

  1. Python3.12: sunau reader
  2. CPython3.12.14: sunau.py
  3. Python: sunau removal
  4. موضوع تك: لغة بايثون — مفردات
  5. موضوع تك: تطبيقات بايثون — مفردات

أُعدّ هذا المقال بمساعدة الذكاء الاصطناعي، وخضع لمراجعة ذاتية بالأداة نفسها. لا يُنسب إلى مراجع بشري أو خبير مستقل. منهجية المحتوى.