كنت اشتغلت على فيتشر voice note للشات.
البوست ده فيه نتايج المذاكرة والتجربة (so far) فيما يخص الـaudio formats للـvoice notes.
ملحوظة: كلام كتير هيبقى غير دقيق. أنا بتكلم من برا بمستوى سطحي — كحد مش خبير في الـaudio formats يعني.
(1) General comparison of audio formats
بعيداً عن فيتشر الـvoice notes، ده بشكل عام مقارنة بين بعض أشهر الـaudio formats:
M4A: ده تقريباً أحسن حاجة، كواليتي كويسة && compression كويس && widely-supported.1
MP3: دي أكتر حاجة widely supported وهي compressed بس ماعرفش الجودة مناسبة للفويس نوت ولا لأ.
WAV: ده widely supported ومش compressed (وأكيد جودة كويسة بالتالي). بالتجربة للأسف حجمه كبير جداً (10 أضعاف التانيين؟)، وكان بياخد وقت غير مقبول في الـupload.
OGG: ده الفورمات اللي واتساب بيستعمله. ده تقريباً widely supported وcompressed بس controversial لإن الألجوريزم بتاعه patented وحوارات وكده.2
WebM: هابقى أتكلم عنه في نقطة لوحده.
(2) Web support
من وجهة نظر الويب:
Playing: يقدر يشغل كل اللي فوق natively من غير احتياج لـlibrary.
Recording: مايقدرش يطلع غير WebM files.
(3) Mobile support
أنا مش موبايل، بس احنا كنا شغالين Flutter وده اللي فهمته:
Playing: للأسف مش بيدعم WebM، اللي هو الفورمات الوحيد اللي الويب يعرف يطلعه.3
Recording: الـFlutter engineer كان بيقدر يطلع M4A file، سواء ده كان باستخدام conversion library أو natively (مش متذكر).
(4) Another note on WebM
غير إن الموبايل مابيـsupportـش WebM، كان فيه مشكلة تانية في الـWebM: كان الـuser مايقدرش يـseek فيه بسهولة.
يعني بالتجربة لما كنت بشغل WebM file ماكنتش أقدر أجيب نصه مثلاً. ولما كان شغال، الـprogress bar ماكانش بيبقى accurate.
(5) Summary
فالملخص:
في الـrecording side بتاعة الموبايل مفيش مشكلة: هيطلع M4A، والويب هيشغله عادي.
في الـrecording side في الويب فيه مشكلة: الويب مابيطلعش غير WebM والموبايل مابيشغلش WebM.
وبناءً عليه، لازم يبقى فيه conversion.
(6) Result
في الآخر، خلصنا إلى الآتي:
الموبايل هيـrecord في M4A (سواء ده كان natively أو بـconversion library). المهم إنه في الآخر هيبعت للباك إند M4A، والباك إند هيخزنه ويـserveـه كـM4A للويب (والموبايل) — والويب هيشغله عادي natively.
الويب هيـrecord في WebM، بعد كده يبعته للباك إند كـWebM، والباك إند يحوله لـM4A ويخزنه ويـserveـه كـM4A للموبايل (والويب).
ممكن في بوست (أو بوستات) تانية، أبقى أتكلم عن ليه تعمل الـconversion في الباك إند مش الفرونت إند وإزاي، إن شاء الله.
شكراً لقرايتكم.
للدقة العلمية: يبدو إن M4A هو container format ممكن يشيل جواه حاجات زي MP3 - وإن كان ده نادراً -. أغلب الوقت أو الـdefault إنه بيبقى جواه AAC، فكلامي هنا عن الـdefault بتاعه يعني.
زي M4A، ده container format ممكن يكون جواه Opus أو Vorbis. تقريباً نفس الكلام ينطبق عالاتنين، أو محصلة بعضها يعني.
احنا كنا مستعملين library مش بتدعم WebM، بس أظن حتى لو مش مستعملينها، تقريباً الـrestriction ده جاي من الـiOS نفسه (مش متأكد خالص).
شكراً على مشاركتك لنتيجة بحثك وتجربتك في الموضوع دا. أنا متخيل حاجة زي كدة اللي اتلخصت في مقالة تتقري في خمس دقايق أخدت وقت أد إيه في البحث والتدوير والتجارب. شكراً كمان مرة :)