۳۰ ثانیهٔ اول یک WAV را حذف کنید
زمان شروع را روی ۳۰ ثانیه بگذارید و زمان پایان را دیرتر از طول ضبط رها کنید؛ پایان به آخرین فریم نمونهٔ کامل محدود میشود. خروجی از نزدیکترین فریم نمونه به ۰۰:۳۰ آغاز میشود و همهٔ فریمهای باقیمانده را بدون بازرمزگذاری کپی میکند.
WAV از نوع PCM یا IEEE-float، از جمله RF64 و WAVE_FORMAT_EXTENSIBLE. فایل در همین برگه میماند.
مقدار شروع ۳۰، ضبط را از ۰۰:۳۰ به بعد نگه میدارد و بخش آغازین را دور میریزد.
زمان پایان میتواند بهطور امن دیرتر از طول فایل باشد، زیرا به آخرین فریم کامل محدود میشود.
اگر ضبط ۳۰ ثانیه یا کوتاهتر باشد، هیچ بخش قابلپخشی باقی نمیماند و ابزار به جای نوشتن یک فایل خالی، همین را توضیح میدهد.
چگونگی کار
مراحل انجام کار
- بررسی کنید که دوازده بایت اول، یک فایل WAVE از نوع RIFF یا RF64 لیتلاندین را معرفی کند. فایل RIFX بیگاندین رد میشود، زیرا کپی کردن نمونههای آن در یک کانتینر لیتلاندین معنای آنها را تغییر میدهد.
- فهرست چانکهای RIFF را، با رعایت بایت پرکننده پس از بار دادهٔ با طول فرد، پیمایش کنید تا هر دو چانک fmt و data پیدا شوند. برای RF64، طول ۶۴ بیتی صدا را از چانک ds64 آن بخوانید.
- تعداد کانالها، نرخ نمونهبرداری، همترازی بلوک و عمق بیت را از fmt بخوانید. اگر فرمت WAVE_FORMAT_EXTENSIBLE است، GUID زیرفرمت آن را باز کنید تا PCM از IEEE float تشخیص داده شود.
- بررسی کنید که فرمت، PCM یا IEEE float با عرض ثابت باشد و همترازی بلوک اعلامشده با حاصلضرب تعداد کانالها در بایتهای هر نمونه برابر باشد. فایل فشرده یا ناسازگار در درون خود، به جای برش در یک مرز حدسی، رد میشود.
- طول data را بر همترازی بلوک تقسیم کنید تا تعداد دقیق فریمهای نمونهٔ کامل و از روی آن، مدت ضبط به دست آید.
- هر زمان درخواستی را در نرخ نمونهبرداری ضرب کنید و به نزدیکترین فریم کامل گرد کنید. پایانی فراتر از ضبط را به آخرین فریم آن محدود کنید؛ شروعی در پایان یا فراتر از آن را رد کنید.
- بازهٔ فریم انتخابشده را در قطعههای ۴ مگابایتی در یک WAV تازه کپی کنید. بلوک فرمت حفظ میشود، برای صدای float یک شمارش fact جدید نوشته میشود و اندازههای RIFF و data دوباره محاسبه میشوند.
- چانکهای فراداده را از نتیجه کنار بگذارید، زیرا موقعیت نشانهها، نقاط حلقه و ارجاعهای زمانی آنها ضبطِ برشنخورده را توصیف میکنند. WAV جدیدِ بدون فراداده را برای دانلود ارائه دهید.
فرضها
- فایلهای WAV از نوع PCM و IEEE-float، از جمله WAVE_FORMAT_EXTENSIBLE و RF64، پشتیبانی میشوند. کدگذاریهای فشردهٔ WAV و RIFX بیگاندین پشتیبانی نمیشوند، زیرا برش امن هرکدام به رمزگشایی یا تبدیل ترتیب بایت نیاز دارد.
- زمان درخواستی میتواند بین دو فریم نمونه بیفتد. به نزدیکترین فریم کامل گرد میشود، بنابراین بزرگترین جابهجایی زمانی نیم فریم است — حدود ۰٫۰۱۱ میلیثانیه در ۴۴٫۱ کیلوهرتز.
- زمان پایانِ فراتر از فایل به آخرین فریم کامل محدود میشود. شروعی در آن فریم یا فراتر از آن هیچ صدای قابلپخشی باقی نمیگذارد و به جای تولید یک فایل خالی، رد میشود.
- نرخ نمونهبرداری، تعداد کانالها، عمق بیت، بلوک فرمت و بایتهای نمونهٔ نگهداشتهشده کپی میشوند. هیچ تغییر بهره (گین)، محو تدریجی، نمونهبرداری مجدد، دیدر یا گذر از کدک وجود ندارد.
- فراداده عمداً کپی نمیشود. ارجاعهای زمانی Broadcast Wave، نقاط نشانه، ناحیهها، حلقهها، برچسبها، تصویر جلد و توضیحات در غیر این صورت به خط زمانی قدیمی اشاره میکردند یا جزئیاتی را فاش میکردند که بازدیدکننده قصد نگه داشتن آنها را نداشته است.
- چانک data باید تعداد صحیحی فریم نمونه داشته باشد و درون فایل جا بگیرد. فریم آخرِ ناقص یا طول چانکی که از انتهای فایل میگذرد، ناقصبودن (truncation) فایل تلقی میشود، نه اینکه بیسروصدا ترمیم شود.
- کل ورودی و خروجی برشخورده همزمان در حافظه قرار دارند. بنابراین ورودی به ۲۵۶ مگابایت محدود است و نتیجهٔ RF64 که در این حد باشد بهصورت یک RIFF WAV معمولی نوشته میشود.
پرسشهای رایج
وقتی WAV کوتاهتر از ۳۰ ثانیه باشد چه اتفاقی میافتد؟
پس از نقطهٔ شروع درخواستی هیچ صدایی وجود ندارد، بنابراین ابزار از تولید یک WAV خالی خودداری میکند و زمان شروع زودتری را میخواهد.
آیا باید طول WAV را پیش از حذف ۳۰ ثانیهٔ اول آن بدانم؟
خیر. زمان پایان پیشفرض عمداً از بیشتر ضبطها طولانیتر است و پس از خواندن سرآیند WAV به آخرین فریم واقعی محدود میشود.
منابع
روش کامل، مثال محاسبهشده و همهٔ فرضهای این نتیجه در این صفحه آمده است: برشگر صدای WAV.