داشتنِ پسوندِWAVو پاسخِ۲۰۰بهتنهایی نشان نمیدهد مرورگر فایل را بهعنوان رسانه میپذیرد. برای پیداکردنِ علتِ پخشنشدن، پاسخِ HTTP،نوعِ محتوا و خطایِ خودِ عنصرِ رسانه را جدا ببینید. این راهنما چهار حالتِ واقعیِ محلی را با بایتهای معلوم مقایسه میکند؛ شنیدنِ کیفیتِ فایل موضوعِ این آزمون نیست.
دو مشاهدهٔ جدا برای هر نشانی
تابعِهمراه ابتدا باfetchپاسخ را میگیرد و status،Content-TypeوContent-Lengthرا ثبت میکند. سپس همان نشانی را در یکaudioمیگذارد و منتظرloadedmetadata،errorیاtimeoutمیماند. این یکGETبرای ثبتِپاسخ و یک بارگذاریِ رسانه است؛ ادعا نمیکنیم با یکHEADهمهٔ رفتارِ پخش روشن شده است.
در میزبانِ آزمایشی،tone.wavبایتهایWAVمعتبر باaudio/wavاست؛tone-genericهمان بایتها را باapplication/octet-streamمیدهد. fake.wavبهجای صوت،۲۸بایتHTMLبا هدرِaudio/wavدارد؛missing.wavهم۴۰۴است. هیچ فایلِ مشتری یا نشستِ خصوصی استفاده نشده است.
آنچه Edgeواقعاً نشان داد
| مسیر | وضعیتِHTTP/نوع | نتیجهٔ عنصرِ رسانه |
|---|---|---|
| tone.wav | ۲۰۰،audio/wav | loadedmetadata؛مدت۲ثانیه |
| tone-generic | ۲۰۰،application/octet-stream | loadedmetadata؛مدت۲ثانیه |
| fake.wav | ۲۰۰،audio/wav | error؛MediaError.code=۴ |
| missing.wav | ۴۰۴،text/plain | error؛MediaError.code=۴ |
در این مرورگر، هدرِ عمومی جلوی خواندنِmetadataیWAVمعتبر را نگرفت؛ از آن توصیهٔ عمومیِ ارسالِ صوت بانوعِمبهم نمیسازیم. در مقابل، نوشتنِaudio/wavرویHTMLآن را صوت نکرد. هر دو مورد اهمیتِ بررسیِ بایت و رفتارِ واقعی را نشان میدهند، نه اینکه MIMEبیاهمیت یا تنها علتِ خطاست.
کد۴را به یک علتِ قطعی تبدیل نکنیم
این کد در مرجعِMediaErrorنوعی نامناسببودنِ منبع را بیان میکند؛ در آزمایشِ ما هم پاسخِ۲۰۰با بدنهٔغلط و هم۴۰۴همین عدد را داشتند. پس ازعدد۴بهتنهایی نمیتوانیم نتیجه بگیریم مشکل حتماً کدک،CORSیاپسوند است. وضعیتِپاسخ،بدنه،نوع و رخداد را کنار هم نگه دارید.
برای رسانهٔ واقعی، امکانِ دریافتِRangeو بازهٔseekنیز میتواند روی پیمایش اثر بگذارد. سرورِ آموزشیِهمراه برایWAVدرخواستِبازهایِساده را پاسخ میدهد؛ این قابلیت را به همهٔ میزبانها تعمیم نمیدهیم. همچنین loadedmetadataدر این جدول،فقط آمادهشدنِ اطلاعاتی مانندِdurationاست؛ پخشِتمامِفایل و کیفیتِ شنیداری آزموده نشده است.
اجرای محلی با فایلهای همراه
فایل Python را با Python 3.9یا جدیدتر و کتابخانهٔ استاندارد اجرا کنید؛ دو نشانیِ HTTPروی127.0.0.1با پورتهای متفاوت چاپ میکند. فقط روی رایانهٔ خودتان گوش میدهد، فایلِ کاربر نمیخواند و آپلود ندارد. در مبدأ اول، صفحهٔ پایه را باز کنید و کدِ JavaScriptمتنیِ همراه را در ابزارِ توسعهٔ همان صفحه اجرا کنید؛ این کد خودکار روی سایت اصلی نصب نمیشود. برای پایانِ سرورها Ctrl+Cبزنید.
رسانهٔ نمونه، WAVتککانالهٔ۱۶بیتی با نرخ۱۶۰۰۰،دو ثانیه موجِ سینوسی۴۴۰هرتز و۶۴۰۴۴بایت است. گفتارِ کسی ضبط نشده است. آزمونِ گزارششده در۳نوامبر۲۰۲۶با Edge154.0.4258.37در محیطِ جدا و بیصدا انجام شد؛ شنیدنِ انسان، تشخیص گفتار، درخواستِ سرویس بیرونی یا تماس در کار نبود.
آزمونِ خودتان را تکرار کنید
تابعِمتنیِهمراه را در صفحهٔ مبدأ اول بخوانید و برای هر مسیر، await inspectTeachingMediaURL(A+'/tone.wav')را با نامِ مسیرِموردنظر اجرا کنید. نتیجهٔtimeoutرا به۲۰۰یاپخشِموفق تبدیل نکنید. اگر فایل وVTTدر مبدأهای مختلفاند، آزمونِ واقعیِCORSزیرنویس مسئلهٔ دیگری را جدا میکند.
نرخِ نمونهبرداری و اتصالِtrack به ساختارِداده و متن کمک میکنند. این صفحه عیبیابیِ عمومیِ وب است و وجودِ APIپخش،میزبانیِخصوصی یا قالبِ آمادهای در اپرا را وعده نمیدهد.
فایل تمرین و منبع
سرورِ دو مبدأِ محلی؛ صدای ریاضی و VTT را خودش میسازد · ثبتِ وضعیتHTTP،Content-Typeو نتیجهٔloadedmetadata/errorدر یک گزارش
منابع در ۳ نوامبر ۲۰۲۶ خوانده شدند؛ این تاریخ، تاریخ انتشار منبع نیست. مثالها و فایلهای این راهنما آموزشی و ساختهٔ تحریریهاند.